summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/char/Makefile.in25
-rw-r--r--src/char/char.c203
-rw-r--r--src/char/int_party.c3
-rw-r--r--src/char/int_pet.c232
-rw-r--r--src/char/inter.c8
-rw-r--r--src/char/mapif.c9
-rw-r--r--src/common/HPMDataCheck.h3
-rw-r--r--src/common/Makefile.in27
-rw-r--r--src/common/atomic.h3
-rw-r--r--src/common/cbasetypes.h17
-rw-r--r--src/common/core.c2
-rw-r--r--src/common/hercules.h12
-rw-r--r--src/common/mmo.h44
-rw-r--r--src/common/nullpo.c133
-rw-r--r--src/common/nullpo.h7
-rw-r--r--src/common/packets/packets2020_len_main.h82
-rw-r--r--src/common/packets/packets2020_len_re.h82
-rw-r--r--src/common/packets/packets2020_len_zero.h82
-rw-r--r--src/common/packets/packets_len_main.h4
-rw-r--r--src/common/packets/packets_len_re.h4
-rw-r--r--src/common/packets/packets_len_zero.h4
-rw-r--r--src/login/Makefile.in25
-rw-r--r--src/login/account.c15
-rw-r--r--src/login/login.c10
-rw-r--r--src/map/Makefile.in25
-rw-r--r--src/map/achievement.c4
-rw-r--r--src/map/atcommand.c413
-rw-r--r--src/map/atcommand.h10
-rw-r--r--src/map/battle.c100
-rw-r--r--src/map/battle.h14
-rw-r--r--src/map/buyingstore.c13
-rw-r--r--src/map/chrif.c2
-rw-r--r--src/map/clif.c1570
-rw-r--r--src/map/clif.h22
-rw-r--r--src/map/elemental.c4
-rw-r--r--src/map/guild.c17
-rw-r--r--src/map/instance.c4
-rw-r--r--src/map/intif.c14
-rw-r--r--src/map/itemdb.h2
-rw-r--r--src/map/mail.c4
-rw-r--r--src/map/map.c214
-rw-r--r--src/map/map.h21
-rw-r--r--src/map/mapdefines.h8
-rw-r--r--src/map/mapreg.h67
-rw-r--r--src/map/mapreg_sql.c818
-rw-r--r--src/map/messages_main.h143
-rw-r--r--src/map/messages_re.h139
-rw-r--r--src/map/messages_zero.h148
-rw-r--r--src/map/mob.c700
-rw-r--r--src/map/mob.h12
-rw-r--r--src/map/npc.c175
-rw-r--r--src/map/npc.h10
-rw-r--r--src/map/npc_chat.c3
-rw-r--r--src/map/packets.h5
-rw-r--r--src/map/packets_keys_main.h21
-rw-r--r--src/map/packets_keys_zero.h19
-rw-r--r--src/map/packets_shuffle_main.h17139
-rw-r--r--src/map/packets_shuffle_re.h16966
-rw-r--r--src/map/packets_shuffle_zero.h1329
-rw-r--r--src/map/packets_struct.h64
-rw-r--r--src/map/party.c56
-rw-r--r--src/map/party.h2
-rw-r--r--src/map/pc.c1466
-rw-r--r--src/map/pc.h70
-rw-r--r--src/map/pet.c1059
-rw-r--r--src/map/pet.h6
-rw-r--r--src/map/quest.c2
-rw-r--r--src/map/rodex.c3
-rw-r--r--src/map/script.c1747
-rw-r--r--src/map/script.h32
-rw-r--r--src/map/skill.c5420
-rw-r--r--src/map/skill.h174
-rw-r--r--src/map/status.c591
-rw-r--r--src/map/status.h11
-rw-r--r--src/map/trade.c9
-rw-r--r--src/map/unit.c830
-rw-r--r--src/map/unit.h23
-rw-r--r--src/map/unitdefines.h58
-rw-r--r--src/map/vending.c6
-rw-r--r--src/plugins/HPMHooking/HPMHooking.Defs.inc348
-rw-r--r--src/plugins/HPMHooking/HPMHooking_char.HPMHooksCore.inc8
-rw-r--r--src/plugins/HPMHooking/HPMHooking_char.HookingPoints.inc2
-rw-r--r--src/plugins/HPMHooking/HPMHooking_char.Hooks.inc52
-rw-r--r--src/plugins/HPMHooking/HPMHooking_login.HPMHooksCore.inc8
-rw-r--r--src/plugins/HPMHooking/HPMHooking_login.HookingPoints.inc2
-rw-r--r--src/plugins/HPMHooking/HPMHooking_login.Hooks.inc52
-rw-r--r--src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc480
-rw-r--r--src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc122
-rw-r--r--src/plugins/HPMHooking/HPMHooking_map.Hooks.inc2913
-rw-r--r--src/plugins/Makefile.in4
-rw-r--r--src/plugins/db2sql.c27
-rw-r--r--src/plugins/mapcache.c1
-rw-r--r--src/test/Makefile.in25
93 files changed, 33201 insertions, 23663 deletions
diff --git a/src/char/Makefile.in b/src/char/Makefile.in
index 79ee3e18f..88a99c96c 100644
--- a/src/char/Makefile.in
+++ b/src/char/Makefile.in
@@ -36,6 +36,19 @@ LIBCONFIG_OBJ = $(addprefix $(LIBCONFIG_D)/, libconfig.o grammar.o scanctx.o \
LIBCONFIG_H = $(addprefix $(LIBCONFIG_D)/, libconfig.h grammar.h parsectx.h \
scanctx.h scanner.h strbuf.h wincompat.h)
+ifeq (@USE_LIBBACKTRACE@,yes)
+ LIBBACKTRACE_D = $(THIRDPARTY_D)/libbacktrace
+ LIBBACKTRACE_OBJ = $(addprefix $(LIBBACKTRACE_D)/, atomic.o backtrace.o \
+ dwarf.o @LIBBACKTRACE_FORMAT_FILE@ fileline.o mmapio.o mmap.o posix.o print.o \
+ simple.o sort.o state.o)
+ LIBBACKTRACE_H = $(addprefix $(LIBBACKTRACE_D)/, backtrace.h \
+ backtrace-supported.h config.h filenames.h internal.h)
+else
+ LIBBACKTRACE_D =
+ LIBBACKTRACE_OBJ =
+ LIBBACKTRACE_H =
+endif
+
MT19937AR_D = $(THIRDPARTY_D)/mt19937ar
MT19937AR_OBJ = $(MT19937AR_D)/mt19937ar.o
MT19937AR_H = $(MT19937AR_D)/mt19937ar.h
@@ -51,7 +64,7 @@ CHAR_PH =
HAVE_MYSQL=@HAVE_MYSQL@
ifeq ($(HAVE_MYSQL),yes)
- CHAR_SERVER_SQL_DEPENDS=$(CHAR_OBJ) $(COMMON_D)/obj_all/common.a $(COMMON_D)/obj_sql/common_sql.a $(MT19937AR_OBJ) $(LIBCONFIG_OBJ) $(SYSINFO_INC)
+ CHAR_SERVER_SQL_DEPENDS=$(CHAR_OBJ) $(COMMON_D)/obj_all/common.a $(COMMON_D)/obj_sql/common_sql.a $(MT19937AR_OBJ) $(LIBCONFIG_OBJ) $(LIBBACKTRACE_OBJ) $(SYSINFO_INC)
else
CHAR_SERVER_SQL_DEPENDS=needs_mysql
endif
@@ -90,7 +103,7 @@ help:
Makefile: Makefile.in
@$(MAKE) -C ../.. src/char/Makefile
-$(SYSINFO_INC): $(CHAR_C) $(CHAR_PH) $(CHAR_H) $(COMMON_H) $(CONFIG_H) $(MT19937AR_H) $(LIBCONFIG_H)
+$(SYSINFO_INC): $(CHAR_C) $(CHAR_PH) $(CHAR_H) $(COMMON_H) $(CONFIG_H) $(MT19937AR_H) $(LIBCONFIG_H) $(LIBBACKTRACE_H)
@echo " MAKE $@"
@$(MAKE) -C ../.. sysinfo
@@ -111,7 +124,7 @@ char-server: ../../char-server@EXEEXT@
../../char-server@EXEEXT@: $(CHAR_SERVER_SQL_DEPENDS) Makefile
@echo " LD $(notdir $@)"
@$(CC) @STATIC@ @LDFLAGS@ -o ../../char-server@EXEEXT@ $(CHAR_OBJ) $(COMMON_D)/obj_all/common.a $(COMMON_D)/obj_sql/common_sql.a \
- $(MT19937AR_OBJ) $(LIBCONFIG_OBJ) @LIBS@ @MYSQL_LIBS@
+ $(MT19937AR_OBJ) $(LIBCONFIG_OBJ) $(LIBBACKTRACE_OBJ) @LIBS@ @MYSQL_LIBS@
# missing object files
$(COMMON_D)/obj_all/common.a:
@@ -130,10 +143,14 @@ $(LIBCONFIG_OBJ):
@echo " MAKE $@"
@$(MAKE) -C $(LIBCONFIG_D)
+$(LIBBACKTRACE_OBJ):
+ @echo " MAKE $@"
+ @$(MAKE) -C $(LIBBACKTRACE_D)
+
.SECONDEXPANSION:
# char object files
-obj_sql/%.o: %.c $$(filter %.p.h, $(CHAR_PH)) $(CHAR_H) $(COMMON_H) $(CONFIG_H) $(MT19937AR_H) $(LIBCONFIG_H) | obj_sql
+obj_sql/%.o: %.c $$(filter %.p.h, $(CHAR_PH)) $(CHAR_H) $(COMMON_H) $(CONFIG_H) $(MT19937AR_H) $(LIBCONFIG_H) $(LIBBACKTRACE_H) | obj_sql
@echo " CC $<"
@$(CC) @CFLAGS@ @DEFS@ $(COMMON_INCLUDE) $(THIRDPARTY_INCLUDE) @MYSQL_CFLAGS@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $<
diff --git a/src/char/char.c b/src/char/char.c
index aac9ad20c..b3de22c00 100644
--- a/src/char/char.c
+++ b/src/char/char.c
@@ -425,8 +425,6 @@ static struct DBData char_create_charstatus(union DBKey key, va_list args)
static int char_mmo_char_tosql(int char_id, struct mmo_charstatus *p)
{
- int i = 0;
- int count = 0;
int diff = 0;
char save_status[128]; //For displaying save information. [Skotlex]
struct mmo_charstatus *cp;
@@ -591,8 +589,9 @@ static int char_mmo_char_tosql(int char_id, struct mmo_charstatus *p)
//insert here.
StrBuf->Clear(&buf);
StrBuf->Printf(&buf, "INSERT INTO `%s`(`char_id`,`map`,`x`,`y`) VALUES ", memo_db);
- for( i = 0, count = 0; i < MAX_MEMOPOINTS; ++i )
- {
+
+ int count = 0;
+ for (int i = 0; i < MAX_MEMOPOINTS; ++i) {
if( p->memo_point[i].map )
{
if( count )
@@ -624,24 +623,29 @@ static int char_mmo_char_tosql(int char_id, struct mmo_charstatus *p)
StrBuf->Clear(&buf);
StrBuf->Printf(&buf, "INSERT INTO `%s`(`char_id`,`id`,`lv`,`flag`) VALUES ", skill_db);
//insert here.
- for (i = 0, count = 0; i < MAX_SKILL_DB; ++i) {
- if( p->skill[i].id != 0 && p->skill[i].flag != SKILL_FLAG_TEMPORARY ) {
- if( p->skill[i].lv == 0 && ( p->skill[i].flag == SKILL_FLAG_PERM_GRANTED || p->skill[i].flag == SKILL_FLAG_PERMANENT ) )
- continue;
- if( p->skill[i].flag != SKILL_FLAG_PERMANENT && p->skill[i].flag != SKILL_FLAG_PERM_GRANTED && (p->skill[i].flag - SKILL_FLAG_REPLACED_LV_0) == 0 )
- continue;
- if( count )
- StrBuf->AppendStr(&buf, ",");
- StrBuf->Printf(&buf, "('%d','%d','%d','%d')", char_id, p->skill[i].id,
- ( (p->skill[i].flag == SKILL_FLAG_PERMANENT || p->skill[i].flag == SKILL_FLAG_PERM_GRANTED) ? p->skill[i].lv : p->skill[i].flag - SKILL_FLAG_REPLACED_LV_0),
- p->skill[i].flag == SKILL_FLAG_PERM_GRANTED ? p->skill[i].flag : 0);/* other flags do not need to be saved */
- ++count;
- }
+ int count = 0;
+ for (int i = 0; i < MAX_SKILL_DB; ++i) {
+ if (p->skill[i].id == 0)
+ continue;
+ if (p->skill[i].flag == SKILL_FLAG_TEMPORARY)
+ continue;
+ if (p->skill[i].lv == 0 && (p->skill[i].flag == SKILL_FLAG_PERM_GRANTED || p->skill[i].flag == SKILL_FLAG_PERMANENT))
+ continue;
+ if (p->skill[i].flag == SKILL_FLAG_REPLACED_LV_0)
+ continue;
+
+ if (Assert_chk(p->skill[i].flag == SKILL_FLAG_PERMANENT || p->skill[i].flag == SKILL_FLAG_PERM_GRANTED || p->skill[i].flag > SKILL_FLAG_REPLACED_LV_0))
+ continue;
+ if (count != 0)
+ StrBuf->AppendStr(&buf, ",");
+ int saved_lv = (p->skill[i].flag > SKILL_FLAG_REPLACED_LV_0) ? p->skill[i].flag - SKILL_FLAG_REPLACED_LV_0 : p->skill[i].lv;
+ int saved_flag = p->skill[i].flag == SKILL_FLAG_PERM_GRANTED ? p->skill[i].flag : 0; // other flags do not need to be saved
+ StrBuf->Printf(&buf, "('%d','%d','%d','%d')", char_id, p->skill[i].id, saved_lv, saved_flag);
+
+ ++count;
}
- if( count )
- {
- if( SQL_ERROR == SQL->QueryStr(inter->sql_handle, StrBuf->Value(&buf)) )
- {
+ if (count != 0) {
+ if (SQL_ERROR == SQL->QueryStr(inter->sql_handle, StrBuf->Value(&buf))) {
Sql_ShowDebug(inter->sql_handle);
errors++;
}
@@ -651,7 +655,7 @@ static int char_mmo_char_tosql(int char_id, struct mmo_charstatus *p)
}
diff = 0;
- for(i = 0; i < MAX_FRIENDS; i++){
+ for (int i = 0; i < MAX_FRIENDS; i++) {
if(p->friends[i].char_id != cp->friends[i].char_id ||
p->friends[i].account_id != cp->friends[i].account_id){
diff = 1;
@@ -669,8 +673,8 @@ static int char_mmo_char_tosql(int char_id, struct mmo_charstatus *p)
StrBuf->Clear(&buf);
StrBuf->Printf(&buf, "INSERT INTO `%s` (`char_id`, `friend_account`, `friend_id`) VALUES ", friend_db);
- for( i = 0, count = 0; i < MAX_FRIENDS; ++i )
- {
+ int count = 0;
+ for (int i = 0; i < MAX_FRIENDS; ++i) {
if( p->friends[i].char_id > 0 )
{
if( count )
@@ -695,7 +699,7 @@ static int char_mmo_char_tosql(int char_id, struct mmo_charstatus *p)
StrBuf->Clear(&buf);
StrBuf->Printf(&buf, "REPLACE INTO `%s` (`char_id`, `hotkey`, `type`, `itemskill_id`, `skill_lvl`) VALUES ", hotkey_db);
diff = 0;
- for(i = 0; i < ARRAYLENGTH(p->hotkeys); i++){
+ for (int i = 0; i < ARRAYLENGTH(p->hotkeys); i++) {
if(memcmp(&p->hotkeys[i], &cp->hotkeys[i], sizeof(struct hotkey)))
{
if( diff )
@@ -1369,7 +1373,7 @@ static int char_mmo_char_fromsql(int char_id, struct mmo_charstatus *p, bool loa
SqlStmt_ShowDebug(stmt);
}
- if( tmp_skill.flag != SKILL_FLAG_PERM_GRANTED )
+ if (tmp_skill.flag != SKILL_FLAG_PERM_GRANTED)
tmp_skill.flag = SKILL_FLAG_PERMANENT;
for (i = 0; i < MAX_SKILL_DB && SQL_SUCCESS == SQL->StmtNextRow(stmt); ++i) {
@@ -2531,19 +2535,39 @@ static void char_changesex(int account_id, int sex)
}
/**
- * Performs the necessary operations when changing a character's sex, such as
- * correcting the job class and unequipping items, and propagating the
- * information to the guild data.
+ * Performs the necessary operations when changing a character's gender,
+ * such as correcting the job class and unequipping items,
+ * and propagating the information to the guild data.
*
- * @param sex The new sex (SEX_MALE or SEX_FEMALE).
- * @param acc The character's account ID.
- * @param char_id The character ID.
- * @param class The character's current job class.
+ * @param sex The character's new gender (SEX_MALE or SEX_FEMALE).
+ * @param acc The character's account ID.
+ * @param char_id The character ID.
+ * @param class The character's current job class.
* @param guild_id The character's guild ID.
- */
+ *
+ **/
static void char_change_sex_sub(int sex, int acc, int char_id, int class, int guild_id)
{
- // job modification
+ struct SqlStmt *stmt = SQL->StmtMalloc(inter->sql_handle);
+
+ /** If we can't save the data, there's nothing to do. **/
+ if (stmt == NULL) {
+ SqlStmt_ShowDebug(stmt);
+ return;
+ }
+
+ const char *query_inv = "UPDATE `%s` SET `equip`='0' WHERE `char_id`=?";
+
+ /** Don't change gender if resetting the view data fails to prevent character from being unable to login. **/
+ if (SQL_ERROR == SQL->StmtPrepare(stmt, query_inv, inventory_db)
+ || SQL_ERROR == SQL->StmtBindParam(stmt, 0, SQLDT_INT32, &char_id, sizeof(char_id))
+ || SQL_ERROR == SQL->StmtExecute(stmt)) {
+ SqlStmt_ShowDebug(stmt);
+ SQL->StmtFree(stmt);
+ return;
+ }
+
+ /** Correct the job class for gender specific jobs according to the passed gender. **/
if (class == JOB_BARD || class == JOB_DANCER)
class = (sex == SEX_MALE ? JOB_BARD : JOB_DANCER);
else if (class == JOB_CLOWN || class == JOB_GYPSY)
@@ -2559,14 +2583,30 @@ static void char_change_sex_sub(int sex, int acc, int char_id, int class, int gu
else if (class == JOB_KAGEROU || class == JOB_OBORO)
class = (sex == SEX_MALE ? JOB_KAGEROU : JOB_OBORO);
- if (SQL_ERROR == SQL->Query(inter->sql_handle, "UPDATE `%s` SET `equip`='0' WHERE `char_id`='%d'", inventory_db, char_id))
- Sql_ShowDebug(inter->sql_handle);
+#if PACKETVER >= 20141016
+ char gender = (sex == SEX_MALE) ? 'M' : ((sex == SEX_FEMALE) ? 'F' : 'U');
+#else
+ char gender = 'U';
+#endif
- if (SQL_ERROR == SQL->Query(inter->sql_handle, "UPDATE `%s` SET `class`='%d', `weapon`='0', `shield`='0', "
- "`head_top`='0', `head_mid`='0', `head_bottom`='0' WHERE `char_id`='%d'",
- char_db, class, char_id))
- Sql_ShowDebug(inter->sql_handle);
- if (guild_id) // If there is a guild, update the guild_member data [Skotlex]
+ const char *query_char = "UPDATE `%s` SET `class`=?, `weapon`='0', `shield`='0', `head_top`='0', "
+ "`head_mid`='0', `head_bottom`='0', `robe`='0', `sex`=? WHERE `char_id`=?";
+
+ /** Don't update guild data if changing gender fails to prevent data de-synchronisation. **/
+ if (SQL_ERROR == SQL->StmtPrepare(stmt, query_char, char_db)
+ || SQL_ERROR == SQL->StmtBindParam(stmt, 0, SQLDT_INT32, &class, sizeof(class))
+ || SQL_ERROR == SQL->StmtBindParam(stmt, 1, SQLDT_ENUM, &gender, sizeof(gender))
+ || SQL_ERROR == SQL->StmtBindParam(stmt, 2, SQLDT_INT32, &char_id, sizeof(char_id))
+ || SQL_ERROR == SQL->StmtExecute(stmt)) {
+ SqlStmt_ShowDebug(stmt);
+ SQL->StmtFree(stmt);
+ return;
+ }
+
+ SQL->StmtFree(stmt);
+
+ /** Update guild member data if a guild ID was passed. **/
+ if (guild_id != 0)
inter_guild->sex_changed(guild_id, acc, char_id, sex);
}
@@ -2898,13 +2938,13 @@ static void char_global_accreg_to_login_add(const char *key, unsigned int index,
if( val ) {
char *sval = (char*)val;
- len = strlen(sval)+1;
+ len = strlen(sval);
- WFIFOB(chr->login_fd, nlen) = (unsigned char)len;/* won't be higher; the column size is 254 */
+ WFIFOB(chr->login_fd, nlen) = (unsigned char)len; // Won't be higher; the column size is 255.
nlen += 1;
- safestrncpy(WFIFOP(chr->login_fd,nlen), sval, len);
- nlen += len;
+ safestrncpy(WFIFOP(chr->login_fd, nlen), sval, len + 1);
+ nlen += len + 1;
}
} else {
WFIFOB(chr->login_fd, nlen) = val ? 0 : 1;
@@ -3500,45 +3540,68 @@ static void char_ask_name_ack(int fd, int acc, const char *name, int type, int r
}
/**
- * Changes a character's sex.
- * The information is updated on database, and the character is kicked if it
- * currently is online.
+ * Changes a character's gender.
+ * The information is updated on database, and the character is kicked if it currently is online.
*
- * @param char_id The character's ID.
- * @param sex The new sex.
+ * @param char_id The character ID
+ * @param sex The character's new gender (SEX_MALE or SEX_FEMALE).
* @retval 0 in case of success.
* @retval 1 in case of failure.
- */
+ *
+ **/
static int char_changecharsex(int char_id, int sex)
{
- int class = 0, guild_id = 0, account_id = 0;
- char *data;
+ struct SqlStmt *stmt = SQL->StmtMalloc(inter->sql_handle);
- // get character data
- if (SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT `account_id`,`class`,`guild_id` FROM `%s` WHERE `char_id` = '%d'", char_db, char_id)) {
- Sql_ShowDebug(inter->sql_handle);
+ /** If we can't load the data, there's nothing to do. **/
+ if (stmt == NULL) {
+ SqlStmt_ShowDebug(stmt);
return 1;
}
- if (SQL->NumRows(inter->sql_handle) != 1 || SQL_ERROR == SQL->NextRow(inter->sql_handle)) {
- SQL->FreeResult(inter->sql_handle);
+
+ const char *query = "SELECT `account_id`, `class`, `guild_id` FROM `%s` WHERE `char_id`=?";
+ int account_id = 0;
+ int class = 0;
+ int guild_id = 0;
+
+ /** Abort changing gender if there was an error while loading the data. **/
+ if (SQL_ERROR == SQL->StmtPrepare(stmt, query, char_db)
+ || SQL_ERROR == SQL->StmtBindParam(stmt, 0, SQLDT_INT32, &char_id, sizeof(char_id))
+ || SQL_ERROR == SQL->StmtExecute(stmt)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 0, SQLDT_INT32, &account_id, sizeof(account_id), NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 1, SQLDT_INT32, &class, sizeof(class), NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 2, SQLDT_INT32, &guild_id, sizeof(guild_id), NULL, NULL)) {
+ SqlStmt_ShowDebug(stmt);
+ SQL->StmtFree(stmt);
return 1;
}
- SQL->GetData(inter->sql_handle, 0, &data, NULL); account_id = atoi(data);
- SQL->GetData(inter->sql_handle, 1, &data, NULL); class = atoi(data);
- SQL->GetData(inter->sql_handle, 2, &data, NULL); guild_id = atoi(data);
- SQL->FreeResult(inter->sql_handle);
- if (SQL_ERROR == SQL->Query(inter->sql_handle, "UPDATE `%s` SET `sex` = '%c' WHERE `char_id` = '%d'", char_db, sex == SEX_MALE ? 'M' : 'F', char_id)) {
- Sql_ShowDebug(inter->sql_handle);
+ /** Abort changing gender if no character was found. **/
+ if (SQL->StmtNumRows(stmt) < 1) {
+ ShowError("char_changecharsex: Requested non-existant character! (ID: %d)\n", char_id);
+ SQL->StmtFree(stmt);
return 1;
}
- char_change_sex_sub(sex, account_id, char_id, class, guild_id);
- // disconnect player if online on char-server
- chr->disconnect_player(account_id);
+ /** Abort changing gender if more than one character was found. **/
+ if (SQL->StmtNumRows(stmt) > 1) {
+ ShowError("char_changecharsex: There are multiple characters with identical ID! (ID: %d)\n", char_id);
+ SQL->StmtFree(stmt);
+ return 1;
+ }
+
+ /** Abort changing gender if fetching the data fails. **/
+ if (SQL_ERROR == SQL->StmtNextRow(stmt)) {
+ SqlStmt_ShowDebug(stmt);
+ SQL->StmtFree(stmt);
+ return 1;
+ }
+
+ SQL->StmtFree(stmt);
+ char_change_sex_sub(sex, account_id, char_id, class, guild_id);
+ chr->disconnect_player(account_id); // Disconnect player if online on char-server.
+ chr->changesex(account_id, sex); // Notify all mapservers about this change.
- // notify all mapservers about this change
- chr->changesex(account_id, sex);
return 0;
}
diff --git a/src/char/int_party.c b/src/char/int_party.c
index c16eea34e..62633b4a8 100644
--- a/src/char/int_party.c
+++ b/src/char/int_party.c
@@ -67,6 +67,7 @@ static int inter_party_check_lv(struct party_data *p)
if (p->party.exp == 1 && inter_party->check_exp_share(p) == 0) {
p->party.exp = 0;
mapif->party_optionchanged(0, &p->party, 0, 0);
+ inter_party->tosql(&p->party, PS_BASIC, 0);
return 0;
}
@@ -577,9 +578,9 @@ static bool inter_party_leave(int party_id, int account_id, int char_id)
if (p->party.member[i].online == 1)
p->party.member[i].online = 0;
+ inter_party->tosql(&p->party, PS_DELMEMBER, i);
memset(&p->party.member[i], 0, sizeof(struct party_member));
inter_party->calc_state(p); /// Count online/offline members and check family state and even share range.
- inter_party->tosql(&p->party, PS_DELMEMBER, i);
if (inter_party->check_empty(p) == 0)
mapif->party_info(-1, &p->party, 0);
diff --git a/src/char/int_pet.c b/src/char/int_pet.c
index 880de668d..8b42bac1d 100644
--- a/src/char/int_pet.c
+++ b/src/char/int_pet.c
@@ -43,97 +43,162 @@ struct inter_pet_interface *inter_pet;
/**
* Saves a pet to the SQL database.
*
- * @remark
- * In case of newly created pet, the pet ID is not updated to reflect the
- * newly assigned ID. The caller must do so.
+ * Table structure:
+ * `pet` (`pet_id`, `class`, `name`, `account_id`, `char_id`, `level`, `egg_id`, `equip`, `intimate`, `hungry`, `rename_flag`, `incubate`, `autofeed`)
+ *
+ * @remark In case of newly created pet, the pet ID is not updated to reflect the newly assigned ID. The caller must do so.
*
* @param p The pet data to save.
- * @return The ID of the saved pet.
- * @retval 0 in case of errors.
- */
+ * @return The ID of the saved pet, or 0 in case of errors.
+ *
+ **/
static int inter_pet_tosql(const struct s_pet *p)
{
- //`pet` (`pet_id`, `class`,`name`,`account_id`,`char_id`,`level`,`egg_id`,`equip`,`intimate`,`hungry`,`rename_flag`,`incubate`)
- char esc_name[NAME_LENGTH*2+1];// escaped pet name
- int pet_id = 0, hungry = 0, intimate = 0;
-
nullpo_ret(p);
- SQL->EscapeStringLen(inter->sql_handle, esc_name, p->name, strnlen(p->name, NAME_LENGTH));
- hungry = cap_value(p->hungry, 0, 100);
- intimate = cap_value(p->intimate, 0, 1000);
-
- if (p->pet_id == 0) {
- // New pet.
- if (SQL_ERROR == SQL->Query(inter->sql_handle, "INSERT INTO `%s` "
- "(`class`,`name`,`account_id`,`char_id`,`level`,`egg_id`,`equip`,`intimate`,`hungry`,`rename_flag`,`incubate`, `autofeed`) "
- "VALUES ('%d', '%s', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d')",
- pet_db, p->class_, esc_name, p->account_id, p->char_id, p->level, p->egg_id,
- p->equip, intimate, hungry, p->rename_flag, p->incubate, p->autofeed)) {
- Sql_ShowDebug(inter->sql_handle);
+ struct SqlStmt *stmt = SQL->StmtMalloc(inter->sql_handle);
+
+ if (stmt == NULL) {
+ SqlStmt_ShowDebug(stmt);
+ return 0;
+ }
+
+ int pet_id = 0;
+
+ if (p->pet_id == 0) { // New pet.
+ const char *query = "INSERT INTO `%s` "
+ "(`class`, `name`, `account_id`, `char_id`, `level`, `egg_id`, `equip`, "
+ "`intimate`, `hungry`, `rename_flag`, `incubate`, `autofeed`) "
+ "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
+
+ if (SQL_ERROR == SQL->StmtPrepare(stmt, query, pet_db) ||
+ SQL_ERROR == SQL->StmtBindParam(stmt, 0, SQLDT_INT32, &p->class_, sizeof(p->class_)) ||
+ SQL_ERROR == SQL->StmtBindParam(stmt, 1, SQLDT_STRING, &p->name, strnlen(p->name, sizeof(p->name))) ||
+ SQL_ERROR == SQL->StmtBindParam(stmt, 2, SQLDT_INT32, &p->account_id, sizeof(p->account_id)) ||
+ SQL_ERROR == SQL->StmtBindParam(stmt, 3, SQLDT_INT32, &p->char_id, sizeof(p->char_id)) ||
+ SQL_ERROR == SQL->StmtBindParam(stmt, 4, SQLDT_INT16, &p->level, sizeof(p->level)) ||
+ SQL_ERROR == SQL->StmtBindParam(stmt, 5, SQLDT_INT32, &p->egg_id, sizeof(p->egg_id)) ||
+ SQL_ERROR == SQL->StmtBindParam(stmt, 6, SQLDT_INT32, &p->equip, sizeof(p->equip)) ||
+ SQL_ERROR == SQL->StmtBindParam(stmt, 7, SQLDT_INT16, &p->intimate, sizeof(p->intimate)) ||
+ SQL_ERROR == SQL->StmtBindParam(stmt, 8, SQLDT_INT16, &p->hungry, sizeof(p->hungry)) ||
+ SQL_ERROR == SQL->StmtBindParam(stmt, 9, SQLDT_INT8, &p->rename_flag, sizeof(p->rename_flag)) ||
+ SQL_ERROR == SQL->StmtBindParam(stmt, 10, SQLDT_INT8, &p->incubate, sizeof(p->incubate)) ||
+ SQL_ERROR == SQL->StmtBindParam(stmt, 11, SQLDT_INT32, &p->autofeed, sizeof(p->autofeed)) ||
+ SQL_ERROR == SQL->StmtExecute(stmt)) {
+ SqlStmt_ShowDebug(stmt);
+ SQL->StmtFree(stmt);
return 0;
}
+
pet_id = (int)SQL->LastInsertId(inter->sql_handle);
- } else {
- // Update pet.
- if (SQL_ERROR == SQL->Query(inter->sql_handle, "UPDATE `%s` SET `class`='%d',`name`='%s',`account_id`='%d',`char_id`='%d',`level`='%d',`egg_id`='%d',`equip`='%d',`intimate`='%d',`hungry`='%d',`rename_flag`='%d',`incubate`='%d', `autofeed`='%d' WHERE `pet_id`='%d'",
- pet_db, p->class_, esc_name, p->account_id, p->char_id, p->level, p->egg_id,
- p->equip, intimate, hungry, p->rename_flag, p->incubate, p->autofeed, p->pet_id)) {
- Sql_ShowDebug(inter->sql_handle);
+ } else { // Update pet.
+ const char *query = "UPDATE `%s` SET "
+ "`class`=?, `name`=?, `account_id`=?, `char_id`=?, `level`=?, `egg_id`=?, `equip`=?, "
+ "`intimate`=?, `hungry`=?, `rename_flag`=?, `incubate`=?, `autofeed`=? "
+ "WHERE `pet_id`=?";
+
+ if (SQL_ERROR == SQL->StmtPrepare(stmt, query, pet_db) ||
+ SQL_ERROR == SQL->StmtBindParam(stmt, 0, SQLDT_INT32, &p->class_, sizeof(p->class_)) ||
+ SQL_ERROR == SQL->StmtBindParam(stmt, 1, SQLDT_STRING, &p->name, strnlen(p->name, sizeof(p->name))) ||
+ SQL_ERROR == SQL->StmtBindParam(stmt, 2, SQLDT_INT32, &p->account_id, sizeof(p->account_id)) ||
+ SQL_ERROR == SQL->StmtBindParam(stmt, 3, SQLDT_INT32, &p->char_id, sizeof(p->char_id)) ||
+ SQL_ERROR == SQL->StmtBindParam(stmt, 4, SQLDT_INT16, &p->level, sizeof(p->level)) ||
+ SQL_ERROR == SQL->StmtBindParam(stmt, 5, SQLDT_INT32, &p->egg_id, sizeof(p->egg_id)) ||
+ SQL_ERROR == SQL->StmtBindParam(stmt, 6, SQLDT_INT32, &p->equip, sizeof(p->equip)) ||
+ SQL_ERROR == SQL->StmtBindParam(stmt, 7, SQLDT_INT16, &p->intimate, sizeof(p->intimate)) ||
+ SQL_ERROR == SQL->StmtBindParam(stmt, 8, SQLDT_INT16, &p->hungry, sizeof(p->hungry)) ||
+ SQL_ERROR == SQL->StmtBindParam(stmt, 9, SQLDT_INT8, &p->rename_flag, sizeof(p->rename_flag)) ||
+ SQL_ERROR == SQL->StmtBindParam(stmt, 10, SQLDT_INT8, &p->incubate, sizeof(p->incubate)) ||
+ SQL_ERROR == SQL->StmtBindParam(stmt, 11, SQLDT_INT32, &p->autofeed, sizeof(p->autofeed)) ||
+ SQL_ERROR == SQL->StmtBindParam(stmt, 12, SQLDT_INT32, &p->pet_id, sizeof(p->pet_id)) ||
+ SQL_ERROR == SQL->StmtExecute(stmt)) {
+ SqlStmt_ShowDebug(stmt);
+ SQL->StmtFree(stmt);
return 0;
}
+
pet_id = p->pet_id;
}
+ SQL->StmtFree(stmt);
+
if (chr->show_save_log)
ShowInfo("Pet saved %d - %s.\n", pet_id, p->name);
return pet_id;
}
+/**
+ * Loads a pet's data from the SQL database.
+ *
+ * Table structure:
+ * `pet` (`pet_id`, `class`, `name`, `account_id`, `char_id`, `level`, `egg_id`, `equip`, `intimate`, `hungry`, `rename_flag`, `incubate`, `autofeed`)
+ *
+ * @param pet_id The pet's ID.
+ * @param p The pet data to save the SQL data in.
+ * @return Always 0.
+ *
+ **/
static int inter_pet_fromsql(int pet_id, struct s_pet *p)
{
- char* data;
- size_t len;
+ nullpo_ret(p);
+
+ struct SqlStmt *stmt = SQL->StmtMalloc(inter->sql_handle);
+
+ if (stmt == NULL) {
+ SqlStmt_ShowDebug(stmt);
+ return 0;
+ }
#ifdef NOISY
ShowInfo("Loading pet (%d)...\n",pet_id);
#endif
- nullpo_ret(p);
+
memset(p, 0, sizeof(struct s_pet));
- //`pet` (`pet_id`, `class`,`name`,`account_id`,`char_id`,`level`,`egg_id`,`equip`,`intimate`,`hungry`,`rename_flag`,`incubate`, `autofeed`)
+ const char *query = "SELECT "
+ "`class`, `name`, `account_id`, `char_id`, `level`, `egg_id`, `equip`, "
+ "`intimate`, `hungry`, `rename_flag`, `incubate`, `autofeed` "
+ "FROM `%s` WHERE `pet_id`=?";
+
+ if (SQL_ERROR == SQL->StmtPrepare(stmt, query, pet_db) ||
+ SQL_ERROR == SQL->StmtBindParam(stmt, 0, SQLDT_INT32, &pet_id, sizeof(pet_id)) ||
+ SQL_ERROR == SQL->StmtExecute(stmt) ||
+ SQL_ERROR == SQL->StmtBindColumn(stmt, 0, SQLDT_INT32, &p->class_, sizeof(p->class_), NULL, NULL) ||
+ SQL_ERROR == SQL->StmtBindColumn(stmt, 1, SQLDT_STRING, &p->name, sizeof(p->name), NULL, NULL) ||
+ SQL_ERROR == SQL->StmtBindColumn(stmt, 2, SQLDT_INT32, &p->account_id, sizeof(p->account_id), NULL, NULL) ||
+ SQL_ERROR == SQL->StmtBindColumn(stmt, 3, SQLDT_INT32, &p->char_id, sizeof(p->char_id), NULL, NULL) ||
+ SQL_ERROR == SQL->StmtBindColumn(stmt, 4, SQLDT_INT16, &p->level, sizeof(p->level), NULL, NULL) ||
+ SQL_ERROR == SQL->StmtBindColumn(stmt, 5, SQLDT_INT32, &p->egg_id, sizeof(p->egg_id), NULL, NULL) ||
+ SQL_ERROR == SQL->StmtBindColumn(stmt, 6, SQLDT_INT32, &p->equip, sizeof(p->equip), NULL, NULL) ||
+ SQL_ERROR == SQL->StmtBindColumn(stmt, 7, SQLDT_INT16, &p->intimate, sizeof(p->intimate), NULL, NULL) ||
+ SQL_ERROR == SQL->StmtBindColumn(stmt, 8, SQLDT_INT16, &p->hungry, sizeof(p->hungry), NULL, NULL) ||
+ SQL_ERROR == SQL->StmtBindColumn(stmt, 9, SQLDT_INT8, &p->rename_flag, sizeof(p->rename_flag), NULL, NULL) ||
+ SQL_ERROR == SQL->StmtBindColumn(stmt, 10, SQLDT_INT8, &p->incubate, sizeof(p->incubate), NULL, NULL) ||
+ SQL_ERROR == SQL->StmtBindColumn(stmt, 11, SQLDT_INT32, &p->autofeed, sizeof(p->autofeed), NULL, NULL)) {
+ SqlStmt_ShowDebug(stmt);
+ SQL->StmtFree(stmt);
+ return 0;
+ }
- if( SQL_ERROR == SQL->Query(inter->sql_handle, "SELECT `pet_id`, `class`,`name`,`account_id`,`char_id`,`level`,`egg_id`,`equip`,`intimate`,`hungry`,`rename_flag`,`incubate`,`autofeed` FROM `%s` WHERE `pet_id`='%d'", pet_db, pet_id) )
- {
- Sql_ShowDebug(inter->sql_handle);
+ if (SQL->StmtNumRows(stmt) < 1) {
+ ShowError("inter_pet_fromsql: Requested non-existant pet ID: %d\n", pet_id);
+ SQL->StmtFree(stmt);
return 0;
}
- if( SQL_SUCCESS == SQL->NextRow(inter->sql_handle) )
- {
- p->pet_id = pet_id;
- SQL->GetData(inter->sql_handle, 1, &data, NULL); p->class_ = atoi(data);
- SQL->GetData(inter->sql_handle, 2, &data, &len); memcpy(p->name, data, min(len, NAME_LENGTH));
- SQL->GetData(inter->sql_handle, 3, &data, NULL); p->account_id = atoi(data);
- SQL->GetData(inter->sql_handle, 4, &data, NULL); p->char_id = atoi(data);
- SQL->GetData(inter->sql_handle, 5, &data, NULL); p->level = atoi(data);
- SQL->GetData(inter->sql_handle, 6, &data, NULL); p->egg_id = atoi(data);
- SQL->GetData(inter->sql_handle, 7, &data, NULL); p->equip = atoi(data);
- SQL->GetData(inter->sql_handle, 8, &data, NULL); p->intimate = atoi(data);
- SQL->GetData(inter->sql_handle, 9, &data, NULL); p->hungry = atoi(data);
- SQL->GetData(inter->sql_handle, 10, &data, NULL); p->rename_flag = atoi(data);
- SQL->GetData(inter->sql_handle, 11, &data, NULL); p->incubate = atoi(data);
- SQL->GetData(inter->sql_handle, 12, &data, NULL); p->autofeed = atoi(data);
-
- SQL->FreeResult(inter->sql_handle);
-
- p->hungry = cap_value(p->hungry, 0, 100);
- p->intimate = cap_value(p->intimate, 0, 1000);
-
- if (chr->show_save_log)
- ShowInfo("Pet loaded (%d - %s).\n", pet_id, p->name);
+ if (SQL_ERROR == SQL->StmtNextRow(stmt)) {
+ SqlStmt_ShowDebug(stmt);
+ SQL->StmtFree(stmt);
+ return 0;
}
+
+ SQL->StmtFree(stmt);
+ p->pet_id = pet_id;
+
+ if (chr->show_save_log)
+ ShowInfo("Pet loaded %d - %s.\n", pet_id, p->name);
+
return 0;
}
//----------------------------------------------
@@ -160,41 +225,48 @@ static int inter_pet_delete(int pet_id)
return 0;
}
//------------------------------------------------------
+
+/**
+ * Creates a new pet and inserts its data into the `pet` SQL table.
+ *
+ * @param account_id The pet's master's account ID.
+ * @param char_id The pet's master's char ID.
+ * @param pet_class The pet's class/monster ID.
+ * @param pet_lv The pet's level.
+ * @param pet_egg_id The pet's egg's item ID.
+ * @param pet_equip The pet's equipment's item ID.
+ * @param intimate The pet's intimacy value.
+ * @param hungry The pet's hunger value.
+ * @param rename_flag The pet's rename flag.
+ * @param incubate The pet's incubate state.
+ * @param pet_name The pet's name.
+ * @return The created pet's data struct, or NULL in case of errors.
+ *
+ **/
static struct s_pet *inter_pet_create(int account_id, int char_id, int pet_class, int pet_lv, int pet_egg_id,
- int pet_equip, short intimate, short hungry, char rename_flag, char incubate, const char *pet_name)
+ int pet_equip, short intimate, short hungry, char rename_flag,
+ char incubate, const char *pet_name)
{
- nullpo_ret(pet_name);
+ nullpo_retr(NULL, pet_name);
+
memset(inter_pet->pt, 0, sizeof(struct s_pet));
safestrncpy(inter_pet->pt->name, pet_name, NAME_LENGTH);
- if(incubate == 1)
- inter_pet->pt->account_id = inter_pet->pt->char_id = 0;
- else {
- inter_pet->pt->account_id = account_id;
- inter_pet->pt->char_id = char_id;
- }
+ inter_pet->pt->account_id = (incubate == 1) ? 0 : account_id;
+ inter_pet->pt->char_id = (incubate == 1) ? 0 : char_id;
inter_pet->pt->class_ = pet_class;
inter_pet->pt->level = pet_lv;
inter_pet->pt->egg_id = pet_egg_id;
inter_pet->pt->equip = pet_equip;
- inter_pet->pt->intimate = intimate;
- inter_pet->pt->hungry = hungry;
+ inter_pet->pt->intimate = cap_value(intimate, PET_INTIMACY_NONE, PET_INTIMACY_MAX);
+ inter_pet->pt->hungry = cap_value(hungry, PET_HUNGER_STARVING, PET_HUNGER_STUFFED);
inter_pet->pt->rename_flag = rename_flag;
inter_pet->pt->incubate = incubate;
+ inter_pet->pt->pet_id = 0; // Signal NEW pet.
- if(inter_pet->pt->hungry < 0)
- inter_pet->pt->hungry = 0;
- else if(inter_pet->pt->hungry > 100)
- inter_pet->pt->hungry = 100;
- if(inter_pet->pt->intimate < 0)
- inter_pet->pt->intimate = 0;
- else if(inter_pet->pt->intimate > 1000)
- inter_pet->pt->intimate = 1000;
-
- inter_pet->pt->pet_id = 0; //Signal NEW pet.
if ((inter_pet->pt->pet_id = inter_pet->tosql(inter_pet->pt)) != 0)
return inter_pet->pt;
- else //Failed...
- return NULL;
+
+ return NULL;
}
static struct s_pet *inter_pet_load(int account_id, int char_id, int pet_id)
diff --git a/src/char/inter.c b/src/char/inter.c
index 2d8d06a9c..5252b3315 100644
--- a/src/char/inter.c
+++ b/src/char/inter.c
@@ -676,13 +676,13 @@ static int inter_accreg_fromsql(int account_id, int char_id, int fd, int type)
plen += 4;
SQL->GetData(inter->sql_handle, 2, &data, NULL);
- len = strlen(data)+1;
+ len = strlen(data);
- WFIFOB(fd, plen) = (unsigned char)len;/* won't be higher; the column size is 254 */
+ WFIFOB(fd, plen) = (unsigned char)len; // Won't be higher; the column size is 255.
plen += 1;
- safestrncpy(WFIFOP(fd,plen), data, len);
- plen += len;
+ safestrncpy(WFIFOP(fd, plen), data, len + 1);
+ plen += len + 1;
WFIFOW(fd, 14) += 1;
diff --git a/src/char/mapif.c b/src/char/mapif.c
index 9077afae4..ed0133da3 100644
--- a/src/char/mapif.c
+++ b/src/char/mapif.c
@@ -559,7 +559,7 @@ static int mapif_guild_withdraw(int guild_id, int account_id, int char_id, int f
WBUFL(buf, 6) = account_id;
WBUFL(buf, 10) = char_id;
WBUFB(buf, 14) = flag;
- memcpy(WBUFP(buf, 15), mes, 40);
+ safestrncpy(WBUFP(buf, 15), mes, 40);
memcpy(WBUFP(buf, 55), name, NAME_LENGTH);
mapif->sendall(buf, 55 + NAME_LENGTH);
ShowInfo("int_guild: guild withdraw (%d - %d: %s - %s)\n", guild_id, account_id, name, mes);
@@ -2030,7 +2030,8 @@ static int mapif_parse_Registry(int fd)
if (count != 0) {
int cursor = 14, i;
- char key[SCRIPT_VARNAME_LENGTH+1], sval[254];
+ char key[SCRIPT_VARNAME_LENGTH + 1];
+ char sval[SCRIPT_STRING_VAR_LENGTH + 1];
bool isLoginActive = sockt->session_is_active(chr->login_fd);
if (isLoginActive)
@@ -2057,8 +2058,8 @@ static int mapif_parse_Registry(int fd)
/* str */
case 2:
len = RFIFOB(fd, cursor);
- safestrncpy(sval, RFIFOP(fd, cursor + 1), min((int)sizeof(sval), len));
- cursor += len + 1;
+ safestrncpy(sval, RFIFOP(fd, cursor + 1), min((int)sizeof(sval), len + 1));
+ cursor += len + 2;
inter->savereg(account_id, char_id, key, index, (intptr_t)sval, true);
break;
case 3:
diff --git a/src/common/HPMDataCheck.h b/src/common/HPMDataCheck.h
index d2e491ad2..821d68569 100644
--- a/src/common/HPMDataCheck.h
+++ b/src/common/HPMDataCheck.h
@@ -738,7 +738,6 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = {
{ "PACKET_ZC_REPAIRITEMLIST", sizeof(struct PACKET_ZC_REPAIRITEMLIST), SERVER_TYPE_MAP },
{ "PACKET_ZC_REPAIRITEMLIST_sub", sizeof(struct PACKET_ZC_REPAIRITEMLIST_sub), SERVER_TYPE_MAP },
{ "PACKET_ZC_ROLE_CHANGE", sizeof(struct PACKET_ZC_ROLE_CHANGE), SERVER_TYPE_MAP },
- { "PACKET_ZC_SE_CASHSHOP_OPEN", sizeof(struct PACKET_ZC_SE_CASHSHOP_OPEN), SERVER_TYPE_MAP },
{ "PACKET_ZC_SEARCH_STORE_INFO_ACK", sizeof(struct PACKET_ZC_SEARCH_STORE_INFO_ACK), SERVER_TYPE_MAP },
{ "PACKET_ZC_SEARCH_STORE_INFO_ACK_sub", sizeof(struct PACKET_ZC_SEARCH_STORE_INFO_ACK_sub), SERVER_TYPE_MAP },
{ "PACKET_ZC_SKILL_SCALE", sizeof(struct PACKET_ZC_SKILL_SCALE), SERVER_TYPE_MAP },
@@ -859,6 +858,7 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = {
#define MAP_PC_GROUPS_H
#endif // MAP_PC_GROUPS_H
#ifdef MAP_PC_H
+ { "autocast_data", sizeof(struct autocast_data), SERVER_TYPE_MAP },
{ "autotrade_vending", sizeof(struct autotrade_vending), SERVER_TYPE_MAP },
{ "class_exp_group", sizeof(struct class_exp_group), SERVER_TYPE_MAP },
{ "class_exp_tables", sizeof(struct class_exp_tables), SERVER_TYPE_MAP },
@@ -966,6 +966,7 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = {
{ "skill_cd_entry", sizeof(struct skill_cd_entry), SERVER_TYPE_MAP },
{ "skill_condition", sizeof(struct skill_condition), SERVER_TYPE_MAP },
{ "skill_interface", sizeof(struct skill_interface), SERVER_TYPE_MAP },
+ { "skill_required_item_data", sizeof(struct skill_required_item_data), SERVER_TYPE_MAP },
{ "skill_timerskill", sizeof(struct skill_timerskill), SERVER_TYPE_MAP },
{ "skill_unit", sizeof(struct skill_unit), SERVER_TYPE_MAP },
{ "skill_unit_group", sizeof(struct skill_unit_group), SERVER_TYPE_MAP },
diff --git a/src/common/Makefile.in b/src/common/Makefile.in
index 033b26ae3..22b974cfd 100644
--- a/src/common/Makefile.in
+++ b/src/common/Makefile.in
@@ -33,6 +33,19 @@ LIBCONFIG_OBJ = $(addprefix $(LIBCONFIG_D)/, libconfig.o grammar.o scanctx.o \
LIBCONFIG_H = $(addprefix $(LIBCONFIG_D)/, libconfig.h grammar.h parsectx.h \
scanctx.h scanner.h strbuf.h wincompat.h)
+ifeq (@USE_LIBBACKTRACE@,yes)
+ LIBBACKTRACE_D = $(THIRDPARTY_D)/libbacktrace
+ LIBBACKTRACE_OBJ = $(addprefix $(LIBBACKTRACE_D)/, atomic.o backtrace.o \
+ dwarf.o @LIBBACKTRACE_FORMAT_FILE@ fileline.o mmapio.o mmap.o posix.o print.o \
+ simple.o sort.o state.o)
+ LIBBACKTRACE_H = $(addprefix $(LIBBACKTRACE_D)/, backtrace.h \
+ backtrace-supported.h config.h filenames.h internal.h)
+else
+ LIBBACKTRACE_D =
+ LIBBACKTRACE_OBJ =
+ LIBBACKTRACE_H =
+endif
+
MT19937AR_D = $(THIRDPARTY_D)/mt19937ar
MT19937AR_OBJ = $(MT19937AR_D)/mt19937ar.o
MT19937AR_H = $(MT19937AR_D)/mt19937ar.h
@@ -95,7 +108,7 @@ help:
Makefile: Makefile.in
@$(MAKE) -C ../.. src/common/Makefile
-$(SYSINFO_INC): $(COMMON_C) $(COMMON_PH) $(COMMON_H) $(CONFIG_H) $(MT19937AR_H) $(LIBCONFIG_H)
+$(SYSINFO_INC): $(COMMON_C) $(COMMON_PH) $(COMMON_H) $(CONFIG_H) $(MT19937AR_H) $(LIBCONFIG_H) $(LIBBACKTRACE_H)
@echo " MAKE $@"
@$(MAKE) -C ../.. sysinfo
@@ -121,7 +134,7 @@ obj_sql/common_sql.a: $(COMMON_SQL_OBJ) Makefile
@echo " AR $@"
@@AR@ rcs obj_sql/common_sql.a $(COMMON_SQL_OBJ)
-common: $(COMMON_OBJ) $(MT19937AR_OBJ) $(LIBCONFIG_OBJ) obj_all/common.a Makefile
+common: $(COMMON_OBJ) $(MT19937AR_OBJ) $(LIBCONFIG_OBJ) $(LIBBACKTRACE_OBJ) obj_all/common.a Makefile
common_sql: $(COMMON_SQL_OBJ) obj_sql/common_sql.a Makefile
@@ -134,14 +147,18 @@ $(LIBCONFIG_OBJ):
@echo " MAKE $@"
@$(MAKE) -C $(LIBCONFIG_D)
+$(LIBBACKTRACE_OBJ):
+ @echo " MAKE $@"
+ @$(MAKE) -C $(LIBBACKTRACE_D)
+
.SECONDEXPANSION:
-obj_all/sysinfo.o: sysinfo.c $(filter sysinfo.p.h, $(COMMON_PH)) $(COMMON_H) $(CONFIG_H) $(MT19937AR_H) $(LIBCONFIG_H) $(SYSINFO_INC) | obj_all
+obj_all/sysinfo.o: sysinfo.c $(filter sysinfo.p.h, $(COMMON_PH)) $(COMMON_H) $(CONFIG_H) $(MT19937AR_H) $(LIBCONFIG_H) $(LIBBACKTRACE_H) $(SYSINFO_INC) | obj_all
-obj_all/%.o: %.c $(COMMON_H) $(CONFIG_H) $(MT19937AR_H) $(LIBCONFIG_H) | $(SYSINFO_INC) obj_all
+obj_all/%.o: %.c $(COMMON_H) $(CONFIG_H) $(MT19937AR_H) $(LIBCONFIG_H) $(LIBBACKTRACE_H) | $(SYSINFO_INC) obj_all
@echo " CC $<"
@$(CC) @CFLAGS@ @DEFS@ $(COMMON_INCLUDE) $(THIRDPARTY_INCLUDE) @CPPFLAGS@ -c $(OUTPUT_OPTION) $<
-obj_sql/%.o: %.c $$(filter %.p.h, $(COMMON_PH)) $(COMMON_H) $(COMMON_SQL_H) $(CONFIG_H) $(LIBCONFIG_H) | $(SYSINFO_INC) obj_sql
+obj_sql/%.o: %.c $$(filter %.p.h, $(COMMON_PH)) $(COMMON_H) $(COMMON_SQL_H) $(CONFIG_H) $(LIBCONFIG_H) $(LIBBACKTRACE_H) | $(SYSINFO_INC) obj_sql
@echo " CC $<"
@$(CC) @CFLAGS@ @DEFS@ $(COMMON_INCLUDE) $(THIRDPARTY_INCLUDE) @MYSQL_CFLAGS@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $<
diff --git a/src/common/atomic.h b/src/common/atomic.h
index 518d2e6ab..b9157373f 100644
--- a/src/common/atomic.h
+++ b/src/common/atomic.h
@@ -103,8 +103,9 @@ forceinline volatile int64 InterlockedExchange64(volatile int64 *target, int64 v
// The __sync functions are available on x86 or ARMv6+
#if !defined(__x86_64__) && !defined(__i386__) \
+ && !defined(__ppc64__) && ! defined(__powerpc64__) \
&& ( !defined(__ARM_ARCH_VERSION__) || __ARM_ARCH_VERSION__ < 6 )
-#error Your Target Platfrom is not supported
+#error Target platform currently not supported
#endif
static forceinline int64 InterlockedExchangeAdd64(volatile int64 *addend, int64 increment){
diff --git a/src/common/cbasetypes.h b/src/common/cbasetypes.h
index 0b5613316..06333a7b2 100644
--- a/src/common/cbasetypes.h
+++ b/src/common/cbasetypes.h
@@ -62,16 +62,24 @@
#endif
// Standardize the ARM platform version, if available (the only values we're interested in right now are >= ARMv6)
+#ifdef __ARM_ARCH
+#define __ARM_ARCH_VERSION__ __ARM_ARCH
+#else
#if defined(__ARMV6__) || defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) \
|| defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6T2__) // gcc ARMv6
#define __ARM_ARCH_VERSION__ 6
-#elif defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7S__) // gcc ARMv7
+#elif defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7S__) // gcc ARMv7
#define __ARM_ARCH_VERSION__ 7
+#elif defined(__ARM_ARCH_8__) || defined(__ARM_ARCH_8A__)
+#define __ARM_ARCH_VERSION__ 8
#elif defined(_M_ARM) // MSVC
#define __ARM_ARCH_VERSION__ _M_ARM
+#elif defined(__TARGET_ARCH_ARM) // RVCT
+#define __ARM_ARCH_VERSION__ __TARGET_ARCH_ARM
#else
#define __ARM_ARCH_VERSION__ 0
#endif
+#endif
// Necessary for __NetBSD_Version__ (defined as VVRR00PP00) on NetBSD
#ifdef __NETBSD__
@@ -95,7 +103,7 @@
// debug function name
#ifndef __NETBSD__
#if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901L
-# if __GNUC__ >= 2
+# if __GNUC__ >= 2 || defined(WIN32)
# define __func__ __FUNCTION__
# else
# define __func__ ""
@@ -410,13 +418,16 @@ typedef char bool;
#define ISALPHA(c) (isalpha((unsigned char)(c)))
#define ISCNTRL(c) (iscntrl((unsigned char)(c)))
#define ISDIGIT(c) (isdigit((unsigned char)(c)))
+#define ISXDIGIT(c) (isxdigit((unsigned char)(c)))
+#define ISBDIGIT(c) ((unsigned char)(c) == '0' || (unsigned char)(c) == '1')
+#define ISODIGIT(c) ((unsigned char)(c) >= '0' && (unsigned char)(c) <= '7')
+#define ISNSEPARATOR(c) ((unsigned char)(c) == '_')
#define ISGRAPH(c) (isgraph((unsigned char)(c)))
#define ISLOWER(c) (islower((unsigned char)(c)))
#define ISPRINT(c) (isprint((unsigned char)(c)))
#define ISPUNCT(c) (ispunct((unsigned char)(c)))
#define ISSPACE(c) (isspace((unsigned char)(c)))
#define ISUPPER(c) (isupper((unsigned char)(c)))
-#define ISXDIGIT(c) (isxdigit((unsigned char)(c)))
#define TOASCII(c) (toascii((unsigned char)(c)))
#define TOLOWER(c) (tolower((unsigned char)(c)))
#define TOUPPER(c) (toupper((unsigned char)(c)))
diff --git a/src/common/core.c b/src/common/core.c
index 54358b85c..5be90a411 100644
--- a/src/common/core.c
+++ b/src/common/core.c
@@ -489,6 +489,7 @@ int main(int argc, char **argv)
iMalloc->init();// needed for Show* in display_title() [FlavioJS]
showmsg->init();
+ nullpo->init();
cmdline->init();
@@ -552,6 +553,7 @@ int main(int argc, char **argv)
cmdline->final();
//sysinfo->final(); Called by iMalloc->final()
+ nullpo->final();
iMalloc->final();
showmsg->final(); // Should be after iMalloc->final()
diff --git a/src/common/hercules.h b/src/common/hercules.h
index 89ea761b4..e62656494 100644
--- a/src/common/hercules.h
+++ b/src/common/hercules.h
@@ -23,11 +23,15 @@
#include "config/core.h"
#include "common/cbasetypes.h"
+#ifdef HERCULES_CORE
+#define HPExport static
+#else // HERCULES_CORE
#ifdef WIN32
- #define HPExport __declspec(dllexport)
-#else
- #define HPExport __attribute__((visibility("default")))
-#endif
+#define HPExport __declspec(dllexport)
+#else // WIN32
+#define HPExport __attribute__((visibility("default")))
+#endif // WIN32
+#endif // HERCULES_CORE
#define HPShared extern
diff --git a/src/common/mmo.h b/src/common/mmo.h
index 687f5a187..e4b5a8bd5 100644
--- a/src/common/mmo.h
+++ b/src/common/mmo.h
@@ -64,7 +64,7 @@
// 20120307 - 2012-03-07aRagexeRE+ - 0x970
#ifndef PACKETVER
- #define PACKETVER 20141022
+ #define PACKETVER 20190530
#endif // PACKETVER
//Uncomment the following line if your client is ragexeRE instead of ragexe (required because of conflicting packets in ragexe vs ragexeRE).
@@ -132,7 +132,9 @@
#endif // PACKETVER_RE && (PACKETVER == 20120410 || PACKETVER == 10120418)
// Comment the following line to disable sc_data saving. [Skotlex]
+#ifndef ENABLE_SC_SAVING
#define ENABLE_SC_SAVING
+#endif
#if PACKETVER_MAIN_NUM >= 20070711 || PACKETVER_RE_NUM >= 20080827 || PACKETVER_AD_NUM >= 20070711 || PACKETVER_SAK_NUM >= 20070628 || defined(PACKETVER_ZERO)
// Comment the following like to disable server-side hot-key saving support. [Skotlex]
@@ -174,7 +176,9 @@
#else
#define MAX_BASE_CARTS 5
#endif
+#ifndef MAX_CARTS
#define MAX_CARTS (MAX_BASE_CARTS + MAX_CARTDECORATION_CARTS)
+#endif
#ifndef MAX_INVENTORY
#if PACKETVER_MAIN_NUM >= 20181219 || PACKETVER_RE_NUM >= 20181219 || PACKETVER_ZERO_NUM >= 20181212
@@ -204,19 +208,31 @@
#endif
//Number of slots carded equipment can have. Never set to less than 4 as they are also used to keep the data of forged items/equipment. [Skotlex]
//Note: The client seems unable to receive data for more than 4 slots due to all related packets having a fixed size.
+#ifndef MAX_SLOTS
#define MAX_SLOTS 4
+#endif
//Max amount of a single stacked item
+#ifndef MAX_AMOUNT
#define MAX_AMOUNT 30000
+#endif
+#ifndef MAX_ZENY
#define MAX_ZENY INT_MAX
+#endif
//Official Limit: 2.1b ( the var that stores the money doesn't go much higher than this by default )
+#ifndef MAX_BANK_ZENY
#define MAX_BANK_ZENY INT_MAX
+#endif
#ifndef MAX_LEVEL
#define MAX_LEVEL 175
#endif
+#ifndef MAX_FAME
#define MAX_FAME 1000000000
+#endif
+#ifndef MAX_CART
#define MAX_CART 100
+#endif
#ifndef MAX_SKILL_DB
#define MAX_SKILL_DB 1314 ///< Maximum number of skills in the skill DB (compacted array size)
#endif
@@ -380,7 +396,10 @@ STATIC_ASSERT(MAX_ITEM_OPTIONS <= 5, "This value is limited by the client and da
#define JOBL_BABY 0x2000
#define JOBL_THIRD 0x4000
-#define SCRIPT_VARNAME_LENGTH 32 ///< Maximum length of a script variable
+#define SCRIPT_VARNAME_LENGTH 32 ///< Maximum length of a script variable's name including affixes and excluding NULL-terminator.
+STATIC_ASSERT(SCRIPT_VARNAME_LENGTH <= 32, "This value is limited by the inter-server communication and database layout and should only be increased if you know the consequences.");
+#define SCRIPT_STRING_VAR_LENGTH 255 ///< Maximum length of strings stored in script variables excluding NULL-terminator.
+STATIC_ASSERT(SCRIPT_STRING_VAR_LENGTH <= 255, "This value is limited by the inter-server communication and database layout and should only be increased if you know the consequences.");
#define INFINITE_DURATION (-1) // Infinite duration for status changes
@@ -1378,6 +1397,27 @@ enum questinfo_type {
QINFO_MERCENARY_CLASS
};
+/** Pet hunger level **/
+enum e_pet_hunger_level {
+ PET_HUNGER_STARVING = 0,
+ PET_HUNGER_VERY_HUNGRY = 10,
+ PET_HUNGER_HUNGRY = 25,
+ PET_HUNGER_NEUTRAL = 75,
+ PET_HUNGER_SATISFIED = 90,
+ PET_HUNGER_STUFFED = 100
+};
+
+/** Pet intimacy level **/
+enum e_pet_intimacy_level {
+ PET_INTIMACY_NONE = 0,
+ PET_INTIMACY_AWKWARD = 1,
+ PET_INTIMACY_SHY = 100,
+ PET_INTIMACY_NEUTRAL = 250,
+ PET_INTIMACY_CORDIAL = 750,
+ PET_INTIMACY_LOYAL = 900,
+ PET_INTIMACY_MAX = 1000
+};
+
/* packet size constant for itemlist */
#if MAX_INVENTORY > MAX_STORAGE && MAX_INVENTORY > MAX_CART
#define MAX_ITEMLIST MAX_INVENTORY
diff --git a/src/common/nullpo.c b/src/common/nullpo.c
index dfb938708..11741745c 100644
--- a/src/common/nullpo.c
+++ b/src/common/nullpo.c
@@ -23,18 +23,106 @@
#include "nullpo.h"
#include "common/showmsg.h"
+#include "common/strlib.h"
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
#include <string.h>
-#ifdef HAVE_EXECINFO
+#if defined(HAVE_LIBBACKTRACE)
+#include "libbacktrace/backtrace.h"
+#include "libbacktrace/backtrace-supported.h"
+# if defined(WIN32)
+# include <windows.h>
+# elif defined(__sun)
+# include <limits.h>
+# elif defined(__linux) || defined(__linux__)
+# include <unistd.h>
+# include <limits.h>
+# elif defined(__APPLE__) && defined(__MACH__)
+# include <mach-o/dyld.h>
+# elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__bsdi__) || defined(__DragonFly__)
+# include <sys/types.h>
+# include <sys/sysctl.h>
+# endif
+#elif defined(HAVE_EXECINFO)
#include <execinfo.h>
-#endif // HAVE_EXECINFO
+#endif // HAVE_LIBBACKTRACE
+
static struct nullpo_interface nullpo_s;
struct nullpo_interface *nullpo;
+#ifdef HAVE_LIBBACKTRACE
+static char executable_path[PATH_MAX];
+
+static void nullpo_error_callback(void *data, const char *msg, int errnum)
+{
+ ShowError("Error: %s (%d)", msg, errnum);
+}
+
+static int nullpo_print_callback(void *data, uintptr_t pc, const char *filename, int lineno, const char *function)
+{
+ ShowError("0x%lx %s\n",
+ (unsigned long) pc,
+ function == NULL ? "???" : function);
+ ShowError("\t%s:%d\n",
+ filename == NULL ? "???" : filename,
+ lineno);
+ return 0;
+}
+
+static void nullpo_backtrace_print(struct backtrace_state *state)
+{
+ backtrace_full(state, 0, nullpo_print_callback, nullpo_error_callback, state);
+}
+
+static bool nullpo_backtrace_get_executable_path(char *buf, size_t length)
+{
+#if defined(WIN32)
+ char *exe_path = NULL;
+ if (_get_pgmptr(&exe_path) != 0)
+ return false;
+ safestrncpy(buf, exe_path, length);
+ return true;
+#elif defined(__sun)
+ if (length < MAX_PATH)
+ return false;
+ if (realpath(getexecname(), buf) == NULL)
+ return false;
+ buf[length - 1] = '\0';
+ return true;
+#elif defined(__linux) || defined(__linux__)
+ ssize_t len = readlink("/proc/self/exe", buf, length);
+ if (len <= 0 || len == length)
+ return false;
+ buf[len] = '\0';
+ return true;
+#elif defined(__APPLE__) && defined(__MACH__)
+ uint32_t len = (uint32_t)length;
+ if (_NSGetExecutablePath(buf, &len) != 0)
+ return false; // buffer too small (!)
+ // resolve symlinks, ., .. if possible
+ char *canonical_path = realpath(buf, NULL);
+ if (canonical_path != NULL) {
+ safestrncpy(buf, canonical_path, length);
+ free(canonical_path);
+ }
+ return true;
+#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__bsdi__) || defined(__DragonFly__)
+ int mib[4];
+ mib[0] = CTL_KERN;
+ mib[1] = KERN_PROC;
+ mib[2] = KERN_PROC_PATHNAME;
+ mib[3] = -1;
+ if (sysctl(mib, 4, buf, &length, NULL, 0) != 0)
+ return false;
+ return true;
+#endif
+ return false;
+}
+#endif // HAVE_LIBBACKTRACE
+
/**
* Reports failed assertions or NULL pointers
*
@@ -46,12 +134,6 @@ struct nullpo_interface *nullpo;
*/
static void assert_report(const char *file, int line, const char *func, const char *targetname, const char *title)
{
-#ifdef HAVE_EXECINFO
- void *array[10];
- int size;
- char **strings;
- int i;
-#endif // HAVE_EXECINFO
if (file == NULL)
file = "??";
@@ -60,21 +142,46 @@ static void assert_report(const char *file, int line, const char *func, const ch
ShowError("--- %s --------------------------------------------\n", title);
ShowError("%s:%d: '%s' in function `%s'\n", file, line, targetname, func);
-#ifdef HAVE_EXECINFO
- size = (int)backtrace(array, 10);
- strings = backtrace_symbols(array, size);
- for (i = 0; i < size; i++)
+#ifdef HAVE_LIBBACKTRACE
+ if (nullpo->backtrace_state != NULL)
+ nullpo_backtrace_print(nullpo->backtrace_state);
+#elif defined(HAVE_EXECINFO)
+ void *array[10];
+ int size = (int)backtrace(array, 10);
+ char **strings = backtrace_symbols(array, size);
+ for (int i = 0; i < size; i++)
ShowError("%s\n", strings[i]);
free(strings);
-#endif // HAVE_EXECINFO
+#endif // HAVE_LIBBACKTRACE
ShowError("--- end %s ----------------------------------------\n", title);
}
+static void nullpo_init(void)
+{
+#ifdef HAVE_LIBBACKTRACE
+ if (!nullpo_backtrace_get_executable_path(executable_path, sizeof executable_path)) {
+ safestrncpy(executable_path, "hercules", sizeof executable_path);
+ }
+ nullpo->backtrace_state = backtrace_create_state(executable_path, BACKTRACE_SUPPORTS_THREADS, nullpo_error_callback, NULL);
+#endif
+}
+
+static void nullpo_final(void)
+{
+ // FIXME: libbacktrace doesn't provide a backtrace_free_state, and it's unsafe to pass the state to
+ // backtrace_free (the function itself uses the state internally). For the time being, we'll leave the state
+ // allocated until program termination as shown in their examples.
+}
+
/**
*
**/
void nullpo_defaults(void)
{
nullpo = &nullpo_s;
+ nullpo->init = nullpo_init;
+ nullpo->final = nullpo_final;
nullpo->assert_report = assert_report;
+
+ nullpo->backtrace_state = NULL;
}
diff --git a/src/common/nullpo.h b/src/common/nullpo.h
index fc5386243..3eb002834 100644
--- a/src/common/nullpo.h
+++ b/src/common/nullpo.h
@@ -28,6 +28,8 @@
// if need disable asserts checks this line can be commented
#define ASSERT_CHECK
+struct backtrace_state;
+
/** Assert */
#if defined(ASSERT_CHECK)
@@ -148,7 +150,12 @@
struct nullpo_interface {
+ void (*init) (void);
+ void (*final) (void);
+
void (*assert_report) (const char *file, int line, const char *func, const char *targetname, const char *title);
+
+ struct backtrace_state *backtrace_state;
};
#ifdef HERCULES_CORE
diff --git a/src/common/packets/packets2020_len_main.h b/src/common/packets/packets2020_len_main.h
index 3349c9872..215f59727 100644
--- a/src/common/packets/packets2020_len_main.h
+++ b/src/common/packets/packets2020_len_main.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018-2020 Hercules Dev Team
- * Copyright (C) 2018-2020 Andrei Karas (4144)
+ * Copyright (C) 2018-2020 Hercules Dev Team
+ * Copyright (C) 2018-2020 Andrei Karas (4144)
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -4617,7 +4617,9 @@ packetLen(0x0b6f, 177)
#endif
// Packet: 0x0b70
-#if PACKETVER >= 20200122
+#if PACKETVER >= 20200318
+packetLen(0x0b70, -1)
+#elif PACKETVER >= 20200122
packetLen(0x0b70, 8)
#endif
@@ -4627,9 +4629,81 @@ packetLen(0x0b71, 177)
#endif
// Packet: 0x0b72
-#if PACKETVER >= 20200122
+#if PACKETVER >= 20200318
+packetLen(0x0b72, -1)
+#elif PACKETVER >= 20200122
packetLen(0x0b72, 4)
#endif
+// Packet: 0x0b73
+#if PACKETVER >= 20200212
+packetLen(0x0b73, 8)
+#endif
+
+// Packet: 0x0b74
+#if PACKETVER >= 20200304
+packetLen(0x0b74, 1026)
+#endif
+
+// Packet: 0x0b75
+#if PACKETVER >= 20200304
+packetLen(0x0b75, 1026)
+#endif
+
+// Packet: 0x0b76
+#if PACKETVER >= 20200401
+packetLen(0x0b76, 77)
+#endif
+
+// Packet: 0x0b77
+#if PACKETVER >= 20200506
+packetLen(0x0b77, -1)
+#endif
+
+// Packet: 0x0b78
+#if PACKETVER >= 20200506
+packetLen(0x0b78, -1)
+#endif
+
+// Packet: 0x0b79
+#if PACKETVER >= 20200506
+packetLen(0x0b79, -1)
+#endif
+
+// Packet: 0x0b7a
+#if PACKETVER >= 20200506
+packetLen(0x0b7a, -1)
+#endif
+
+// Packet: 0x0b7b
+#if PACKETVER >= 20200701
+packetLen(0x0b7b, 118)
+#endif
+
+// Packet: 0x0b7c
+#if PACKETVER >= 20200701
+packetLen(0x0b7c, -1)
+#endif
+
+// Packet: 0x0b7d
+#if PACKETVER >= 20200701
+packetLen(0x0b7d, -1)
+#endif
+
+// Packet: 0x0b7e
+#if PACKETVER >= 20200701
+packetLen(0x0b7e, 60)
+#endif
+
+// Packet: 0x0b7f
+#if PACKETVER >= 20200701
+packetLen(0x0b7f, 10)
+#endif
+
+// Packet: 0x0b80
+#if PACKETVER >= 20200701
+packetLen(0x0b80, 10)
+#endif
+
#endif /* COMMON_PACKETS2020_LEN_MAIN_H */
diff --git a/src/common/packets/packets2020_len_re.h b/src/common/packets/packets2020_len_re.h
index b33278c1c..7296d86c5 100644
--- a/src/common/packets/packets2020_len_re.h
+++ b/src/common/packets/packets2020_len_re.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018-2020 Hercules Dev Team
- * Copyright (C) 2018-2020 Andrei Karas (4144)
+ * Copyright (C) 2018-2020 Hercules Dev Team
+ * Copyright (C) 2018-2020 Andrei Karas (4144)
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -4623,7 +4623,9 @@ packetLen(0x0b6f, 177)
#endif
// Packet: 0x0b70
-#if PACKETVER >= 20200122
+#if PACKETVER >= 20200709
+packetLen(0x0b70, -1)
+#elif PACKETVER >= 20200122
packetLen(0x0b70, 8)
#endif
@@ -4633,9 +4635,81 @@ packetLen(0x0b71, 177)
#endif
// Packet: 0x0b72
-#if PACKETVER >= 20200122
+#if PACKETVER >= 20200709
+packetLen(0x0b72, -1)
+#elif PACKETVER >= 20200122
packetLen(0x0b72, 4)
#endif
+// Packet: 0x0b73
+#if PACKETVER >= 20200212
+packetLen(0x0b73, 8)
+#endif
+
+// Packet: 0x0b74
+#if PACKETVER >= 20200304
+packetLen(0x0b74, 1026)
+#endif
+
+// Packet: 0x0b75
+#if PACKETVER >= 20200304
+packetLen(0x0b75, 1026)
+#endif
+
+// Packet: 0x0b76
+#if PACKETVER >= 20200709
+packetLen(0x0b76, 77)
+#endif
+
+// Packet: 0x0b77
+#if PACKETVER >= 20200709
+packetLen(0x0b77, -1)
+#endif
+
+// Packet: 0x0b78
+#if PACKETVER >= 20200709
+packetLen(0x0b78, -1)
+#endif
+
+// Packet: 0x0b79
+#if PACKETVER >= 20200709
+packetLen(0x0b79, -1)
+#endif
+
+// Packet: 0x0b7a
+#if PACKETVER >= 20200709
+packetLen(0x0b7a, -1)
+#endif
+
+// Packet: 0x0b7b
+#if PACKETVER >= 20200709
+packetLen(0x0b7b, 118)
+#endif
+
+// Packet: 0x0b7c
+#if PACKETVER >= 20200709
+packetLen(0x0b7c, -1)
+#endif
+
+// Packet: 0x0b7d
+#if PACKETVER >= 20200709
+packetLen(0x0b7d, -1)
+#endif
+
+// Packet: 0x0b7e
+#if PACKETVER >= 20200709
+packetLen(0x0b7e, 60)
+#endif
+
+// Packet: 0x0b7f
+#if PACKETVER >= 20200709
+packetLen(0x0b7f, 10)
+#endif
+
+// Packet: 0x0b80
+#if PACKETVER >= 20200709
+packetLen(0x0b80, 10)
+#endif
+
#endif /* COMMON_PACKETS2020_LEN_RE_H */
diff --git a/src/common/packets/packets2020_len_zero.h b/src/common/packets/packets2020_len_zero.h
index 153b66286..cba80e90c 100644
--- a/src/common/packets/packets2020_len_zero.h
+++ b/src/common/packets/packets2020_len_zero.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018-2020 Hercules Dev Team
- * Copyright (C) 2018-2020 Andrei Karas (4144)
+ * Copyright (C) 2018-2020 Hercules Dev Team
+ * Copyright (C) 2018-2020 Andrei Karas (4144)
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -4617,7 +4617,9 @@ packetLen(0x0b6f, 177)
#endif
// Packet: 0x0b70
-#if PACKETVER >= 20200129
+#if PACKETVER >= 20200401
+packetLen(0x0b70, -1)
+#elif PACKETVER >= 20200129
packetLen(0x0b70, 8)
#endif
@@ -4627,9 +4629,81 @@ packetLen(0x0b71, 177)
#endif
// Packet: 0x0b72
-#if PACKETVER >= 20200129
+#if PACKETVER >= 20200401
+packetLen(0x0b72, -1)
+#elif PACKETVER >= 20200129
packetLen(0x0b72, 4)
#endif
+// Packet: 0x0b73
+#if PACKETVER >= 20200212
+packetLen(0x0b73, 8)
+#endif
+
+// Packet: 0x0b74
+#if PACKETVER >= 20200304
+packetLen(0x0b74, 1026)
+#endif
+
+// Packet: 0x0b75
+#if PACKETVER >= 20200304
+packetLen(0x0b75, 1026)
+#endif
+
+// Packet: 0x0b76
+#if PACKETVER >= 20200401
+packetLen(0x0b76, 77)
+#endif
+
+// Packet: 0x0b77
+#if PACKETVER >= 20200506
+packetLen(0x0b77, -1)
+#endif
+
+// Packet: 0x0b78
+#if PACKETVER >= 20200506
+packetLen(0x0b78, -1)
+#endif
+
+// Packet: 0x0b79
+#if PACKETVER >= 20200506
+packetLen(0x0b79, -1)
+#endif
+
+// Packet: 0x0b7a
+#if PACKETVER >= 20200506
+packetLen(0x0b7a, -1)
+#endif
+
+// Packet: 0x0b7b
+#if PACKETVER >= 20200701
+packetLen(0x0b7b, 118)
+#endif
+
+// Packet: 0x0b7c
+#if PACKETVER >= 20200701
+packetLen(0x0b7c, -1)
+#endif
+
+// Packet: 0x0b7d
+#if PACKETVER >= 20200701
+packetLen(0x0b7d, -1)
+#endif
+
+// Packet: 0x0b7e
+#if PACKETVER >= 20200701
+packetLen(0x0b7e, 60)
+#endif
+
+// Packet: 0x0b7f
+#if PACKETVER >= 20200701
+packetLen(0x0b7f, 10)
+#endif
+
+// Packet: 0x0b80
+#if PACKETVER >= 20200701
+packetLen(0x0b80, 10)
+#endif
+
#endif /* COMMON_PACKETS2020_LEN_ZERO_H */
diff --git a/src/common/packets/packets_len_main.h b/src/common/packets/packets_len_main.h
index 7b93b35b0..365b0af6f 100644
--- a/src/common/packets/packets_len_main.h
+++ b/src/common/packets/packets_len_main.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018-2020 Hercules Dev Team
- * Copyright (C) 2018-2020 Andrei Karas (4144)
+ * Copyright (C) 2018-2020 Hercules Dev Team
+ * Copyright (C) 2018-2020 Andrei Karas (4144)
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/common/packets/packets_len_re.h b/src/common/packets/packets_len_re.h
index 23a507886..302381722 100644
--- a/src/common/packets/packets_len_re.h
+++ b/src/common/packets/packets_len_re.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018-2020 Hercules Dev Team
- * Copyright (C) 2018-2020 Andrei Karas (4144)
+ * Copyright (C) 2018-2020 Hercules Dev Team
+ * Copyright (C) 2018-2020 Andrei Karas (4144)
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/common/packets/packets_len_zero.h b/src/common/packets/packets_len_zero.h
index 9f1595459..c07f89e3f 100644
--- a/src/common/packets/packets_len_zero.h
+++ b/src/common/packets/packets_len_zero.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018-2020 Hercules Dev Team
- * Copyright (C) 2018-2020 Andrei Karas (4144)
+ * Copyright (C) 2018-2020 Hercules Dev Team
+ * Copyright (C) 2018-2020 Andrei Karas (4144)
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/login/Makefile.in b/src/login/Makefile.in
index 464b33e56..7252eea04 100644
--- a/src/login/Makefile.in
+++ b/src/login/Makefile.in
@@ -36,6 +36,19 @@ LIBCONFIG_OBJ = $(addprefix $(LIBCONFIG_D)/, libconfig.o grammar.o scanctx.o \
LIBCONFIG_H = $(addprefix $(LIBCONFIG_D)/, libconfig.h grammar.h parsectx.h \
scanctx.h scanner.h strbuf.h wincompat.h)
+ifeq (@USE_LIBBACKTRACE@,yes)
+ LIBBACKTRACE_D = $(THIRDPARTY_D)/libbacktrace
+ LIBBACKTRACE_OBJ = $(addprefix $(LIBBACKTRACE_D)/, atomic.o backtrace.o \
+ dwarf.o @LIBBACKTRACE_FORMAT_FILE@ fileline.o mmapio.o mmap.o posix.o print.o \
+ simple.o sort.o state.o)
+ LIBBACKTRACE_H = $(addprefix $(LIBBACKTRACE_D)/, backtrace.h \
+ backtrace-supported.h config.h filenames.h internal.h)
+else
+ LIBBACKTRACE_D =
+ LIBBACKTRACE_OBJ =
+ LIBBACKTRACE_H =
+endif
+
MT19937AR_D = $(THIRDPARTY_D)/mt19937ar
MT19937AR_OBJ = $(MT19937AR_D)/mt19937ar.o
MT19937AR_H = $(MT19937AR_D)/mt19937ar.h
@@ -47,7 +60,7 @@ LOGIN_PH = lclif.p.h
HAVE_MYSQL=@HAVE_MYSQL@
ifeq ($(HAVE_MYSQL),yes)
- LOGIN_SERVER_SQL_DEPENDS=$(LOGIN_OBJ) $(COMMON_D)/obj_all/common.a $(COMMON_D)/obj_sql/common_sql.a $(MT19937AR_OBJ) $(LIBCONFIG_OBJ) $(SYSINFO_INC)
+ LOGIN_SERVER_SQL_DEPENDS=$(LOGIN_OBJ) $(COMMON_D)/obj_all/common.a $(COMMON_D)/obj_sql/common_sql.a $(MT19937AR_OBJ) $(LIBCONFIG_OBJ) $(LIBBACKTRACE_OBJ) $(SYSINFO_INC)
else
LOGIN_SERVER_SQL_DEPENDS=needs_mysql
endif
@@ -86,7 +99,7 @@ help:
Makefile: Makefile.in
@$(MAKE) -C ../.. src/login/Makefile
-$(SYSINFO_INC): $(LOGIN_C) $(LOGIN_PH) $(LOGIN_H) $(COMMON_H) $(CONFIG_H) $(MT19937AR_H) $(LIBCONFIG_H)
+$(SYSINFO_INC): $(LOGIN_C) $(LOGIN_PH) $(LOGIN_H) $(COMMON_H) $(CONFIG_H) $(MT19937AR_H) $(LIBCONFIG_H) $(LIBBACKTRACE_H)
@echo " MAKE $@"
@$(MAKE) -C ../.. sysinfo
@@ -107,7 +120,7 @@ login-server: ../../login-server@EXEEXT@
../../login-server@EXEEXT@: $(LOGIN_SERVER_SQL_DEPENDS) Makefile
@echo " LD $(notdir $@)"
@$(CC) @STATIC@ @LDFLAGS@ -o ../../login-server@EXEEXT@ $(LOGIN_OBJ) $(COMMON_D)/obj_all/common.a $(COMMON_D)/obj_sql/common_sql.a \
- $(MT19937AR_OBJ) $(LIBCONFIG_OBJ) @LIBS@ @MYSQL_LIBS@
+ $(MT19937AR_OBJ) $(LIBCONFIG_OBJ) $(LIBBACKTRACE_OBJ) @LIBS@ @MYSQL_LIBS@
# missing object files
$(COMMON_D)/obj_all/common.a:
@@ -126,10 +139,14 @@ $(LIBCONFIG_OBJ):
@echo " MAKE $@"
@$(MAKE) -C $(LIBCONFIG_D)
+$(LIBBACKTRACE_OBJ):
+ @echo " MAKE $@"
+ @$(MAKE) -C $(LIBBACKTRACE_D)
+
.SECONDEXPANSION:
# login object files
-obj_sql/%.o: %.c $$(filter %.p.h, $(LOGIN_PH)) $(LOGIN_H) $(COMMON_H) $(CONFIG_H) $(MT19937AR_H) $(LIBCONFIG_H) | obj_sql
+obj_sql/%.o: %.c $$(filter %.p.h, $(LOGIN_PH)) $(LOGIN_H) $(COMMON_H) $(CONFIG_H) $(MT19937AR_H) $(LIBCONFIG_H) $(LIBBACKTRACE_H) | obj_sql
@echo " CC $<"
@$(CC) @CFLAGS@ @DEFS@ $(COMMON_INCLUDE) $(THIRDPARTY_INCLUDE) @MYSQL_CFLAGS@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $<
diff --git a/src/login/account.c b/src/login/account.c
index 3632c257a..ec0bc81e8 100644
--- a/src/login/account.c
+++ b/src/login/account.c
@@ -632,7 +632,8 @@ static void account_mmo_save_accreg2(AccountDB *self, int fd, int account_id, in
sql_handle = db->accounts;
if (count) {
int cursor = 14, i;
- char key[SCRIPT_VARNAME_LENGTH+1], sval[254];
+ char key[SCRIPT_VARNAME_LENGTH + 1];
+ char sval[SCRIPT_STRING_VAR_LENGTH + 1];
for (i = 0; i < count; i++) {
unsigned int index;
@@ -657,8 +658,8 @@ static void account_mmo_save_accreg2(AccountDB *self, int fd, int account_id, in
/* str */
case 2:
len = RFIFOB(fd, cursor);
- safestrncpy(sval, RFIFOP(fd, cursor + 1), min((int)sizeof(sval), len));
- cursor += len + 1;
+ safestrncpy(sval, RFIFOP(fd, cursor + 1), min((int)sizeof(sval), len + 1));
+ cursor += len + 2;
if( SQL_ERROR == SQL->Query(sql_handle, "REPLACE INTO `%s` (`account_id`,`key`,`index`,`value`) VALUES ('%d','%s','%u','%s')", db->global_acc_reg_str_db, account_id, key, index, sval) )
Sql_ShowDebug(sql_handle);
break;
@@ -719,13 +720,13 @@ static void account_mmo_send_accreg2(AccountDB *self, int fd, int account_id, in
plen += 4;
SQL->GetData(sql_handle, 2, &data, NULL);
- len = strlen(data)+1;
+ len = strlen(data);
- WFIFOB(fd, plen) = (unsigned char)len;/* won't be higher; the column size is 254 */
+ WFIFOB(fd, plen) = (unsigned char)len; // Won't be higher; the column size is 255.
plen += 1;
- safestrncpy(WFIFOP(fd,plen), data, len);
- plen += len;
+ safestrncpy(WFIFOP(fd, plen), data, len + 1);
+ plen += len + 1;
WFIFOW(fd, 14) += 1;
diff --git a/src/login/login.c b/src/login/login.c
index 4201a8b4e..32c935d75 100644
--- a/src/login/login.c
+++ b/src/login/login.c
@@ -1406,10 +1406,10 @@ static void login_client_login_mobile_otp_request(int fd, struct login_session_d
static void login_char_server_connection_status(int fd, struct login_session_data* sd, uint8 status) __attribute__((nonnull (2)));
static void login_char_server_connection_status(int fd, struct login_session_data* sd, uint8 status)
{
- WFIFOHEAD(fd,3);
- WFIFOW(fd,0) = 0x2711;
- WFIFOB(fd,2) = status;
- WFIFOSET(fd,3);
+ WFIFOHEAD(fd, 3);
+ WFIFOW(fd, 0) = 0x2711;
+ WFIFOB(fd, 2) = status;
+ WFIFOSET2(fd, 3);
}
// CA_CHARSERVERCONNECT
@@ -1758,7 +1758,7 @@ static bool login_config_read_permission_hash(const char *filename, struct confi
static void login_clear_dnsbl_servers(void)
{
while (VECTOR_LENGTH(login->config->dnsbl_servers) > 0) {
- aFree(&VECTOR_POP(login->config->dnsbl_servers));
+ aFree(VECTOR_POP(login->config->dnsbl_servers));
}
VECTOR_CLEAR(login->config->dnsbl_servers);
}
diff --git a/src/map/Makefile.in b/src/map/Makefile.in
index 6dbebb5ad..75093662f 100644
--- a/src/map/Makefile.in
+++ b/src/map/Makefile.in
@@ -36,6 +36,19 @@ LIBCONFIG_OBJ = $(addprefix $(LIBCONFIG_D)/, libconfig.o grammar.o scanctx.o \
LIBCONFIG_H = $(addprefix $(LIBCONFIG_D)/, libconfig.h grammar.h parsectx.h \
scanctx.h scanner.h strbuf.h wincompat.h)
+ifeq (@USE_LIBBACKTRACE@,yes)
+ LIBBACKTRACE_D = $(THIRDPARTY_D)/libbacktrace
+ LIBBACKTRACE_OBJ = $(addprefix $(LIBBACKTRACE_D)/, atomic.o backtrace.o \
+ dwarf.o @LIBBACKTRACE_FORMAT_FILE@ fileline.o mmapio.o mmap.o posix.o print.o \
+ simple.o sort.o state.o)
+ LIBBACKTRACE_H = $(addprefix $(LIBBACKTRACE_D)/, backtrace.h \
+ backtrace-supported.h config.h filenames.h internal.h)
+else
+ LIBBACKTRACE_D =
+ LIBBACKTRACE_OBJ =
+ LIBBACKTRACE_H =
+endif
+
MT19937AR_D = $(THIRDPARTY_D)/mt19937ar
MT19937AR_OBJ = $(MT19937AR_D)/mt19937ar.o
MT19937AR_H = $(MT19937AR_D)/mt19937ar.h
@@ -60,7 +73,7 @@ MAP_PH = refine.p.h
HAVE_MYSQL=@HAVE_MYSQL@
ifeq ($(HAVE_MYSQL),yes)
- MAP_SERVER_SQL_DEPENDS=$(MAP_OBJ) $(COMMON_D)/obj_all/common.a $(COMMON_D)/obj_sql/common_sql.a $(MT19937AR_OBJ) $(LIBCONFIG_OBJ) $(SYSINFO_INC)
+ MAP_SERVER_SQL_DEPENDS=$(MAP_OBJ) $(COMMON_D)/obj_all/common.a $(COMMON_D)/obj_sql/common_sql.a $(MT19937AR_OBJ) $(LIBCONFIG_OBJ) $(LIBBACKTRACE_OBJ) $(SYSINFO_INC)
else
MAP_SERVER_SQL_DEPENDS=needs_mysql
endif
@@ -99,7 +112,7 @@ help:
Makefile: Makefile.in
@$(MAKE) -C ../.. src/map/Makefile
-$(SYSINFO_INC): $(MAP_C) $(MAP_PH) $(MAP_H) $(COMMON_H) $(CONFIG_H) $(MT19937AR_H) $(LIBCONFIG_H)
+$(SYSINFO_INC): $(MAP_C) $(MAP_PH) $(MAP_H) $(COMMON_H) $(CONFIG_H) $(MT19937AR_H) $(LIBCONFIG_H) $(LIBBACKTRACE_H)
@echo " MAKE $@"
@$(MAKE) -C ../.. sysinfo
@@ -120,7 +133,7 @@ map-server: ../../map-server@EXEEXT@
../../map-server@EXEEXT@: $(MAP_SERVER_SQL_DEPENDS) Makefile
@echo " LD $(notdir $@)"
@$(CC) @STATIC@ @LDFLAGS@ -o ../../map-server@EXEEXT@ $(MAP_OBJ) $(COMMON_D)/obj_all/common.a $(COMMON_D)/obj_sql/common_sql.a \
- $(MT19937AR_OBJ) $(LIBCONFIG_OBJ) @LIBS@ @MYSQL_LIBS@
+ $(MT19937AR_OBJ) $(LIBCONFIG_OBJ) $(LIBBACKTRACE_OBJ) @LIBS@ @MYSQL_LIBS@
# missing object files
$(COMMON_D)/obj_all/common.a:
@@ -139,10 +152,14 @@ $(LIBCONFIG_OBJ):
@echo " MAKE $@"
@$(MAKE) -C $(LIBCONFIG_D)
+$(LIBBACKTRACE_OBJ):
+ @echo " MAKE $@"
+ @$(MAKE) -C $(LIBBACKTRACE_D)
+
.SECONDEXPANSION:
# map object files
-obj_sql/%.o: %.c $$(filter %.p.h, $(MAP_PH)) $(MAP_H) $(COMMON_H) $(CONFIG_H) $(MT19937AR_H) $(LIBCONFIG_H) | obj_sql
+obj_sql/%.o: %.c $$(filter %.p.h, $(MAP_PH)) $(MAP_H) $(COMMON_H) $(CONFIG_H) $(MT19937AR_H) $(LIBCONFIG_H) $(LIBBACKTRACE_H) | obj_sql
@echo " CC $<"
@$(CC) @CFLAGS@ @DEFS@ $(COMMON_INCLUDE) $(THIRDPARTY_INCLUDE) @MYSQL_CFLAGS@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $<
diff --git a/src/map/achievement.c b/src/map/achievement.c
index e6a9ae3be..0b0d9749b 100644
--- a/src/map/achievement.c
+++ b/src/map/achievement.c
@@ -194,6 +194,8 @@ static void achievement_progress_add(struct map_session_data *sd, const struct a
// Check if the Achievement is complete.
if (achievement->check_complete(sd, ad)) {
achievement->validate_achieve(sd, ad->id);
+ if ((ach = achievement->ensure(sd, ad)) == NULL)
+ return;
ach->completed_at = time(NULL);
}
@@ -232,6 +234,8 @@ static void achievement_progress_set(struct map_session_data *sd, const struct a
if (achievement->check_complete(sd, ad)) {
achievement->validate_achieve(sd, ad->id);
+ if ((ach = achievement->ensure(sd, ad)) == NULL)
+ return;
ach->completed_at = time(NULL);
}
diff --git a/src/map/atcommand.c b/src/map/atcommand.c
index 707522423..9fb2540ef 100644
--- a/src/map/atcommand.c
+++ b/src/map/atcommand.c
@@ -962,39 +962,10 @@ ACMD(option)
*------------------------------------------*/
ACMD(hide)
{
- if (pc_isinvisible(sd)) {
- sd->sc.option &= ~OPTION_INVISIBLE;
- if (sd->disguise != -1 )
- status->set_viewdata(&sd->bl, sd->disguise);
- else
- status->set_viewdata(&sd->bl, sd->status.class);
- clif->message(fd, msg_fd(fd,10)); // Invisible: Off
-
- // increment the number of pvp players on the map
- map->list[sd->bl.m].users_pvp++;
-
- if( map->list[sd->bl.m].flag.pvp && !map->list[sd->bl.m].flag.pvp_nocalcrank ) {
- // register the player for ranking calculations
- sd->pvp_timer = timer->add( timer->gettick() + 200, pc->calc_pvprank_timer, sd->bl.id, 0 );
- }
- //bugreport:2266
- map->foreachinmovearea(clif->insight, &sd->bl, AREA_SIZE, sd->bl.x, sd->bl.y, BL_ALL, &sd->bl);
- } else {
- clif->clearunit_area(&sd->bl, CLR_OUTSIGHT);
- sd->sc.option |= OPTION_INVISIBLE;
- sd->vd.class = INVISIBLE_CLASS;
- clif->message(fd, msg_fd(fd,11)); // Invisible: On
-
- // decrement the number of pvp players on the map
- map->list[sd->bl.m].users_pvp--;
-
- if( map->list[sd->bl.m].flag.pvp && !map->list[sd->bl.m].flag.pvp_nocalcrank && sd->pvp_timer != INVALID_TIMER ) {
- // unregister the player for ranking
- timer->delete( sd->pvp_timer, pc->calc_pvprank_timer );
- sd->pvp_timer = INVALID_TIMER;
- }
- }
- clif->changeoption(&sd->bl);
+ if (pc_isinvisible(sd))
+ pc->unhide(sd, true);
+ else
+ pc->hide(sd, true);
return true;
}
@@ -1197,17 +1168,17 @@ ACMD(item)
memset(item_name, '\0', sizeof(item_name));
- if (!strcmpi(info->command,"itembound") && (!*message || (
- sscanf(message, "\"%99[^\"]\" %12d %12d", item_name, &number, &bound) < 2 &&
- sscanf(message, "%99s %12d %12d", item_name, &number, &bound) < 2
- ))) {
- clif->message(fd, msg_fd(fd,295)); // Please enter an item name or ID (usage: @itembound <item name/ID> <quantity> <bound_type>).
+ if (!strcmpi(info->command, "itembound") && (!*message || (
+ sscanf(message, "\"%99[^\"]\" %12d %12d", item_name, &number, &bound) < 1 &&
+ sscanf(message, "%99s %12d %12d", item_name, &number, &bound) < 1
+ ))) {
+ clif->message(fd, msg_fd(fd, 295)); // Please enter an item name or ID (usage: @itembound <item name/ID> <quantity> <bound_type>).
return false;
} else if (!*message
- || ( sscanf(message, "\"%99[^\"]\" %12d", item_name, &number) < 1
- && sscanf(message, "%99s %12d", item_name, &number) < 1
- )) {
- clif->message(fd, msg_fd(fd,983)); // Please enter an item name or ID (usage: @item <item name/ID> <quantity>).
+ || (sscanf(message, "\"%99[^\"]\" %12d", item_name, &number) < 1
+ && sscanf(message, "%99s %12d", item_name, &number) < 1
+ )) {
+ clif->message(fd, msg_fd(fd, 983)); // Please enter an item name or ID (usage: @item <item name/ID> <quantity>).
return false;
}
@@ -1215,33 +1186,33 @@ ACMD(item)
number = 1;
if ((item_data = itemdb->search_name(item_name)) == NULL &&
- (item_data = itemdb->exists(atoi(item_name))) == NULL)
+ (item_data = itemdb->exists(atoi(item_name))) == NULL)
{
- clif->message(fd, msg_fd(fd,19)); // Invalid item ID or name.
+ clif->message(fd, msg_fd(fd, 19)); // Invalid item ID or name.
return false;
}
- if(!strcmpi(info->command,"itembound") ) {
- if( !(bound >= IBT_MIN && bound <= IBT_MAX) ) {
- clif->message(fd, msg_fd(fd,298)); // Invalid bound type
+ if (!strcmpi(info->command, "itembound")) {
+ if (!(bound >= IBT_MIN && bound <= IBT_MAX)) {
+ clif->message(fd, msg_fd(fd, 298)); // Invalid bound type
return false;
}
- switch( (enum e_item_bound_type)bound ) {
- case IBT_CHARACTER:
- case IBT_ACCOUNT:
- break; /* no restrictions */
- case IBT_PARTY:
- if( !sd->status.party_id ) {
- clif->message(fd, msg_fd(fd,1498)); //You can't add a party bound item to a character without party!
- return false;
- }
- break;
- case IBT_GUILD:
- if( !sd->status.guild_id ) {
- clif->message(fd, msg_fd(fd,1499)); //You can't add a guild bound item to a character without guild!
- return false;
- }
- break;
+ switch ((enum e_item_bound_type)bound) {
+ case IBT_CHARACTER:
+ case IBT_ACCOUNT:
+ break; /* no restrictions */
+ case IBT_PARTY:
+ if (!sd->status.party_id) {
+ clif->message(fd, msg_fd(fd, 1498)); //You can't add a party bound item to a character without party!
+ return false;
+ }
+ break;
+ case IBT_GUILD:
+ if (!sd->status.guild_id) {
+ clif->message(fd, msg_fd(fd, 1499)); //You can't add a guild bound item to a character without guild!
+ return false;
+ }
+ break;
}
}
@@ -1249,8 +1220,8 @@ ACMD(item)
get_count = number;
//Check if it's stackable.
if (!itemdb->isstackable2(item_data)) {
- if( bound && (item_data->type == IT_PETEGG || item_data->type == IT_PETARMOR) ) {
- clif->message(fd, msg_fd(fd,498)); // Cannot create bounded pet eggs or pet armors.
+ if (bound && (item_data->type == IT_PETEGG || item_data->type == IT_PETARMOR)) {
+ clif->message(fd, msg_fd(fd, 498)); // Cannot create bounded pet eggs or pet armors.
return false;
}
get_count = 1;
@@ -1270,7 +1241,7 @@ ACMD(item)
}
if (flag == 0)
- clif->message(fd, msg_fd(fd,18)); // Item created.
+ clif->message(fd, msg_fd(fd, 18)); // Item created.
return true;
}
@@ -1283,37 +1254,37 @@ ACMD(item2)
struct item_data *item_data;
char item_name[100];
int item_id, number = 0, bound = 0;
- int identify = 0, refine_level = 0, attr = 0;
+ int identify = 1, refine_level = 0, attr = ATTR_NONE;
int c1 = 0, c2 = 0, c3 = 0, c4 = 0;
memset(item_name, '\0', sizeof(item_name));
- if (!strcmpi(info->command,"itembound2") && (!*message || (
+ if (!strcmpi(info->command, "itembound2") && (!*message || (
sscanf(message, "\"%99[^\"]\" %12d %12d %12d %12d %12d %12d %12d %12d %12d", item_name, &number, &identify, &refine_level, &attr, &c1, &c2, &c3, &c4, &bound) < 10 &&
- sscanf(message, "%99s %12d %12d %12d %12d %12d %12d %12d %12d %12d", item_name, &number, &identify, &refine_level, &attr, &c1, &c2, &c3, &c4, &bound) < 10 ))) {
- clif->message(fd, msg_fd(fd,296)); // Please enter all parameters (usage: @itembound2 <item name/ID> <quantity>
- clif->message(fd, msg_fd(fd,297)); // <identify_flag> <refine> <attribute> <card1> <card2> <card3> <card4> <bound_type>).
+ sscanf(message, "%99s %12d %12d %12d %12d %12d %12d %12d %12d %12d", item_name, &number, &identify, &refine_level, &attr, &c1, &c2, &c3, &c4, &bound) < 10))) {
+ clif->message(fd, msg_fd(fd, 296)); // Please enter all parameters (usage: @itembound2 <item name/ID> <quantity>
+ clif->message(fd, msg_fd(fd, 297)); // <identify_flag> <refine> <attribute> <card1> <card2> <card3> <card4> <bound_type>).
return false;
} else if (!*message
- || ( sscanf(message, "\"%99[^\"]\" %12d %12d %12d %12d %12d %12d %12d %12d", item_name, &number, &identify, &refine_level, &attr, &c1, &c2, &c3, &c4) < 9
- && sscanf(message, "%99s %12d %12d %12d %12d %12d %12d %12d %12d", item_name, &number, &identify, &refine_level, &attr, &c1, &c2, &c3, &c4) < 9
- )) {
- clif->message(fd, msg_fd(fd,984)); // Please enter all parameters (usage: @item2 <item name/ID> <quantity>
- clif->message(fd, msg_fd(fd,985)); // <identify_flag> <refine> <attribute> <card1> <card2> <card3> <card4>).
+ || (sscanf(message, "\"%99[^\"]\" %12d %12d %12d %12d %12d %12d %12d %12d", item_name, &number, &identify, &refine_level, &attr, &c1, &c2, &c3, &c4) < 1
+ && sscanf(message, "%99s %12d %12d %12d %12d %12d %12d %12d %12d", item_name, &number, &identify, &refine_level, &attr, &c1, &c2, &c3, &c4) < 1
+ )) {
+ clif->message(fd, msg_fd(fd, 984)); // Please enter all parameters (usage: @item2 <item name/ID> <quantity>
+ clif->message(fd, msg_fd(fd, 985)); // <identify_flag> <refine> <attribute> <card1> <card2> <card3> <card4>).
return false;
}
if (number <= 0)
number = 1;
- if( !strcmpi(info->command,"itembound2") && !(bound >= IBT_MIN && bound <= IBT_MAX) ) {
- clif->message(fd, msg_fd(fd,298)); // Invalid bound type
+ if (!strcmpi(info->command, "itembound2") && !(bound >= IBT_MIN && bound <= IBT_MAX)) {
+ clif->message(fd, msg_fd(fd, 298)); // Invalid bound type
return false;
}
item_id = 0;
if ((item_data = itemdb->search_name(item_name)) != NULL ||
- (item_data = itemdb->exists(atoi(item_name))) != NULL)
+ (item_data = itemdb->exists(atoi(item_name))) != NULL)
item_id = item_data->nameid;
if (item_id > 500) {
@@ -1321,11 +1292,11 @@ ACMD(item2)
int loop, get_count, i;
loop = 1;
get_count = number;
- if( !strcmpi(info->command,"itembound2") )
- bound = 1;
- if( !itemdb->isstackable2(item_data) ) {
- if( bound && (item_data->type == IT_PETEGG || item_data->type == IT_PETARMOR) ) {
- clif->message(fd, msg_fd(fd,498)); // Cannot create bounded pet eggs or pet armors.
+ if (!strcmpi(info->command, "itembound2"))
+ bound = IBT_ACCOUNT;
+ if (!itemdb->isstackable2(item_data)) {
+ if (bound && (item_data->type == IT_PETEGG || item_data->type == IT_PETARMOR)) {
+ clif->message(fd, msg_fd(fd, 498)); // Cannot create bounded pet eggs or pet armors.
return false;
}
loop = number;
@@ -1338,7 +1309,8 @@ ACMD(item2)
refine_level = 0;
} else {
identify = 1;
- refine_level = attr = 0;
+ refine_level = 0;
+ attr = ATTR_NONE;
}
refine_level = cap_value(refine_level, 0, MAX_REFINE);
for (i = 0; i < loop; i++) {
@@ -1358,9 +1330,9 @@ ACMD(item2)
}
if (flag == 0)
- clif->message(fd, msg_fd(fd,18)); // Item created.
+ clif->message(fd, msg_fd(fd, 18)); // Item created.
} else {
- clif->message(fd, msg_fd(fd,19)); // Invalid item ID or name.
+ clif->message(fd, msg_fd(fd, 19)); // Invalid item ID or name.
return false;
}
@@ -2744,42 +2716,49 @@ ACMD(guildlevelup)
return true;
}
-/*==========================================
+/**
+ * Creates a pet egg in the character's inventory.
*
- *------------------------------------------*/
+ * @code{.herc}
+ * @makeegg <pet>
+ * @endcode
+ *
+ **/
ACMD(makeegg)
{
- struct item_data *item_data;
- int id, pet_id;
-
- if (!*message) {
- clif->message(fd, msg_fd(fd,1015)); // Please enter a monster/egg name/ID (usage: @makeegg <pet>).
+ if (*message == '\0') {
+ clif->message(fd, msg_fd(fd, 1015)); // Please enter a monster/egg name/ID (usage: @makeegg <pet>).
return false;
}
- if ((item_data = itemdb->search_name(message)) != NULL) // for egg name
+ struct item_data *item_data = itemdb->search_name(message);
+ int id;
+
+ if (item_data != NULL) { // Egg name.
id = item_data->nameid;
- else
- if ((id = mob->db_searchname(message)) != 0) // for monster name
- ;
- else
- id = atoi(message);
+ } else {
+ id = mob->db_searchname(message); // Monster name.
+
+ if (id == 0)
+ id = atoi(message); // Egg/monster ID.
+ }
+
+ int pet_id = pet->search_petDB_index(id, PET_CLASS);
- pet_id = pet->search_petDB_index(id, PET_CLASS);
- if (pet_id < 0)
+ if (pet_id == INDEX_NOT_FOUND)
pet_id = pet->search_petDB_index(id, PET_EGG);
- if (pet_id >= 0) {
- sd->catch_target_class = pet->db[pet_id].class_;
- intif->create_pet(
- sd->status.account_id, sd->status.char_id,
- pet->db[pet_id].class_, mob->db(pet->db[pet_id].class_)->lv,
- pet->db[pet_id].EggID, 0, (short)pet->db[pet_id].intimate,
- 100, 0, 1, pet->db[pet_id].jname);
- } else {
- clif->message(fd, msg_fd(fd,180)); // The monster/egg name/id doesn't exist.
+
+ if (pet_id == INDEX_NOT_FOUND) {
+ clif->message(fd, msg_fd(fd, 180)); // The monster/egg name/ID doesn't exist.
return false;
}
+ sd->catch_target_class = pet->db[pet_id].class_;
+ intif->create_pet(sd->status.account_id, sd->status.char_id, pet->db[pet_id].class_,
+ mob->db(pet->db[pet_id].class_)->lv, pet->db[pet_id].EggID, 0,
+ (short)pet->db[pet_id].intimate, PET_HUNGER_STUFFED,
+ 0, 1,pet->db[pet_id].jname);
+
return true;
}
@@ -2798,72 +2777,86 @@ ACMD(hatch)
return true;
}
-/*==========================================
+/**
+ * Sets a pet's intimacy value.
*
- *------------------------------------------*/
+ * @code{.herc}
+ * @petfriendly <0-1000>
+ * @endcode
+ *
+ **/
ACMD(petfriendly)
{
- int friendly;
- struct pet_data *pd;
-
- if (!*message || (friendly = atoi(message)) < 0) {
- clif->message(fd, msg_fd(fd,1016)); // Please enter a valid value (usage: @petfriendly <0-1000>).
+ if (*message == '\0' || (atoi(message) == 0 && isdigit(*message) == 0)) {
+ clif->message(fd, msg_fd(fd, 1016)); // Please enter a valid value (usage: @petfriendly <0-1000>).
return false;
}
- pd = sd->pd;
- if (!pd) {
- clif->message(fd, msg_fd(fd,184)); // Sorry, but you have no pet.
+ int friendly = atoi(message);
+
+ if (friendly < PET_INTIMACY_NONE || friendly > PET_INTIMACY_MAX) {
+ clif->message(fd, msg_fd(fd, 1016)); // Please enter a valid value (usage: @petfriendly <0-1000>).
return false;
}
- if (friendly < 0 || friendly > 1000)
- {
- clif->message(fd, msg_fd(fd,37)); // An invalid number was specified.
+ struct pet_data *pd = sd->pd;
+
+ if (sd->status.pet_id == 0 || pd == NULL) {
+ clif->message(fd, msg_fd(fd, 184)); // Sorry, but you have no pet.
return false;
}
- if (friendly == pd->pet.intimate) {
- clif->message(fd, msg_fd(fd,183)); // Pet intimacy is already at maximum.
+ if (friendly == pd->pet.intimate && friendly == PET_INTIMACY_MAX) {
+ clif->message(fd, msg_fd(fd, 183)); // Pet intimacy is already at maximum.
return false;
}
- pet->set_intimate(pd, friendly);
- clif->send_petstatus(sd);
- clif->message(fd, msg_fd(fd,182)); // Pet intimacy changed.
+ if (friendly != pd->pet.intimate) // No need to update the pet's status if intimacy value won't change.
+ pet->set_intimate(pd, friendly);
+
+ clif->message(fd, msg_fd(fd, 182)); // Pet intimacy changed. (Send message regardless of value has changed or not.)
+
return true;
}
-/*==========================================
+/**
+ * Sets a pet's hunger value.
*
- *------------------------------------------*/
+ * @code{.herc}
+ * @pethungry <0-100>
+ * @endcode
+ *
+ **/
ACMD(pethungry)
{
- int hungry;
- struct pet_data *pd;
-
- if (!*message || (hungry = atoi(message)) < 0) {
- clif->message(fd, msg_fd(fd,1017)); // Please enter a valid number (usage: @pethungry <0-100>).
+ if (*message == '\0' || (atoi(message) == 0 && isdigit(*message) == 0)) {
+ clif->message(fd, msg_fd(fd, 1017)); // Please enter a valid number (usage: @pethungry <0-100>).
return false;
}
- pd = sd->pd;
- if (!sd->status.pet_id || !pd) {
- clif->message(fd, msg_fd(fd,184)); // Sorry, but you have no pet.
+ int hungry = atoi(message);
+
+ if (hungry < PET_HUNGER_STARVING || hungry > PET_HUNGER_STUFFED) {
+ clif->message(fd, msg_fd(fd, 1017)); // Please enter a valid number (usage: @pethungry <0-100>).
return false;
}
- if (hungry < 0 || hungry > 100) {
- clif->message(fd, msg_fd(fd,37)); // An invalid number was specified.
+
+ struct pet_data *pd = sd->pd;
+
+ if (sd->status.pet_id == 0 || pd == NULL) {
+ clif->message(fd, msg_fd(fd, 184)); // Sorry, but you have no pet.
return false;
}
- if (hungry == pd->pet.hungry) {
- clif->message(fd, msg_fd(fd,186)); // Pet hunger is already at maximum.
+
+ if (hungry == pd->pet.hungry && hungry == PET_HUNGER_STUFFED) {
+ clif->message(fd, msg_fd(fd, 186)); // Pet hunger is already at maximum.
return false;
}
- pd->pet.hungry = hungry;
- clif->send_petstatus(sd);
- clif->message(fd, msg_fd(fd,185)); // Pet hunger changed.
+ if (hungry != pd->pet.hungry) // No need to update the pet's status if hunger value won't change.
+ pet->set_hunger(pd, hungry);
+
+ clif->message(fd, msg_fd(fd, 185)); // Pet hunger changed. (Send message regardless of value has changed or not.)
return true;
}
@@ -2885,6 +2878,15 @@ ACMD(petrename)
}
pd->pet.rename_flag = 0;
+
+ int i;
+
+ ARR_FIND(0, sd->status.inventorySize, i, sd->status.inventory[i].card[0] == CARD0_PET
+ && pd->pet.pet_id == MakeDWord(sd->status.inventory[i].card[1], sd->status.inventory[i].card[2]));
+
+ if (i != sd->status.inventorySize)
+ sd->status.inventory[i].card[3] = pet->get_card4_value(pd->pet.rename_flag, pd->pet.intimate);
+
intif->save_petdata(sd->status.account_id, &pd->pet);
clif->send_petstatus(sd);
clif->message(fd, msg_fd(fd,187)); // You can now rename your pet.
@@ -4100,6 +4102,8 @@ ACMD(mapinfo)
strcat(atcmd_output, msg_fd(fd, 1292)); // PrivateAirshipStartable |
if (map->list[m_id].flag.pairship_endable)
strcat(atcmd_output, msg_fd(fd, 1293)); // PrivateAirshipEndable |
+ if (map->list[m_id].flag.nopet != 0)
+ strcat(atcmd_output, msg_fd(fd, 853)); // NoPet |
clif->message(fd, atcmd_output);
switch (list) {
@@ -4123,16 +4127,36 @@ ACMD(mapinfo)
for (i = 0; i < map->list[m_id].npc_num;) {
struct npc_data *nd = map->list[m_id].npc[i];
switch(nd->dir) {
- case 0: strcpy(direction, msg_fd(fd,1101)); break; // North
- case 1: strcpy(direction, msg_fd(fd,1102)); break; // North West
- case 2: strcpy(direction, msg_fd(fd,1103)); break; // West
- case 3: strcpy(direction, msg_fd(fd,1104)); break; // South West
- case 4: strcpy(direction, msg_fd(fd,1105)); break; // South
- case 5: strcpy(direction, msg_fd(fd,1106)); break; // South East
- case 6: strcpy(direction, msg_fd(fd,1107)); break; // East
- case 7: strcpy(direction, msg_fd(fd,1108)); break; // North East
- case 9: strcpy(direction, msg_fd(fd,1109)); break; // North
- default: strcpy(direction, msg_fd(fd,1110)); break; // Unknown
+ case UNIT_DIR_NORTH:
+ strcpy(direction, msg_fd(fd, 1101)); // North
+ break;
+ case UNIT_DIR_NORTHWEST:
+ strcpy(direction, msg_fd(fd, 1102)); // North West
+ break;
+ case UNIT_DIR_WEST:
+ strcpy(direction, msg_fd(fd, 1103)); // West
+ break;
+ case UNIT_DIR_SOUTHWEST:
+ strcpy(direction, msg_fd(fd, 1104)); // South West
+ break;
+ case UNIT_DIR_SOUTH:
+ strcpy(direction, msg_fd(fd, 1105)); // South
+ break;
+ case UNIT_DIR_SOUTHEAST:
+ strcpy(direction, msg_fd(fd, 1106)); // South East
+ break;
+ case UNIT_DIR_EAST:
+ strcpy(direction, msg_fd(fd, 1107)); // East
+ break;
+ case UNIT_DIR_NORTHEAST:
+ strcpy(direction, msg_fd(fd, 1108)); // North East
+ break;
+ case 9: // is this actually used? [skyleo]
+ strcpy(direction, msg_fd(fd, 1109)); // North
+ break;
+ default:
+ strcpy(direction, msg_fd(fd, 1110)); // Unknown
+ break;
}
if(strcmp(nd->name,nd->exname) == 0)
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,1111), // NPC %d: %s | Direction: %s | Sprite: %d | Location: %d %d
@@ -4483,6 +4507,7 @@ ACMD(loadnpc)
// add to list of script sources and run it
npc->addsrcfile(message);
npc->parsesrcfile(message,true);
+ npc->motd = npc->name2id("HerculesMOTD");
npc->read_event_script();
clif->message(fd, msg_fd(fd,262));
@@ -4517,6 +4542,7 @@ ACMD(unloadnpc)
npc->unload_duplicates(nd, (flag != 0));
npc->unload(nd, true, (flag != 0));
+ npc->motd = npc->name2id("HerculesMOTD");
npc->read_event_script();
clif->message(fd, msg_fd(fd, 112)); /// Npc Disabled.
return true;
@@ -4572,6 +4598,7 @@ ACMD(reloadnpc)
clif->message(fd, msg_fd(fd, 1386)); /// File unloaded. Be aware that...
npc->addsrcfile(file_path);
npc->parsesrcfile(file_path, true);
+ npc->motd = npc->name2id("HerculesMOTD");
npc->read_event_script();
clif->message(fd, msg_fd(fd, 262)); /// Script loaded.
return true;
@@ -5651,6 +5678,8 @@ ACMD(useskill)
return false;
}
+ pc->autocast_clear(sd);
+
if (skill_id >= HM_SKILLBASE && skill_id < HM_SKILLBASE+MAX_HOMUNSKILL
&& sd->hd && homun_alive(sd->hd)) // (If used with @useskill, put the homunc as dest)
bl = &sd->hd->bl;
@@ -6899,7 +6928,7 @@ ACMD(identify)
}
}
}
-
+
if (num == 0)
clif->message(fd,msg_fd(fd,1238)); // There are no items to appraise.
else if (!identifyall)
@@ -7845,39 +7874,61 @@ ACMD(monsterignore)
return true;
}
-/*==========================================
- * @fakename
- * => Gives your character a fake name. [Valaris]
- *------------------------------------------*/
+
+/**
+ * Temporarily changes the character's name to the specified string.
+ *
+ * @code{.herc}
+ * @fakename {<options>} {<fake_name>}
+ * @endcode
+ *
+ **/
ACMD(fakename)
{
- if (!*message)
- {
- if (sd->fakename[0])
- {
+ if (*message == '\0') {
+ if (sd->fakename[0] != '\0') {
sd->fakename[0] = '\0';
+ sd->fakename_options = FAKENAME_OPTION_NONE;
clif->blname_ack(0, &sd->bl);
- if( sd->disguise )
+
+ if (sd->disguise != 0) // Another packet should be sent so the client updates the name for sd.
clif->blname_ack(sd->fd, &sd->bl);
- clif->message(sd->fd, msg_fd(fd,1307)); // Returned to real name.
+
+ clif->message(sd->fd, msg_fd(fd, 1307)); // Returned to real name.
return true;
}
- clif->message(sd->fd, msg_fd(fd,1308)); // You must enter a name.
+ clif->message(sd->fd, msg_fd(fd, 1308)); // You must enter a name.
return false;
}
- if (strlen(message) < 2)
- {
- clif->message(sd->fd, msg_fd(fd,1309)); // Fake name must be at least two characters.
+ int options = FAKENAME_OPTION_NONE;
+ char buf[NAME_LENGTH] = {'\0'};
+ const char *fake_name = NULL;
+
+ if (sscanf(message, "%d %23[^\n]", &options, buf) == 2) {
+ fake_name = buf;
+ } else {
+ options = FAKENAME_OPTION_NONE;
+ fake_name = message;
+ }
+
+ if (strlen(fake_name) < 2) {
+ clif->message(sd->fd, msg_fd(fd, 1309)); // Fake name must be at least two characters.
return false;
}
- safestrncpy(sd->fakename, message, sizeof(sd->fakename));
+ if (options < FAKENAME_OPTION_NONE)
+ options = FAKENAME_OPTION_NONE;
+
+ safestrncpy(sd->fakename, fake_name, sizeof(sd->fakename));
+ sd->fakename_options = options;
clif->blname_ack(0, &sd->bl);
- if (sd->disguise) // Another packet should be sent so the client updates the name for sd
+
+ if (sd->disguise != 0) // Another packet should be sent so the client updates the name for sd.
clif->blname_ack(sd->fd, &sd->bl);
- clif->message(sd->fd, msg_fd(fd,1310)); // Fake name enabled.
+
+ clif->message(sd->fd, msg_fd(fd, 1310)); // Fake name enabled.
return true;
}
@@ -8519,7 +8570,7 @@ ACMD(itemlist)
if( it->card[0] == CARD0_PET ) {
// pet egg
- if (it->card[3])
+ if ((it->card[3] & 1) != 0)
StrBuf->Printf(&buf, msg_fd(fd,1348), (unsigned int)MakeDWord(it->card[1], it->card[2])); // -> (pet egg, pet id: %u, named)
else
StrBuf->Printf(&buf, msg_fd(fd,1349), (unsigned int)MakeDWord(it->card[1], it->card[2])); // -> (pet egg, pet id: %u, unnamed)
@@ -8876,13 +8927,17 @@ ACMD(accinfo)
/* [Ind] */
ACMD(set)
{
- char reg[SCRIPT_VARNAME_LENGTH+1], val[254];
+ char reg[SCRIPT_VARNAME_LENGTH + 1];
+ char val[SCRIPT_STRING_VAR_LENGTH + 1];
struct script_data* data;
int toset = 0;
bool is_str = false;
size_t len;
- if (!*message || (toset = sscanf(message, "%32s %253[^\n]", reg, val)) < 1) {
+ char format[20];
+ safesnprintf(format, sizeof(format), "%%%ds %%%d[^\\n]", SCRIPT_VARNAME_LENGTH, SCRIPT_STRING_VAR_LENGTH);
+
+ if (*message == '\0' || (toset = sscanf(message, format, reg, val)) < 1) {
clif->message(fd, msg_fd(fd,1367)); // Usage: @set <variable name> <value>
clif->message(fd, msg_fd(fd,1368)); // Usage: ex. "@set PoringCharVar 50"
clif->message(fd, msg_fd(fd,1369)); // Usage: ex. "@set PoringCharVarSTR$ Super Duper String"
@@ -10525,9 +10580,9 @@ static bool atcommand_exec(const int fd, struct map_session_data *sd, const char
clif->message(fd, msg_fd(fd,143));
return false;
}
+ if (sd->block_action.commands) // *pcblock script command
+ return false;
}
- if (sd->block_action.commands) // *pcblock script command
- return false;
if (*message == atcommand->char_symbol)
is_atcommand = false;
diff --git a/src/map/atcommand.h b/src/map/atcommand.h
index 66827b3b2..f3a5155ab 100644
--- a/src/map/atcommand.h
+++ b/src/map/atcommand.h
@@ -54,6 +54,16 @@ typedef enum {
COMMAND_CHARCOMMAND = 2,
} AtCommandType;
+/** @fakename display option flags **/
+enum fakename_option_flag {
+ FAKENAME_OPTION_NONE = 0x00,
+ FAKENAME_OPTION_SHOW_PARTYNAME = 0x01,
+ FAKENAME_OPTION_SHOW_GUILDNAME = 0x02,
+ FAKENAME_OPTION_SHOW_GUILDPOSITION = 0x04,
+ FAKENAME_OPTION_SHOW_CLANPOSITION = 0x08,
+ FAKENAME_OPTION_SHOW_TITLE = 0x10
+};
+
/**
* Typedef
**/
diff --git a/src/map/battle.c b/src/map/battle.c
index 40e7d3161..a571a555d 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -2832,18 +2832,18 @@ static int64 battle_calc_damage(struct block_list *src, struct block_list *bl, s
d->dmg_lv = ATK_BLOCK;
if(src_skill_id == MH_STEINWAND){
if (--group->val2<=0)
- skill->del_unitgroup(group,ALC_MARK);
+ skill->del_unitgroup(group);
if( (group->val3 - damage) > 0 )
group->val3 -= (int)cap_value(damage, INT_MIN, INT_MAX);
else
- skill->del_unitgroup(group,ALC_MARK);
+ skill->del_unitgroup(group);
return 0;
}
if( skill_id == SO_ELEMENTAL_SHIELD ) {
if ( ( group->val2 - damage) > 0 ) {
group->val2 -= (int)cap_value(damage,INT_MIN,INT_MAX);
} else
- skill->del_unitgroup(group,ALC_MARK);
+ skill->del_unitgroup(group);
return 0;
}
/**
@@ -2853,12 +2853,12 @@ static int64 battle_calc_damage(struct block_list *src, struct block_list *bl, s
if ( ( group->val2 - damage) > 0 ) {
group->val2 -= (int)cap_value(damage,INT_MIN,INT_MAX);
} else
- skill->del_unitgroup(group,ALC_MARK);
+ skill->del_unitgroup(group);
if (--group->val3<=0)
- skill->del_unitgroup(group,ALC_MARK);
+ skill->del_unitgroup(group);
#else
if (--group->val2<=0)
- skill->del_unitgroup(group,ALC_MARK);
+ skill->del_unitgroup(group);
#endif
return 0;
}
@@ -3231,12 +3231,11 @@ static int64 battle_calc_damage(struct block_list *src, struct block_list *bl, s
if (!damage) return 0;
if( (sce = sc->data[SC_LIGHTNINGWALK]) && flag&BF_LONG && rnd()%100 < sce->val1 ) {
- int dx[8]={0,-1,-1,-1,0,1,1,1};
- int dy[8]={1,1,0,-1,-1,-1,0,1};
- uint8 dir = map->calc_dir(bl, src->x, src->y);
- if( unit->movepos(bl, src->x-dx[dir], src->y-dy[dir], 1, 1) ) {
- clif->slide(bl,src->x-dx[dir],src->y-dy[dir]);
- unit->setdir(bl, dir);
+ enum unit_dir dir = map->calc_dir(bl, src->x, src->y);
+ Assert_ret(dir >= UNIT_DIR_FIRST && dir < UNIT_DIR_MAX);
+ if (unit->movepos(bl, src->x - dirx[dir], src->y - diry[dir], 1, 1)) {
+ clif->slide(bl, src->x - dirx[dir], src->y - diry[dir]);
+ unit->set_dir(bl, dir);
}
d->dmg_lv = ATK_DEF;
status_change_end(bl, SC_LIGHTNINGWALK, INVALID_TIMER);
@@ -3751,7 +3750,7 @@ static struct Damage battle_calc_magic_attack(struct block_list *src, struct blo
if (sc){
if( sc->data[SC_TELEKINESIS_INTENSE] && s_ele == ELE_GHOST )
- ad.damage += sc->data[SC_TELEKINESIS_INTENSE]->val3;
+ ad.damage += ad.damage * sc->data[SC_TELEKINESIS_INTENSE]->val3 / 100;
}
switch(skill_id){
case MG_FIREBOLT:
@@ -4125,13 +4124,6 @@ static struct Damage battle_calc_misc_attack(struct block_list *src, struct bloc
case NPC_EVILLAND:
md.damage = skill->calc_heal(src,target,skill_id,skill_lv,false);
break;
- case RK_DRAGONBREATH:
- case RK_DRAGONBREATH_WATER:
- md.damage = ((status_get_hp(src) / 50) + (status_get_max_sp(src) / 4)) * skill_lv;
- RE_LVL_MDMOD(150);
- if (sd) md.damage = md.damage * (95 + 5 * pc->checkskill(sd,RK_DRAGONTRAINING)) / 100;
- md.flag |= BF_LONG|BF_WEAPON;
- break;
/**
* Ranger
**/
@@ -4959,6 +4951,12 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl
break;
}
break;
+ case RK_DRAGONBREATH:
+ case RK_DRAGONBREATH_WATER:
+ wd.damage = ((status_get_hp(src) / 50) + (status_get_max_sp(src) / 4)) * skill_lv;
+ wd.damage = wd.damage * status->get_lv(src) / 150;
+ if (sd) wd.damage = wd.damage * (95 + 5 * pc->checkskill(sd, RK_DRAGONTRAINING)) / 100;
+ break;
default:
{
i = (flag.cri
@@ -5858,10 +5856,10 @@ static void battle_reflect_damage(struct block_list *target, struct block_list *
if( wd->flag & BF_SHORT ) {
if( !is_boss(src) ) {
if( sc->data[SC_DEATHBOUND] && skill_id != WS_CARTTERMINATION ) {
- uint8 dir = map->calc_dir(target,src->x,src->y),
- t_dir = unit->getdir(target);
+ enum unit_dir dir = map->calc_dir(target, src->x, src->y);
+ enum unit_dir t_dir = unit->getdir(target);
- if( !map->check_dir(dir,t_dir) ) {
+ if (map->check_dir(dir, t_dir) == 0) {
int64 rd1 = damage * sc->data[SC_DEATHBOUND]->val2 / 100; // Amplify damage.
trdamage += rdamage = rd1 - (damage = rd1 * 30 / 100); // not normalized as intended.
@@ -5929,21 +5927,21 @@ static void battle_reflect_damage(struct block_list *target, struct block_list *
delay += 100;/* gradual increase so the numbers don't clip in the client */
}
if( sc->data[SC_LG_REFLECTDAMAGE] && rnd()%100 < (30 + 10*sc->data[SC_LG_REFLECTDAMAGE]->val1) ) {
- bool change = false;
-
NORMALIZE_RDAMAGE(damage * sc->data[SC_LG_REFLECTDAMAGE]->val2 / 100);
trdamage -= rdamage;/* wont count towards total */
- if( sd && !sd->state.autocast ) {
- change = true;
- sd->state.autocast = 1;
+ enum autocast_type ac_type;
+
+ if (sd != NULL) {
+ ac_type = sd->auto_cast_current.type;
+ sd->auto_cast_current.type = AUTOCAST_TEMP;
}
map->foreachinshootrange(battle->damage_area,target,skill->get_splash(LG_REFLECTDAMAGE,1),BL_CHAR,tick,target,delay,wd->dmotion,rdamage,status_get_race(target));
- if( change )
- sd->state.autocast = 0;
+ if (sd != NULL)
+ sd->auto_cast_current.type = ac_type;
delay += 150;/* gradual increase so the numbers don't clip in the client */
@@ -6133,7 +6131,7 @@ static int battle_damage_area(struct block_list *bl, va_list ap)
else
status_fix_damage(src,bl,damage,0);
clif->damage(bl,bl,amotion,dmotion,damage,1,BDT_ENDURE,0);
- if (src->type != BL_PC || !BL_UCCAST(BL_PC, src)->state.autocast)
+ if (src->type != BL_PC || BL_UCCAST(BL_PC, src)->auto_cast_current.type != AUTOCAST_TEMP)
skill->additional_effect(src, bl, CR_REFLECTSHIELD, 1, BF_WEAPON|BF_SHORT|BF_NORMAL,ATK_DEF,tick);
map->freeblock_unlock();
}
@@ -6229,10 +6227,10 @@ static enum damage_lv battle_weapon_attack(struct block_list *src, struct block_
status_change_end(src, SC_CLOAKINGEXCEED, INVALID_TIMER);
}
if( tsc && tsc->data[SC_AUTOCOUNTER] && status->check_skilluse(target, src, KN_AUTOCOUNTER, 1) ) {
- uint8 dir = map->calc_dir(target,src->x,src->y);
- int t_dir = unit->getdir(target);
+ enum unit_dir dir = map->calc_dir(target, src->x, src->y);
+ enum unit_dir t_dir = unit->getdir(target);
int dist = distance_bl(src, target);
- if(dist <= 0 || (!map->check_dir(dir,t_dir) && dist <= tstatus->rhw.range+1)) {
+ if(dist <= 0 || (map->check_dir(dir, t_dir) == 0 && dist <= tstatus->rhw.range + 1)) {
uint16 skill_lv = tsc->data[SC_AUTOCOUNTER]->val1;
clif->skillcastcancel(target); //Remove the casting bar. [Skotlex]
clif->damage(src, target, sstatus->amotion, 1, 0, 1, BDT_NORMAL, 0); //Display MISS.
@@ -6342,7 +6340,7 @@ static enum damage_lv battle_weapon_attack(struct block_list *src, struct block_
skill_id = AB_DUPLELIGHT_MELEE;
else
skill_id = AB_DUPLELIGHT_MAGIC;
- skill->attack(skill->get_type(skill_id), src, src, target, skill_id, sc->data[SC_DUPLELIGHT]->val1, tick, SD_LEVEL);
+ skill->attack(skill->get_type(skill_id, sc->data[SC_DUPLELIGHT]->val1), src, src, target, skill_id, sc->data[SC_DUPLELIGHT]->val1, tick, SD_LEVEL);
}
}
@@ -6457,10 +6455,10 @@ static enum damage_lv battle_weapon_attack(struct block_list *src, struct block_
}
}
- sd->state.autocast = 1;
+ sd->auto_cast_current.type = AUTOCAST_TEMP;
skill->consume_requirement(sd,r_skill,r_lv,3);
skill->castend_type(type, src, target, r_skill, r_lv, tick, flag);
- sd->state.autocast = 0;
+ sd->auto_cast_current.type = AUTOCAST_NONE;
sd->ud.canact_tick = tick + skill->delay_fix(src, r_skill, r_lv);
clif->status_change(src, status->get_sc_icon(SC_POSTDELAY), status->get_sc_relevant_bl_types(SC_POSTDELAY), 1, skill->delay_fix(src, r_skill, r_lv), 0, 0, 1);
}
@@ -6601,10 +6599,6 @@ static int battle_check_target(struct block_list *src, struct block_list *target
m = target->m;
- if (flag & BCT_ENEMY && (map->getcell(m, src, src->x, src->y, CELL_CHKBASILICA) || map->getcell(m, src, target->x, target->y, CELL_CHKBASILICA))) {
- return -1;
- }
-
//t_bl/s_bl hold the 'master' of the attack, while src/target are the actual
//objects involved.
if( (t_bl = battle->get_master(target)) == NULL )
@@ -6613,6 +6607,11 @@ static int battle_check_target(struct block_list *src, struct block_list *target
if( (s_bl = battle->get_master(src)) == NULL )
s_bl = src;
+ if ((flag & BCT_ENEMY) != 0 && (status_get_mode(s_bl) & MD_BOSS) == 0 && (map->getcell(m, src, src->x, src->y, CELL_CHKBASILICA) != 0
+ || map->getcell(m, src, target->x, target->y, CELL_CHKBASILICA) != 0)) {
+ return -1;
+ }
+
if (s_bl->type == BL_PC) {
const struct map_session_data *s_sd = BL_UCCAST(BL_PC, s_bl);
switch (t_bl->type) {
@@ -7085,16 +7084,15 @@ static const struct battle_data {
{ "guild_emperium_check", &battle_config.guild_emperium_check, 1, 0, 1, },
{ "guild_exp_limit", &battle_config.guild_exp_limit, 50, 0, 99, },
{ "player_invincible_time", &battle_config.pc_invincible_time, 5000, 0, INT_MAX, },
+ { "pet_catch_rate_official_formula", &battle_config.pet_catch_rate_official_formula, 1, 0, 1, },
{ "pet_catch_rate", &battle_config.pet_catch_rate, 100, 0, INT_MAX, },
{ "pet_rename", &battle_config.pet_rename, 0, 0, 1, },
{ "pet_friendly_rate", &battle_config.pet_friendly_rate, 100, 0, INT_MAX, },
{ "pet_hungry_delay_rate", &battle_config.pet_hungry_delay_rate, 100, 10, INT_MAX, },
- { "pet_hungry_friendly_decrease", &battle_config.pet_hungry_friendly_decrease, 5, 0, INT_MAX, },
{ "pet_status_support", &battle_config.pet_status_support, 0, 0, 1, },
{ "pet_attack_support", &battle_config.pet_attack_support, 0, 0, 1, },
{ "pet_damage_support", &battle_config.pet_damage_support, 0, 0, 1, },
{ "pet_support_min_friendly", &battle_config.pet_support_min_friendly, 900, 0, 950, },
- { "pet_equip_min_friendly", &battle_config.pet_equip_min_friendly, 900, 0, 950, },
{ "pet_support_rate", &battle_config.pet_support_rate, 100, 0, INT_MAX, },
{ "pet_attack_exp_to_master", &battle_config.pet_attack_exp_to_master, 0, 0, 1, },
{ "pet_attack_exp_rate", &battle_config.pet_attack_exp_rate, 100, 0, INT_MAX, },
@@ -7102,7 +7100,7 @@ static const struct battle_data {
{ "pet_max_stats", &battle_config.pet_max_stats, 99, 0, INT_MAX, },
{ "pet_max_atk1", &battle_config.pet_max_atk1, 750, 0, INT_MAX, },
{ "pet_max_atk2", &battle_config.pet_max_atk2, 1000, 0, INT_MAX, },
- { "pet_disable_in_gvg", &battle_config.pet_no_gvg, 0, 0, 1, },
+ { "pet_remove_immediately", &battle_config.pet_remove_immediately, 1, 0, 1, },
{ "skill_min_damage", &battle_config.skill_min_damage, 2|4, 0, 1|2|4, },
{ "finger_offensive_type", &battle_config.finger_offensive_type, 0, 0, 1, },
{ "heal_exp", &battle_config.heal_exp, 0, 0, INT_MAX, },
@@ -7347,6 +7345,7 @@ static const struct battle_data {
{ "searchstore_querydelay", &battle_config.searchstore_querydelay, 10, 0, INT_MAX, },
{ "searchstore_maxresults", &battle_config.searchstore_maxresults, 30, 1, INT_MAX, },
{ "display_party_name", &battle_config.display_party_name, 0, 0, 1, },
+ { "send_party_options", &battle_config.send_party_options, 0x31F9, 0, 0x1FFFF, },
{ "cashshop_show_points", &battle_config.cashshop_show_points, 0, 0, 1, },
{ "mail_show_status", &battle_config.mail_show_status, 0, 0, 2, },
{ "client_limit_unit_lv", &battle_config.client_limit_unit_lv, 0, 0, BL_ALL, },
@@ -7380,12 +7379,12 @@ static const struct battle_data {
{ "item_restricted_consumption_type", &battle_config.item_restricted_consumption_type,1, 0, 1, },
{ "unequip_restricted_equipment", &battle_config.unequip_restricted_equipment, 0, 0, 3, },
{ "max_walk_path", &battle_config.max_walk_path, 17, 1, MAX_WALKPATH, },
- { "item_enabled_npc", &battle_config.item_enabled_npc, 1, 0, 1, },
+ { "item_enabled_npc", &battle_config.item_enabled_npc, 1, 0, 3, },
{ "gm_ignore_warpable_area", &battle_config.gm_ignore_warpable_area, 0, 2, 100, },
{ "packet_obfuscation", &battle_config.packet_obfuscation, 1, 0, 3, },
{ "client_accept_chatdori", &battle_config.client_accept_chatdori, 0, 0, INT_MAX, },
{ "snovice_call_type", &battle_config.snovice_call_type, 0, 0, 1, },
- { "guild_notice_changemap", &battle_config.guild_notice_changemap, 2, 0, 2, },
+ { "guild_notice_changemap", &battle_config.guild_notice_changemap, 7, 0, 7, },
{ "features/banking", &battle_config.feature_banking, 1, 0, 1, },
{ "features/auction", &battle_config.feature_auction, 0, 0, 2, },
{ "idletime_criteria", &battle_config.idletime_criteria, 0x25, 1, INT_MAX, },
@@ -7427,11 +7426,16 @@ static const struct battle_data {
{ "min_item_sell_price", &battle_config.min_item_sell_price, 0, 0, INT_MAX, },
{ "display_fake_hp_when_dead", &battle_config.display_fake_hp_when_dead, 1, 0, 1, },
{ "magicrod_type", &battle_config.magicrod_type, 0, 0, 1, },
+ { "skill_enabled_npc", &battle_config.skill_enabled_npc, 0, 0, INT_MAX, },
{ "features/enable_achievement_system", &battle_config.feature_enable_achievement, 1, 0, 1, },
{ "ping_timer_inverval", &battle_config.ping_timer_interval, 30, 0, 99999999, },
{ "ping_time", &battle_config.ping_time, 20, 0, 99999999, },
{ "option_drop_max_loop", &battle_config.option_drop_max_loop, 10, 1, 100000, },
{ "drop_connection_on_quit", &battle_config.drop_connection_on_quit, 0, 0, 1, },
+ { "display_rate_messages", &battle_config.display_rate_messages, 1, 0, 7, },
+ { "display_config_messages", &battle_config.display_config_messages, 0x1F1, 0, 0x1F7, },
+ { "display_overweight_messages", &battle_config.display_overweight_messages, 3, 0, 3, },
+ { "show_tip_window", &battle_config.show_tip_window, 1, 0, 1, },
{ "features/enable_refinery_ui", &battle_config.enable_refinery_ui, 1, 0, 1, },
{ "features/replace_refine_npcs", &battle_config.replace_refine_npcs, 1, 0, 1, },
{ "batk_min_limit", &battle_config.batk_min, 0, 0, INT_MAX, },
@@ -7450,6 +7454,8 @@ static const struct battle_data {
{ "hit_max_limit", &battle_config.hit_max, SHRT_MAX, 1, INT_MAX, },
{ "autoloot_adjust", &battle_config.autoloot_adjust, 0, 0, 1, },
{ "hom_bonus_exp_from_master", &battle_config.hom_bonus_exp_from_master, 10, 0, 100, },
+ { "allowed_actions_when_dead", &battle_config.allowed_actions_when_dead, 0, 0, 3, },
+ { "teleport_close_storage", &battle_config.teleport_close_storage, 1, 0, 1, },
};
static bool battle_set_value_sub(int index, int value)
@@ -7682,6 +7688,8 @@ static void do_init_battle(bool minimal)
static void do_final_battle(void)
{
+ if (map->minimal)
+ return;
ers_destroy(battle->delay_damage_ers);
}
diff --git a/src/map/battle.h b/src/map/battle.h
index 2e710f7f8..abf4c0f68 100644
--- a/src/map/battle.h
+++ b/src/map/battle.h
@@ -212,16 +212,15 @@ struct Battle_Config {
int guild_aura;
int pc_invincible_time;
+ int pet_catch_rate_official_formula;
int pet_catch_rate;
int pet_rename;
int pet_friendly_rate;
int pet_hungry_delay_rate;
- int pet_hungry_friendly_decrease;
int pet_status_support;
int pet_attack_support;
int pet_damage_support;
int pet_support_min_friendly; //[Skotlex]
- int pet_equip_min_friendly;
int pet_support_rate;
int pet_attack_exp_to_master;
int pet_attack_exp_rate;
@@ -229,8 +228,8 @@ struct Battle_Config {
int pet_max_stats; //[Skotlex]
int pet_max_atk1; //[Skotlex]
int pet_max_atk2; //[Skotlex]
- int pet_no_gvg; //Disables pets in gvg. [Skotlex]
int pet_equip_required;
+ int pet_remove_immediately;
int skill_min_damage;
int finger_offensive_type;
@@ -472,6 +471,7 @@ struct Battle_Config {
int searchstore_querydelay;
int searchstore_maxresults;
int display_party_name;
+ int send_party_options;
int cashshop_show_points;
int mail_show_status;
int client_limit_unit_lv;
@@ -581,6 +581,8 @@ struct Battle_Config {
int magicrod_type;
+ int skill_enabled_npc;
+
int feature_enable_achievement;
int ping_timer_interval;
@@ -589,6 +591,10 @@ struct Battle_Config {
int option_drop_max_loop;
int drop_connection_on_quit;
+ int display_rate_messages;
+ int display_config_messages;
+ int display_overweight_messages;
+ int show_tip_window;
int enable_refinery_ui;
int replace_refine_npcs;
@@ -608,6 +614,8 @@ struct Battle_Config {
int hit_max;
int autoloot_adjust;
+ int allowed_actions_when_dead;
+ int teleport_close_storage;
};
/* criteria for battle_config.idletime_critera */
diff --git a/src/map/buyingstore.c b/src/map/buyingstore.c
index 2c2fc13ae..fd6e6fd6e 100644
--- a/src/map/buyingstore.c
+++ b/src/map/buyingstore.c
@@ -91,8 +91,9 @@ static void buyingstore_create(struct map_session_data *sd, int zenylimit, unsig
return;
}
- if( !battle_config.feature_buying_store || pc_istrading(sd) || sd->state.prevend || sd->buyingstore.slots == 0 || count > sd->buyingstore.slots || zenylimit <= 0 || zenylimit > sd->status.zeny || !storename[0] )
- {// disabled or invalid input
+ if (battle_config.feature_buying_store == 0 || pc_istrading_except_npc(sd) || sd->state.prevend != 0
+ || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || sd->buyingstore.slots == 0
+ || count > sd->buyingstore.slots || zenylimit <= 0 || zenylimit > sd->status.zeny || *storename == '\0') { // Disabled or invalid input.
sd->buyingstore.slots = 0;
clif->buyingstore_open_failed(sd, BUYINGSTORE_CREATE, 0);
return;
@@ -218,8 +219,8 @@ static void buyingstore_open(struct map_session_data *sd, int account_id)
struct map_session_data* pl_sd;
nullpo_retv(sd);
- if (!battle_config.feature_buying_store || pc_istrading(sd) || sd->state.prevend)
- {// not allowed to sell
+ if (battle_config.feature_buying_store == 0 || pc_istrading_except_npc(sd) || sd->state.prevend != 0
+ || (sd->npc_id != 0 && sd->state.using_megaphone == 0)) { // Not allowed to sell.
return;
}
@@ -255,8 +256,8 @@ static void buyingstore_trade(struct map_session_data* sd, int account_id, unsig
return;
}
- if (!battle_config.feature_buying_store || pc_istrading(sd) || sd->state.prevend)
- {// not allowed to sell
+ if (battle_config.feature_buying_store == 0 || pc_istrading_except_npc(sd) || sd->state.prevend != 0
+ || (sd->npc_id != 0 && sd->state.using_megaphone == 0)) { // Not allowed to sell.
clif->buyingstore_trade_failed_seller(sd, BUYINGSTORE_TRADE_SELLER_FAILED, 0);
return;
}
diff --git a/src/map/chrif.c b/src/map/chrif.c
index b131907e0..ac5fb4dd0 100644
--- a/src/map/chrif.c
+++ b/src/map/chrif.c
@@ -863,6 +863,8 @@ static bool chrif_changesex(struct map_session_data *sd, bool change_account)
nullpo_retr(false, sd);
chrif_check(false);
+ chrif->save(sd, 0);
+
WFIFOHEAD(chrif->fd,44);
WFIFOW(chrif->fd,0) = 0x2b0e;
WFIFOL(chrif->fd,2) = sd->status.account_id;
diff --git a/src/map/clif.c b/src/map/clif.c
index 660c516d7..f44d9a716 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -936,19 +936,25 @@ static void clif_clearunit_area(struct block_list *bl, enum clr_type type)
static int clif_clearunit_delayed_sub(int tid, int64 tick, int id, intptr_t data)
{
struct block_list *bl = (struct block_list *)data;
+ nullpo_ret(bl);
+ Assert_ret(bl->m >= 0 && bl->m < map->count);
+ if (map->list[bl->m].block == NULL) {
+ // avoid error report for missing/removed map
+ ers_free(clif->delay_clearunit_ers, bl);
+ return 0;
+ }
clif->clearunit_area(bl, (enum clr_type) id);
- ers_free(clif->delay_clearunit_ers,bl);
+ ers_free(clif->delay_clearunit_ers, bl);
return 0;
}
static void clif_clearunit_delayed(struct block_list *bl, enum clr_type type, int64 tick)
{
- struct block_list *tbl;
-
nullpo_retv(bl);
- tbl = ers_alloc(clif->delay_clearunit_ers, struct block_list);
- memcpy (tbl, bl, sizeof (struct block_list));
- timer->add(tick, clif->clearunit_delayed_sub, (int)type, (intptr_t)tbl);
+ Assert_retv(bl->type == BL_MOB);
+ struct mob_data *md = ers_alloc(clif->delay_clearunit_ers, struct mob_data);
+ memcpy (md, bl, sizeof (struct mob_data));
+ timer->add(tick, clif->clearunit_delayed_sub, (int)type, (intptr_t)md);
}
/// Gets weapon view info from sd's inventory_data and points (*rhand,*lhand)
@@ -1031,6 +1037,7 @@ static void clif_set_unit_idle2(struct block_list *bl, struct map_session_data *
int g_id = status->get_guild_id(bl);
nullpo_retv(bl);
+ nullpo_retv(vd);
sd = BL_CAST(BL_PC, bl);
p.PacketType = idle_unit2Type;
@@ -1087,6 +1094,7 @@ static void clif_set_unit_idle(struct block_list *bl, struct map_session_data *t
int g_id = status->get_guild_id(bl);
nullpo_retv(bl);
+ nullpo_retv(vd);
#if PACKETVER < 20091103
if (!pc->db_checkid(vd->class)) {
@@ -1197,6 +1205,7 @@ static void clif_spawn_unit2(struct block_list *bl, enum send_target target)
int g_id = status->get_guild_id(bl);
nullpo_retv(bl);
+ nullpo_retv(vd);
sd = BL_CAST(BL_PC, bl);
p.PacketType = spawn_unit2Type;
@@ -1244,6 +1253,7 @@ static void clif_spawn_unit(struct block_list *bl, enum send_target target)
int g_id = status->get_guild_id(bl);
nullpo_retv(bl);
+ nullpo_retv(vd);
#if PACKETVER < 20091103
if (!pc->db_checkid(vd->class)) {
@@ -1357,6 +1367,7 @@ static void clif_set_unit_walking(struct block_list *bl, struct map_session_data
nullpo_retv(bl);
nullpo_retv(ud);
+ nullpo_retv(vd);
sd = BL_CAST(BL_PC, bl);
@@ -1585,10 +1596,33 @@ static bool clif_spawn(struct block_list *bl)
clif->specialeffect(bl,421,AREA);
if (sd->bg_id != 0 && map->list[sd->bl.m].flag.battleground)
clif->sendbgemblem_area(sd);
- for (i = 0; i < sd->sc_display_count; i++) {
- clif->sc_continue(&sd->bl, sd->bl.id, AREA, status->get_sc_icon(sd->sc_display[i]->type), sd->sc_display[i]->val1, sd->sc_display[i]->val2, sd->sc_display[i]->val3);
+ struct status_change *sc = status->get_sc(bl);
+
+ if (sd->sc_display_count > 0 && sc != NULL) {
+ for (i = 0; i < sd->sc_display_count; i++) {
+ enum sc_type type = sd->sc_display[i]->type;
+
+ if (sc->data[type] == NULL)
+ continue;
+
+ int tick = 0;
+ int tid = sc->data[type]->timer;
+ const struct TimerData *td = (tid > 0) ? timer->get(tid) : NULL;
+
+ if (td != NULL)
+ tick = DIFF_TICK32(td->tick, timer->gettick());
+
+ int sc_icon = status->get_sc_icon(type);
+ int sc_types = status->get_sc_relevant_bl_types(type);
+ int val1 = sd->sc_display[i]->val1;
+ int val2 = sd->sc_display[i]->val2;
+ int val3 = sd->sc_display[i]->val3;
+
+ clif->status_change(&sd->bl, sc_icon, sc_types, 1, tick, val1, val2, val3);
+ }
}
+
if (sd->charm_type != CHARM_TYPE_NONE && sd->charm_count > 0)
clif->spiritcharm(sd);
if (sd->status.look.robe != 0)
@@ -2179,6 +2213,9 @@ static void clif_selllist(struct map_session_data *sd)
if( !itemdb_cansell(&sd->status.inventory[i], pc_get_group_level(sd)) )
continue;
+ if (sd->status.inventory[i].favorite != 0)
+ continue; // Cannot Sell Favorite item
+
if( sd->status.inventory[i].expire_time )
continue; // Cannot Sell Rental Items
@@ -2417,23 +2454,26 @@ static void clif_scriptinput(struct map_session_data *sd, int npcid)
/// - close inputstr window
static void clif_scriptinputstr(struct map_session_data *sd, int npcid)
{
- int fd;
- struct block_list *bl = NULL;
-
nullpo_retv(sd);
- if (!sd->state.using_fake_npc && (npcid == npc->fake_nd->bl.id || ((bl = map->id2bl(npcid)) != NULL && (bl->m!=sd->bl.m ||
- bl->x<sd->bl.x-AREA_SIZE-1 || bl->x>sd->bl.x+AREA_SIZE+1 ||
- bl->y<sd->bl.y-AREA_SIZE-1 || bl->y>sd->bl.y+AREA_SIZE+1))))
+ struct block_list *bl = map->id2bl(npcid);
+ int x1 = sd->bl.x - AREA_SIZE - 1;
+ int x2 = sd->bl.x + AREA_SIZE + 1;
+ int y1 = sd->bl.y - AREA_SIZE - 1;
+ int y2 = sd->bl.y + AREA_SIZE + 1;
+ bool out_of_sight = (bl != NULL && (bl->m != sd->bl.m || bl->x < x1 || bl->x > x2 || bl->y < y1 || bl->y > y2));
+
+ if (sd->state.using_fake_npc == 0 && sd->state.using_megaphone == 0
+ && (npcid == npc->fake_nd->bl.id || out_of_sight)) {
clif->sendfakenpc(sd, npcid);
+ }
pc->update_idle_time(sd, BCIDLE_SCRIPT);
- fd=sd->fd;
- WFIFOHEAD(fd, packet_len(0x1d4));
- WFIFOW(fd,0)=0x1d4;
- WFIFOL(fd,2)=npcid;
- WFIFOSET(fd,packet_len(0x1d4));
+ WFIFOHEAD(sd->fd, packet_len(0x1d4));
+ WFIFOW(sd->fd, 0) = 0x1d4;
+ WFIFOL(sd->fd, 2) = (sd->state.using_megaphone == 0) ? npcid : 0;
+ WFIFOSET(sd->fd, packet_len(0x1d4));
}
/// Marks a position on client's minimap (ZC_COMPASS).
@@ -2505,8 +2545,8 @@ static void clif_addcards(struct EQUIPSLOTINFO *buf, struct item *item)
if (item->card[0] == CARD0_PET) { //pet eggs
buf->card[0] = 0;
buf->card[1] = 0;
- buf->card[2] = 0;
- buf->card[3] = item->card[3]; //Pet renamed flag.
+ buf->card[2] = (item->card[3] >> 1); // Pet intimacy level.
+ buf->card[3] = (item->card[3] & 1); // Pet renamed flag.
return;
}
if (item->card[0] == CARD0_FORGE || item->card[0] == CARD0_CREATE) { //Forged/created items
@@ -4900,7 +4940,7 @@ static int clif_damage(struct block_list *src, struct block_list *dst, int sdela
}
if(src == dst) {
- unit->setdir(src,unit->getdir(src));
+ unit->set_dir(src, unit->getdir(src));
}
//Return adjusted can't walk delay for further processing.
@@ -6221,7 +6261,7 @@ static void clif_displaymessage_sprintf(const int fd, const char *mes, ...)
/// 009a <packet len>.W <message>.?B
static void clif_broadcast(struct block_list *bl, const char *mes, int len, int type, enum send_target target)
{
- int lp = (type&BC_COLOR_MASK) ? 4 : 0;
+ int lp = ((type & BC_COLOR_MASK) != 0 || (type & BC_MEGAPHONE) != 0) ? 4 : 0;
unsigned char *buf = NULL;
nullpo_retv(mes);
@@ -6233,6 +6273,8 @@ static void clif_broadcast(struct block_list *bl, const char *mes, int len, int
WBUFL(buf,4) = 0x65756c62; //If there's "blue" at the beginning of the message, game client will display it in blue instead of yellow.
else if( type&BC_WOE )
WBUFL(buf,4) = 0x73737373; //If there's "ssss", game client will recognize message as 'WoE broadcast'.
+ else if ((type & BC_MEGAPHONE) != 0)
+ WBUFL(buf, 4) = 0x6363696d; // If there's "micc" at the beginning of the message, the game client will recognize message as 'Megaphone shout'.
memcpy(WBUFP(buf, 4 + lp), mes, len);
clif->send(buf, WBUFW(buf,2), bl, target);
@@ -6763,7 +6805,7 @@ static void clif_item_skill(struct map_session_data *sd, uint16 skill_id, uint16
struct PACKET_ZC_AUTORUN_SKILL *p = WFIFOP(fd, 0);
int type = skill->get_inf(skill_id);
- if (sd->state.itemskill_castonself == 1 && skill->is_item_skill(sd, skill_id, skill_lv))
+ if (sd->auto_cast_current.itemskill_cast_on_self && sd->auto_cast_current.type == AUTOCAST_ITEM)
type = INF_SELF_SKILL;
p->packetType = HEADER_ZC_AUTORUN_SKILL;
@@ -7276,46 +7318,101 @@ static void clif_party_inviteack(struct map_session_data *sd, const char *nick,
#endif
}
-/// Updates party settings.
-/// 0101 <exp option>.L (ZC_GROUPINFO_CHANGE)
-/// 07d8 <exp option>.L <item pick rule>.B <item share rule>.B (ZC_REQ_GROUPINFO_CHANGE_V2)
-/// exp option:
-/// 0 = exp sharing disabled
-/// 1 = exp sharing enabled
-/// 2 = cannot change exp sharing
-///
-/// flag:
-/// 0 = send to party
-/// 1 = send to sd
+/**
+ * Sends party settings to the client.
+ *
+ * 0101 <exp option>.L (ZC_GROUPINFO_CHANGE)
+ * 07d8 <exp option>.L <item pick rule>.B <item share rule>.B (ZC_REQ_GROUPINFO_CHANGE_V2)
+ * <exp option>:
+ * 0 = EXP sharing disabled.
+ * 1 = EXP sharing enabled.
+ * 2 = Cannot change EXP sharing.
+ *
+ * @param p The related party.
+ * @param sd The related character.
+ * @param flag Reason for sending.
+ * @parblock
+ * Possible flags:
+ * 0x01 = Cannot change EXP sharing. (Only set when tried to change options manually.)
+ * 0x02 = Options changed manually.
+ * 0x04 = Options changed automatically.
+ * 0x08 = Member added.
+ * 0x10 = Member removed.
+ * 0x20 = Character logged in.
+ * 0x40 = Character changed map.
+ * 0x80 = Character teleported.
+ * @endparblock
+ *
+ **/
static void clif_party_option(struct party_data *p, struct map_session_data *sd, int flag)
{
- unsigned char buf[16];
+ nullpo_retv(p);
+
+ if (sd == NULL && (flag & 0x01) == 0) {
+ for (int i = 0; i < MAX_PARTY; i++) {
+ if (p->data[i].sd != NULL) {
+ sd = p->data[i].sd;
+ break;
+ }
+ }
+ }
+
+ if (sd == NULL)
+ return;
+
+ int conf = battle_config.send_party_options;
+
+ if (((flag & 0x01) != 0 && (conf & 0x10) == 0)
+ || ((flag & 0x02) != 0 && (conf & 0x08) == 0)
+ || ((flag & 0x04) != 0 && (conf & 0x20) == 0)
+ || ((flag & 0x08) != 0 && (conf & 0x40) == 0)
+ || ((flag & 0x10) != 0 && (conf & 0x80) == 0)
+ || ((flag & 0x20) != 0 && (conf & 0x01) == 0)
+ || ((flag & 0x40) != 0 && (conf & 0x02) == 0)
+ || ((flag & 0x80) != 0 && (conf & 0x04) == 0)) {
+ return;
+ }
+
+ enum send_target target = SELF;
+
+ if (((flag & 0x01) != 0 && (conf & 0x100) != 0)
+ || ((flag & 0x01) == 0 && (flag & 0x02) != 0)
+ || (flag & 0x04) != 0) {
+ target = PARTY;
+ }
+
+ int cmd = 0x101;
+
+ if (((flag & 0x01) != 0 && (conf & 0x02000) != 0)
+ || ((flag & 0x02) != 0 && (conf & 0x01000) != 0)
+ || ((flag & 0x04) != 0 && (conf & 0x04000) != 0)
+ || ((flag & 0x08) != 0 && (conf & 0x08000) != 0)
+ || ((flag & 0x10) != 0 && (conf & 0x10000) != 0)
+ || ((flag & 0x20) != 0 && (conf & 0x00200) != 0)
+ || ((flag & 0x40) != 0 && (conf & 0x00400) != 0)
+ || ((flag & 0x80) != 0 && (conf & 0x00800) != 0)) {
+ cmd = 0x7d8;
+ }
+
#if PACKETVER < 20090603
- const int cmd = 0x101;
-#else
- const int cmd = 0x7d8;
+ if (cmd == 0x7d8)
+ cmd = 0x101;
#endif
- nullpo_retv(p);
+ unsigned char buf[16];
- if(!sd && flag==0){
- int i;
- for(i=0;i<MAX_PARTY && !p->data[i].sd;i++)
- ;
- if (i < MAX_PARTY)
- sd = p->data[i].sd;
+ WBUFW(buf, 0) = cmd;
+ WBUFL(buf, 2) = ((flag & 0x10) != 0) ? 0 : (((flag & 0x01) != 0) ? 2 : p->party.exp);
+
+ if (cmd == 0x7d8) {
+ WBUFB(buf, 6) = ((flag & 0x10) != 0) ? 0 : (((p->party.item & 1) != 0) ? 1 : 0);
+ WBUFB(buf, 7) = ((flag & 0x10) != 0) ? 0 : (((p->party.item & 2) != 0) ? 1 : 0);
}
- if(!sd) return;
- WBUFW(buf,0)=cmd;
- WBUFL(buf,2)=((flag&0x01)?2:p->party.exp);
-#if PACKETVER >= 20090603
- WBUFB(buf,6)=(p->party.item&1)?1:0;
- WBUFB(buf,7)=(p->party.item&2)?1:0;
-#endif
- if(flag==0)
- clif->send(buf,packet_len(cmd),&sd->bl,PARTY);
- else
- clif->send(buf,packet_len(cmd),&sd->bl,SELF);
+
+ clif->send(buf, packet_len(cmd), &sd->bl, target);
+
+ if ((flag & 0x04) != 0)
+ p->state.option_auto_changed = 0;
}
/// 0105 <account id>.L <char name>.24B <result>.B (ZC_DELETE_MEMBER_FROM_GROUP).
@@ -7564,8 +7661,8 @@ static void clif_sendegg(struct map_session_data *sd)
nullpo_retv(sd);
fd = sd->fd;
- if (battle_config.pet_no_gvg && map_flag_gvg2(sd->bl.m)) { //Disable pet hatching in GvG grounds during Guild Wars [Skotlex]
- clif->message(fd, msg_sd(sd, 866)); // "Pets are not allowed in Guild Wars."
+ if (map->list[sd->bl.m].flag.nopet != 0) {
+ clif->message(fd, msg_sd(sd, 866)); // "Pets are disabled in this map."
return;
}
@@ -9379,82 +9476,98 @@ static void clif_send_selforarea(int fd, struct block_list *bl, const void *buf,
}
}
-/// Updates the object's (bl) name on client.
-/// 0095 <id>.L <char name>.24B (ZC_ACK_REQNAME)
-/// 0195 <id>.L <char name>.24B <party name>.24B <guild name>.24B <position name>.24B (ZC_ACK_REQNAMEALL)
-/// 0A30 <id>.L <char name>.24B <party name>.24B <guild name>.24B <position name>.24B <title id>.L (ZC_ACK_REQNAMEALL2)
+/**
+ * Updates a character's name on client.
+ *
+ * @code
+ * 0095 <id>.L <char name>.24B (ZC_ACK_REQNAME)
+ * 0195 <id>.L <char name>.24B <party name>.24B <guild name>.24B <position name>.24B (ZC_ACK_REQNAMEALL)
+ * 0A30 <id>.L <char name>.24B <party name>.24B <guild name>.24B <position name>.24B <title id>.L (ZC_ACK_REQNAMEALL2)
+ * @endcode
+ *
+ * @param fd The incoming file descriptor.
+ * @param bl The related character's block list.
+ *
+ **/
static void clif_pcname_ack(int fd, struct block_list *bl)
{
nullpo_retv(bl);
Assert_retv(bl->type == BL_PC);
- struct PACKET_ZC_ACK_REQNAMEALL packet = { 0 };
- int len = sizeof(struct PACKET_ZC_ACK_REQNAMEALL);
+ struct PACKET_ZC_ACK_REQNAMEALL packet = {0};
+ packet.packet_id = HEADER_ZC_ACK_REQNAMEALL;
packet.gid = bl->id;
const struct map_session_data *ssd = BL_UCCAST(BL_PC, bl);
- if (ssd->fakename[0] != '\0') {
- packet.packet_id = reqName;
- len = sizeof(struct packet_reqname_ack);
- } else {
- packet.packet_id = HEADER_ZC_ACK_REQNAMEALL;
- len = sizeof(struct PACKET_ZC_ACK_REQNAMEALL);
- }
-
- //Requesting your own "shadow" name. [Skotlex]
- if (ssd->fd == fd && ssd->disguise != -1) {
+ if (ssd->fd == fd && ssd->disguise != -1) // Requesting your own "shadow" name.
packet.gid = -bl->id;
- }
- if (ssd->fakename[0] != '\0') {
+ if (ssd->fakename[0] != '\0')
memcpy(packet.name, ssd->fakename, NAME_LENGTH);
- } else {
-#if PACKETVER_MAIN_NUM >= 20150225 || PACKETVER_RE_NUM >= 20141126 || defined(PACKETVER_ZERO)
- // Title System [Dastgir/Hercules]
- if (ssd->status.title_id > 0) {
- packet.title_id = ssd->status.title_id;
- }
-#endif
+ else
memcpy(packet.name, ssd->status.name, NAME_LENGTH);
- const struct party_data *p = NULL;
- int ps = -1;
- if (ssd->status.party_id != 0) {
- p = party->search(ssd->status.party_id);
- }
- const struct guild *g = NULL;
- if (ssd->status.guild_id != 0) {
- if ((g = ssd->guild) != NULL) {
- int i;
- ARR_FIND(0, g->max_member, i, g->member[i].account_id == ssd->status.account_id && g->member[i].char_id == ssd->status.char_id);
- if (i < g->max_member)
- ps = g->member[i].position;
- }
- }
+ const struct party_data *p = NULL;
- if (!battle_config.display_party_name && g == NULL) {
- // do not display party unless the player is also in a guild
- p = NULL;
- }
+ if (ssd->status.party_id != 0)
+ p = party->search(ssd->status.party_id);
+
+ const struct guild *g = NULL;
+ int pos_idx = INDEX_NOT_FOUND;
+
+ if (ssd->status.guild_id != 0 && (g = ssd->guild) != NULL) {
+ int i;
+ int acc_id = ssd->status.account_id;
+ int chr_id = ssd->status.char_id;
+
+ ARR_FIND(0, g->max_member, i, g->member[i].account_id == acc_id && g->member[i].char_id == chr_id);
+
+ if (i < g->max_member)
+ pos_idx = g->member[i].position;
+ }
+
+ if (battle_config.display_party_name == 0 && g == NULL)
+ p = NULL; // Do not display party name, unless the character is also in a guild.
- if (p != NULL) {
+ if (p != NULL) {
+ if ((ssd->fakename[0] != '\0' && (ssd->fakename_options & FAKENAME_OPTION_SHOW_PARTYNAME) != 0)
+ || ssd->fakename[0] == '\0') {
memcpy(packet.party_name, p->party.name, NAME_LENGTH);
}
+ }
- if (g != NULL && ps >= 0 && ps < MAX_GUILDPOSITION) {
+ if (g != NULL && pos_idx >= 0 && pos_idx < MAX_GUILDPOSITION) {
+ if ((ssd->fakename[0] != '\0' && (ssd->fakename_options & FAKENAME_OPTION_SHOW_GUILDNAME) != 0)
+ || ssd->fakename[0] == '\0') {
memcpy(packet.guild_name, g->name,NAME_LENGTH);
- memcpy(packet.position_name, g->position[ps].name, NAME_LENGTH);
}
- else if (ssd->status.clan_id != 0) {
- struct clan *c = clan->search(ssd->status.clan_id);
- if (c != 0) {
+
+ if ((ssd->fakename[0] != '\0' && (ssd->fakename_options & FAKENAME_OPTION_SHOW_GUILDPOSITION) != 0)
+ || ssd->fakename[0] == '\0') {
+ memcpy(packet.position_name, g->position[pos_idx].name, NAME_LENGTH);
+ }
+ } else if (ssd->status.clan_id != 0) {
+ struct clan *c = clan->search(ssd->status.clan_id);
+
+ if (c != 0) {
+ if ((ssd->fakename[0] != '\0' && (ssd->fakename_options & FAKENAME_OPTION_SHOW_CLANPOSITION) != 0)
+ || ssd->fakename[0] == '\0') {
memcpy(packet.position_name, c->name, NAME_LENGTH);
}
}
}
- clif->send_selforarea(fd, bl, &packet, len);
+#if PACKETVER_MAIN_NUM >= 20150225 || PACKETVER_RE_NUM >= 20141126 || defined(PACKETVER_ZERO) // Title system.
+ if (ssd->status.title_id > 0) {
+ if ((ssd->fakename[0] != '\0' && (ssd->fakename_options & FAKENAME_OPTION_SHOW_TITLE) != 0)
+ || ssd->fakename[0] == '\0') {
+ packet.title_id = ssd->status.title_id;
+ }
+ }
+#endif
+
+ clif->send_selforarea(fd, bl, &packet, sizeof(struct PACKET_ZC_ACK_REQNAMEALL));
}
/// Updates the object's (bl) name on client.
@@ -9703,10 +9816,22 @@ static void clif_elemname_ack(int fd, struct block_list *bl)
clif->send_selforarea(fd, bl, &packet, sizeof(struct PACKET_ZC_ACK_REQNAME_TITLE));
}
+static void clif_skillname_ack(int fd, struct block_list *bl)
+{
+}
+
+static void clif_itemname_ack(int fd, struct block_list *bl)
+{
+ nullpo_retv(bl);
+ ShowError("clif_itemname_ack: bad type %u(%d)\n", bl->type, bl->id);
+ Assert_retv(0);
+}
+
static void clif_unknownname_ack(int fd, struct block_list *bl)
{
nullpo_retv(bl);
ShowError("clif_blname_ack: bad type %u(%d)\n", bl->type, bl->id);
+ Assert_retv(0);
}
static void clif_blname_ack(int fd, struct block_list *bl)
@@ -9738,62 +9863,102 @@ static void clif_blname_ack(int fd, struct block_list *bl)
case BL_ELEM:
clif->elemname_ack(fd, bl);
break;
+ case BL_ITEM:
+ clif->itemname_ack(fd, bl);
+ break;
+ case BL_SKILL:
+ clif->skillname_ack(fd, bl);
+ break;
default:
clif->unknownname_ack(fd, bl);
break;
}
}
-//Used to update when a char leaves a party/guild. [Skotlex]
-//Needed because when you send a 0x95 packet, the client will not remove the cached party/guild info that is not sent.
+/**
+ * Updates a character's name on client when leaving a party/guild.
+ *
+ * @code
+ * 0195 <id>.L <char name>.24B <party name>.24B <guild name>.24B <position name>.24B (ZC_ACK_REQNAMEALL)
+ * 0A30 <id>.L <char name>.24B <party name>.24B <guild name>.24B <position name>.24B <title id>.L (ZC_ACK_REQNAMEALL2)
+ * @endcode
+ *
+ * @param ssd The related character.
+ *
+ **/
static void clif_charnameupdate(struct map_session_data *ssd)
{
- int ps = -1;
- struct party_data *p = NULL;
- struct guild *g = NULL;
- struct PACKET_ZC_ACK_REQNAMEALL packet = { 0 };
-
nullpo_retv(ssd);
- if (ssd->fakename[0])
- return; //No need to update as the party/guild was not displayed anyway.
-
+ struct PACKET_ZC_ACK_REQNAMEALL packet = {0};
packet.packet_id = HEADER_ZC_ACK_REQNAMEALL;
packet.gid = ssd->bl.id;
- memcpy(packet.name, ssd->status.name, NAME_LENGTH);
+ if (ssd->fakename[0] != '\0')
+ memcpy(packet.name, ssd->fakename, NAME_LENGTH);
+ else
+ memcpy(packet.name, ssd->status.name, NAME_LENGTH);
- if (!battle_config.display_party_name) {
- if (ssd->status.party_id > 0 && ssd->status.guild_id > 0 && (g = ssd->guild) != NULL)
- p = party->search(ssd->status.party_id);
- } else {
- if (ssd->status.party_id > 0)
- p = party->search(ssd->status.party_id);
- }
+ struct party_data *p = NULL;
+
+ if (ssd->status.party_id != 0)
+ p = party->search(ssd->status.party_id);
- if (ssd->status.guild_id > 0 && (g = ssd->guild) != NULL) {
+ struct guild *g = NULL;
+ int pos_idx = INDEX_NOT_FOUND;
+
+ if (ssd->status.guild_id != 0 && (g = ssd->guild) != NULL) {
int i;
- ARR_FIND(0, g->max_member, i, g->member[i].account_id == ssd->status.account_id && g->member[i].char_id == ssd->status.char_id);
- if( i < g->max_member ) ps = g->member[i].position;
+ int acc_id = ssd->status.account_id;
+ int chr_id = ssd->status.char_id;
+
+ ARR_FIND(0, g->max_member, i, g->member[i].account_id == acc_id && g->member[i].char_id == chr_id);
+
+ if (i < g->max_member)
+ pos_idx = g->member[i].position;
}
- if (p != NULL)
- memcpy(packet.party_name, p->party.name, NAME_LENGTH);
+ if (battle_config.display_party_name == 0 && g == NULL)
+ p = NULL; // Do not display party name, unless the character is also in a guild.
- if (g != NULL && ps >= 0 && ps < MAX_GUILDPOSITION) {
- memcpy(packet.guild_name, g->name,NAME_LENGTH);
- memcpy(packet.position_name, g->position[ps].name, NAME_LENGTH);
+ if (p != NULL) {
+ if ((ssd->fakename[0] != '\0' && (ssd->fakename_options & FAKENAME_OPTION_SHOW_PARTYNAME) != 0)
+ || ssd->fakename[0] == '\0') {
+ memcpy(packet.party_name, p->party.name, NAME_LENGTH);
+ }
}
-#if PACKETVER_MAIN_NUM >= 20150225 || PACKETVER_RE_NUM >= 20141126 || defined(PACKETVER_ZERO)
- // Achievement System [Dastgir/Hercules]
+ if (g != NULL && pos_idx >= 0 && pos_idx < MAX_GUILDPOSITION) {
+ if ((ssd->fakename[0] != '\0' && (ssd->fakename_options & FAKENAME_OPTION_SHOW_GUILDNAME) != 0)
+ || ssd->fakename[0] == '\0') {
+ memcpy(packet.guild_name, g->name,NAME_LENGTH);
+ }
+
+ if ((ssd->fakename[0] != '\0' && (ssd->fakename_options & FAKENAME_OPTION_SHOW_GUILDPOSITION) != 0)
+ || ssd->fakename[0] == '\0') {
+ memcpy(packet.position_name, g->position[pos_idx].name, NAME_LENGTH);
+ }
+ } else if (ssd->status.clan_id != 0) {
+ struct clan *c = clan->search(ssd->status.clan_id);
+
+ if (c != 0) {
+ if ((ssd->fakename[0] != '\0' && (ssd->fakename_options & FAKENAME_OPTION_SHOW_CLANPOSITION) != 0)
+ || ssd->fakename[0] == '\0') {
+ memcpy(packet.position_name, c->name, NAME_LENGTH);
+ }
+ }
+ }
+
+#if PACKETVER_MAIN_NUM >= 20150225 || PACKETVER_RE_NUM >= 20141126 || defined(PACKETVER_ZERO) // Title system.
if (ssd->status.title_id > 0) {
- packet.title_id = ssd->status.title_id;
+ if ((ssd->fakename[0] != '\0' && (ssd->fakename_options & FAKENAME_OPTION_SHOW_TITLE) != 0)
+ || ssd->fakename[0] == '\0') {
+ packet.title_id = ssd->status.title_id;
+ }
}
#endif
- // Update nearby clients
- clif->send(&packet, sizeof(packet), &ssd->bl, AREA);
+ clif->send(&packet, sizeof(packet), &ssd->bl, AREA); // Update nearby clients.
}
/// Taekwon Jump (TK_HIGHJUMP) effect (ZC_HIGHJUMP).
@@ -10318,7 +10483,8 @@ static const char *clif_process_chat_message(struct map_session_data *sd, const
* @param[in] sd The source character.
* @param[in] packet The packet data.
* @param[out] out_name The parsed target name buffer (must be a valid
- * buffer of size NAME_LENGTH).
+ * buffer of size NAME_LENGTH + 1 because the client
+ * can send 24 characters without NULL terminator).
* @param[out] out_message The output message buffer (must be a valid buffer).
* @param[in] out_messagelen The size of out_message.
* @retval true if the validation succeeded and the message is a chat message.
@@ -10328,7 +10494,7 @@ static const char *clif_process_chat_message(struct map_session_data *sd, const
*/
static bool clif_process_whisper_message(struct map_session_data *sd, const struct packet_whisper_message *packet, char *out_name, char *out_message, int out_messagelen)
{
- int namelen = 0, messagelen = 0;
+ int messagelen = 0;
nullpo_retr(false, sd);
nullpo_retr(false, packet);
@@ -10341,15 +10507,6 @@ static bool clif_process_whisper_message(struct map_session_data *sd, const stru
return false;
}
- // validate name
- namelen = (int)strnlen(packet->name, NAME_LENGTH-1); // name length (w/o zero byte)
-
- if (packet->name[namelen] != '\0') {
- // only restriction is that the name must be zero-terminated
- ShowWarning("clif_process_whisper_message: Player '%s' sent an unterminated name!\n", sd->status.name);
- return false;
- }
-
#if PACKETVER >= 20151001
// Packet doesn't include a NUL terminator
messagelen = packet->packet_len - NAME_LENGTH - 4;
@@ -10368,7 +10525,7 @@ static bool clif_process_whisper_message(struct map_session_data *sd, const stru
return false;
}
- safestrncpy(out_name, packet->name, namelen+1); // [!] packet->name is not NUL terminated
+ safestrncpy(out_name, packet->name, NAME_LENGTH + 1); // [!] packet->name is not NUL terminated
safestrncpy(out_message, packet->message, messagelen+1); // [!] packet->message is not necessarily NUL terminated
if (!pc->process_chat_message(sd, out_message))
@@ -10536,366 +10693,556 @@ static void clif_parse_WantToConnection(int fd, struct map_session_data *sd)
chrif->authreq(sd,false);
}
+/**
+ * Displays the common server messages upon login, chaning maps or teleporting to a character.
+ *
+ * @param sd The character who should receive the messages.
+ * @param connect_new Whether the character is logging in.
+ * @param change_map Whether the character is changing maps.
+ *
+ **/
+static void clif_load_end_ack_sub_messages(struct map_session_data *sd, bool connect_new, bool change_map)
+{
+ nullpo_retv(sd);
+
+ /** Display overweight messages. **/
+ if (((battle_config.display_overweight_messages & 0x1) != 0 && connect_new)
+ || ((battle_config.display_overweight_messages & 0x2) != 0 && !connect_new && change_map)) {
+ // Send the character's weight to the client. (With displaying overweight messages.)
+ clif->updatestatus(sd, SP_MAXWEIGHT);
+ clif->updatestatus(sd, SP_WEIGHT);
+ } else {
+ // Send the character's weight to the client. (Without displaying overweight messages.)
+ clif->updatestatus(sd, SP_WEIGHT);
+ clif->updatestatus(sd, SP_MAXWEIGHT);
+ }
+
+ /** Display configuration messages. **/
+ if (((battle_config.display_config_messages & 0x1) != 0 && connect_new)
+ || ((battle_config.display_config_messages & 0x2) != 0 && !connect_new && change_map)
+ || (battle_config.display_config_messages & 0x4) != 0) {
+#if PACKETVER >= 20070918
+ if ((battle_config.display_config_messages & 0x10) != 0)
+ clif->partyinvitationstate(sd);
+
+ if ((battle_config.display_config_messages & 0x20) != 0)
+ clif->equpcheckbox(sd);
+#endif
+
+#if PACKETVER_MAIN_NUM >= 20171025 || PACKETVER_RE_NUM >= 20170920
+ if ((battle_config.display_config_messages & 0x40) != 0)
+ clif->zc_config(sd, CZ_CONFIG_CALL, sd->status.allow_call);
+
+ if ((battle_config.display_config_messages & 0x80) != 0) {
+ if (sd->pd != NULL)
+ clif->zc_config(sd, CZ_CONFIG_PET_AUTOFEEDING, sd->pd->pet.autofeed);
+ else
+ clif->zc_config(sd, CZ_CONFIG_PET_AUTOFEEDING, false);
+ }
+
+ if ((battle_config.display_config_messages & 0x100) != 0) {
+ if (sd->hd != NULL)
+ clif->zc_config(sd, CZ_CONFIG_HOMUNCULUS_AUTOFEEDING, sd->hd->homunculus.autofeed);
+ else
+ clif->zc_config(sd, CZ_CONFIG_HOMUNCULUS_AUTOFEEDING, false);
+ }
+#endif
+ }
+
+ /** Display party options. **/
+ struct party_data *p = NULL;
+
+ if (sd->status.party_id != 0 && (p = party->search(sd->status.party_id)) != NULL) {
+ int flag;
+
+ if (p->state.option_auto_changed != 0)
+ flag = 0x04;
+ else if (connect_new)
+ flag = 0x20;
+ else if (change_map)
+ flag = 0x40;
+ else
+ flag = 0x80;
+
+ clif->party_option(p, sd, flag);
+ }
+
+ /** Display rate modifier messages. **/
+ if (((battle_config.display_rate_messages & 0x1) != 0 && connect_new)
+ || ((battle_config.display_rate_messages & 0x2) != 0 && !connect_new && change_map)
+ || (battle_config.display_rate_messages & 0x4) != 0) {
+ clif->show_modifiers(sd);
+ }
+
+ /** Display guild notice. **/
+ if (sd->guild != NULL) {
+ if (((battle_config.guild_notice_changemap & 0x1) != 0 && connect_new)
+ || ((battle_config.guild_notice_changemap & 0x2) != 0 && !connect_new && change_map)
+ || (battle_config.guild_notice_changemap & 0x4) != 0) {
+ clif->guild_notice(sd, sd->guild);
+ }
+ }
+}
+
+/**
+ * Notification from the client, that it has finished map loading and is about to display player's character. (CZ_NOTIFY_ACTORINIT)
+ *
+ * @code
+ * 007d
+ * @endcode
+ *
+ * @param fd The incoming file descriptor.
+ * @param sd The related character.
+ *
+ **/
static void clif_parse_LoadEndAck(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-/// Notification from the client, that it has finished map loading and is about to display player's character (CZ_NOTIFY_ACTORINIT).
-/// 007d
static void clif_parse_LoadEndAck(int fd, struct map_session_data *sd)
{
- bool first_time = false;
+ if (sd->state.using_megaphone != 0)
+ sd->state.using_megaphone = 0;
- if(sd->bl.prev != NULL)
+ if (sd->bl.prev != NULL)
return;
- if (!sd->state.active) { //Character loading is not complete yet!
- //Let pc->reg_received reinvoke this when ready.
+ if (sd->state.active == 0) { // Character loading is not complete yet! Let pc->reg_received reinvoke this when ready.
sd->state.connect_new = 0;
return;
}
- if (sd->state.rewarp) { //Rewarp player.
+ if (sd->state.rewarp != 0) { // Rewarp character.
sd->state.rewarp = 0;
clif->changemap(sd, sd->bl.m, sd->bl.x, sd->bl.y);
return;
}
sd->state.warping = 0;
- sd->state.dialog = 0;/* reset when warping, client dialog will go missing */
+ sd->state.dialog = 0; // Reset when warping. Client dialog will go missing.
- // Character Looks
+ // Character looks.
#if PACKETVER < 4
clif->changelook(&sd->bl, LOOK_WEAPON, sd->status.look.weapon);
clif->changelook(&sd->bl, LOOK_SHIELD, sd->status.look.shield);
#else
- clif->changelook(&sd->bl,LOOK_WEAPON,0);
+ clif->changelook(&sd->bl, LOOK_WEAPON, 0);
#endif
- if(sd->vd.cloth_color)
- clif->refreshlook(&sd->bl,sd->bl.id,LOOK_CLOTHES_COLOR,sd->vd.cloth_color,SELF);
+ if (sd->vd.cloth_color != 0)
+ clif->refreshlook(&sd->bl, sd->bl.id, LOOK_CLOTHES_COLOR, sd->vd.cloth_color, SELF);
- if (sd->vd.body_style)
- clif->refreshlook(&sd->bl,sd->bl.id,LOOK_BODY2,sd->vd.body_style,SELF);
+ if (sd->vd.body_style != 0)
+ clif->refreshlook(&sd->bl, sd->bl.id, LOOK_BODY2, sd->vd.body_style, SELF);
- // Send character inventory to the client.
- // call this before pc->checkitem() so that the client isn't called to delete a non-existent item.
+ /**
+ * Send character inventory to the client.
+ * Call this before pc->checkitem() so that the client isn't called to delete a non-existent items.
+ *
+ **/
clif->inventoryList(sd);
// Send the cart inventory, counts & weight to the client.
- if(pc_iscarton(sd)) {
+ if (pc_iscarton(sd)) {
clif->cartList(sd);
clif->updatestatus(sd, SP_CARTINFO);
}
- // Check for and delete unavailable/disabled items.
- pc->checkitem(sd);
+ /**
+ * In official servers, an item's unequip script is executed when entering a zone where the item is restricted,
+ * even if the item won't be unequipped.
+ *
+ **/
+ if (map->list[sd->bl.m].zone != NULL && map->list[sd->bl.m].zone->disabled_items_count != 0) {
+ struct map_zone_data *zone = map->list[sd->bl.m].zone;
+ int dis_items_cnt = zone->disabled_items_count;
+ int handled_equip = 0x00000000;
+
+ for (int i = 0; i < EQI_MAX; i++) {
+ if (sd->equip_index[i] == INDEX_NOT_FOUND)
+ continue;
+
+ int inv_idx = sd->equip_index[i];
+ struct item_data *equip_data = sd->inventory_data[inv_idx];
+
+ if (equip_data == NULL)
+ continue;
+
+ if ((handled_equip & equip_data->equip) != 0)
+ continue; // Equipment takes multiple slots and was already handled.
+
+ handled_equip |= equip_data->equip;
+
+ if (equip_data->unequip_script != NULL) {
+ int idx;
+
+ ARR_FIND(0, dis_items_cnt, idx, zone->disabled_items[idx] == equip_data->nameid);
+
+ if (idx < dis_items_cnt)
+ script->run_item_unequip_script(sd, equip_data, npc->fake_nd->bl.id);
+ }
+
+ if (inv_idx != sd->equip_index[i])
+ continue; // Unequip script execution corrupted the inventory index.
+
+ struct item *equip = &sd->status.inventory[inv_idx];
+
+ if (equip != NULL && !itemdb_isspecial(equip->card[0])) {
+ for (int slot = 0; slot < equip_data->slot; slot++) {
+ if (equip->card[slot] == 0)
+ continue;
+
+ struct item_data *card_data = itemdb->exists(equip->card[slot]);
- // Send the character's weight to the client.
- clif->updatestatus(sd, SP_WEIGHT);
- clif->updatestatus(sd, SP_MAXWEIGHT);
+ if (card_data != NULL && card_data->unequip_script != NULL) {
+ int idx;
- // guild
- // (needs to go before clif_spawn() to show guild emblems correctly)
- if(sd->status.guild_id)
- guild->send_memberinfoshort(sd,1);
+ ARR_FIND(0, dis_items_cnt, idx, zone->disabled_items[idx] == card_data->nameid);
- if(battle_config.pc_invincible_time > 0) {
- pc->setinvincibletimer(sd,battle_config.pc_invincible_time);
+ if (idx < dis_items_cnt)
+ script->run_item_unequip_script(sd, card_data, npc->fake_nd->bl.id);
+ }
+ }
+ }
+ }
}
- if( map->list[sd->bl.m].users++ == 0 && battle_config.dynamic_mobs )
+ // Check for and delete unavailable/disabled items.
+ pc->checkitem(sd);
+
+ // Send character's guild info to the client. Call this before clif->spawn() to show guild emblems correctly.
+ if (sd->status.guild_id != 0)
+ guild->send_memberinfoshort(sd, 1);
+
+ if (battle_config.pc_invincible_time > 0)
+ pc->setinvincibletimer(sd, battle_config.pc_invincible_time);
+
+ if (map->list[sd->bl.m].users++ == 0 && battle_config.dynamic_mobs != 0)
map->spawnmobs(sd->bl.m);
- if( map->list[sd->bl.m].instance_id >= 0 ) {
+ if (map->list[sd->bl.m].instance_id >= 0) {
instance->list[map->list[sd->bl.m].instance_id].users++;
instance->check_idle(map->list[sd->bl.m].instance_id);
}
- if( pc_has_permission(sd,PC_PERM_VIEW_HPMETER) ) {
+ if (pc_has_permission(sd, PC_PERM_VIEW_HPMETER)) {
map->list[sd->bl.m].hpmeter_visible++;
sd->state.hpmeter_visible = 1;
}
- if (!pc_isinvisible(sd)) { // increment the number of pvp players on the map
+ if (!pc_isinvisible(sd)) // Increment the number of pvp players on the map.
map->list[sd->bl.m].users_pvp++;
- }
- sd->state.debug_remove_map = 0; // temporary state to track double remove_map's [FlavioJS]
+ sd->state.debug_remove_map = 0; // Temporary state to track double calls of unit->remove_map(). [FlavioJS]
+ sd->state.callshop = 0; // Reset the callshop flag if the character changes map.
+ map->addblock(&sd->bl); // Add the character to the map.
+ clif->spawn(&sd->bl); // Spawn character client side.
+
+ clif_load_end_ack_sub_messages(sd, (sd->state.connect_new != 0), (sd->state.changemap != 0));
+
+ struct party_data *p = NULL;
- // reset the callshop flag if the player changes map
- sd->state.callshop = 0;
+ if (sd->status.party_id != 0)
+ p = party->search(sd->status.party_id);
- map->addblock(&sd->bl);
- clif->spawn(&sd->bl);
+ // Send character's party info to the client. Call this after clif->spawn() to show HP bars correctly.
+ if (p != NULL) {
+ if (sd->state.connect_new == 0) // Login is handled in party_member_joined().
+ party->send_movemap(sd);
- // Party
- // (needs to go after clif_spawn() to show hp bars correctly)
- if(sd->status.party_id) {
- party->send_movemap(sd);
- clif->party_hp(sd); // Show hp after displacement [LuzZza]
+ clif->party_hp(sd); // Show HP after displacement. [LuzZza]
}
- if( sd->bg_id ) clif->bg_hp(sd); // BattleGround System
+ if (sd->bg_id != 0)
+ clif->bg_hp(sd); // BattleGround system.
+
+ if (map->list[sd->bl.m].flag.pvp != 0 && !pc_isinvisible(sd)) {
+ if (battle_config.pk_mode == 0) { // Remove PVP stuff for pk_mode. [Valaris]
+ if (map->list[sd->bl.m].flag.pvp_nocalcrank == 0)
+ sd->pvp_timer = timer->add(timer->gettick() + 200, pc->calc_pvprank_timer, sd->bl.id, 0);
- if (map->list[sd->bl.m].flag.pvp && !pc_isinvisible(sd)) {
- if(!battle_config.pk_mode) { // remove pvp stuff for pk_mode [Valaris]
- if (!map->list[sd->bl.m].flag.pvp_nocalcrank)
- sd->pvp_timer = timer->add(timer->gettick()+200, pc->calc_pvprank_timer, sd->bl.id, 0);
sd->pvp_rank = 0;
sd->pvp_lastusers = 0;
sd->pvp_point = 5;
sd->pvp_won = 0;
sd->pvp_lost = 0;
}
+
clif->map_property(sd, MAPPROPERTY_FREEPVPZONE);
- } else
- // set flag, if it's a duel [LuzZza]
- if(sd->duel_group)
+ } else if(sd->duel_group != 0) { // Set flag, if it's a duel. [LuzZza]
clif->map_property(sd, MAPPROPERTY_FREEPVPZONE);
+ }
- if (map->list[sd->bl.m].flag.gvg_dungeon)
+ if (map->list[sd->bl.m].flag.gvg_dungeon != 0)
clif->map_property(sd, MAPPROPERTY_FREEPVPZONE); //TODO: Figure out the real packet to send here.
- if( map_flag_gvg2(sd->bl.m) )
+ if (map_flag_gvg2(sd->bl.m))
clif->map_property(sd, MAPPROPERTY_AGITZONE);
- // info about nearby objects
- // must use foreachinarea (CIRCULAR_AREA interferes with foreachinrange)
- map->foreachinarea(clif->getareachar, sd->bl.m, sd->bl.x-AREA_SIZE, sd->bl.y-AREA_SIZE, sd->bl.x+AREA_SIZE, sd->bl.y+AREA_SIZE, BL_ALL, sd);
+ // Info about nearby objects. Must use map->foreachinarea(). (CIRCULAR_AREA interferes with map->foreachinrange().)
+ map->foreachinarea(clif->getareachar, sd->bl.m, sd->bl.x - AREA_SIZE, sd->bl.y - AREA_SIZE,
+ sd->bl.x + AREA_SIZE, sd->bl.y + AREA_SIZE, BL_ALL, sd);
- // pet
- if( sd->pd ) {
- if( battle_config.pet_no_gvg && map_flag_gvg2(sd->bl.m) ) { //Return the pet to egg. [Skotlex]
- clif->message(sd->fd, msg_sd(sd,866)); // "Pets are not allowed in Guild Wars."
- pet->menu(sd, 3); //Option 3 is return to egg.
+ // Spawn pet.
+ if (sd->pd != NULL) {
+ if (map->list[sd->bl.m].flag.nopet != 0) { // Return the pet to egg. [Skotlex]
+ clif->message(sd->fd, msg_sd(sd, 866)); // Pets are not allowed in Guild Wars.
+ pet->menu(sd, 3); // Option 3 is return to egg.
} else {
- map->addblock(&sd->pd->bl);
- clif->spawn(&sd->pd->bl);
- clif->send_petdata(sd,sd->pd,0,0);
- clif->send_petstatus(sd);
- //skill->unit_move(&sd->pd->bl,timer->gettick(),1);
+ pet->spawn(sd, false);
}
}
- //homunculus [blackhole89]
- if( homun_alive(sd->hd) ) {
+ // Spawn homunculus. [blackhole89]
+ if (homun_alive(sd->hd)) {
map->addblock(&sd->hd->bl);
clif->spawn(&sd->hd->bl);
- clif->send_homdata(sd,SP_ACK,0);
- clif->hominfo(sd,sd->hd,1);
- clif->hominfo(sd,sd->hd,0); //for some reason, at least older clients want this sent twice
+ clif->send_homdata(sd, SP_ACK, 0);
+ clif->hominfo(sd,sd->hd, 1);
+ clif->hominfo(sd,sd->hd, 0); // For some reason, at least older clients want this sent twice.
clif->homskillinfoblock(sd);
- if( battle_config.hom_setting&0x8 )
- status_calc_bl(&sd->hd->bl, SCB_SPEED); //Homunc mimic their master's speed on each map change
- if( !(battle_config.hom_setting&0x2) )
- skill->unit_move(&sd->hd->bl,timer->gettick(),1); // apply land skills immediately
+
+ if ((battle_config.hom_setting & 0x8) != 0)
+ status_calc_bl(&sd->hd->bl, SCB_SPEED); // Homunculi mimic their master's speed on each map change.
+
+ if ((battle_config.hom_setting & 0x2) == 0)
+ skill->unit_move(&sd->hd->bl, timer->gettick(), 1); // Apply land skills immediately.
}
- if( sd->md ) {
+ // Spawn mercenary.
+ if (sd->md != NULL) {
map->addblock(&sd->md->bl);
clif->spawn(&sd->md->bl);
clif->mercenary_info(sd);
clif->mercenary_skillblock(sd);
- status_calc_bl(&sd->md->bl, SCB_SPEED); // Mercenary mimic their master's speed on each map change
+ status_calc_bl(&sd->md->bl, SCB_SPEED); // Mercenaries mimic their master's speed on each map change.
}
- if( sd->ed ) {
+ // Spawn elemental.
+ if (sd->ed != NULL) {
map->addblock(&sd->ed->bl);
clif->spawn(&sd->ed->bl);
clif->elemental_info(sd);
- clif->elemental_updatestatus(sd,SP_HP);
- clif->hpmeter_single(sd->fd,sd->ed->bl.id,sd->ed->battle_status.hp,sd->ed->battle_status.max_hp);
- clif->elemental_updatestatus(sd,SP_SP);
- status_calc_bl(&sd->ed->bl, SCB_SPEED); //Elemental mimic their master's speed on each map change
+ clif->elemental_updatestatus(sd, SP_HP);
+ clif->hpmeter_single(sd->fd, sd->ed->bl.id, sd->ed->battle_status.hp, sd->ed->battle_status.max_hp);
+ clif->elemental_updatestatus(sd, SP_SP);
+ status_calc_bl(&sd->ed->bl, SCB_SPEED); // Elementals mimic their master's speed on each map change.
}
- if(sd->state.connect_new) {
- int lv;
+ bool first_time = false;
+
+ if (sd->state.connect_new != 0) {
first_time = true;
sd->state.connect_new = 0;
clif->skillinfoblock(sd);
clif->hotkeysAll(sd);
- clif->updatestatus(sd,SP_BASEEXP);
- clif->updatestatus(sd,SP_NEXTBASEEXP);
- clif->updatestatus(sd,SP_JOBEXP);
- clif->updatestatus(sd,SP_NEXTJOBEXP);
- clif->updatestatus(sd,SP_SKILLPOINT);
+ clif->updatestatus(sd, SP_BASEEXP);
+ clif->updatestatus(sd, SP_NEXTBASEEXP);
+ clif->updatestatus(sd, SP_JOBEXP);
+ clif->updatestatus(sd, SP_NEXTJOBEXP);
+ clif->updatestatus(sd, SP_SKILLPOINT);
clif->initialstatus(sd);
- if (pc_isfalcon(sd))
- clif->status_change(&sd->bl, status->get_sc_icon(SC_FALCON), status->get_sc_relevant_bl_types(SC_FALCON), 1, 0, 0, 0, 0);
- if (pc_isridingpeco(sd) || pc_isridingdragon(sd))
- clif->status_change(&sd->bl, status->get_sc_icon(SC_RIDING), status->get_sc_relevant_bl_types(SC_RIDING), 1, 0, 0, 0, 0);
- else if (pc_isridingwug(sd))
- clif->status_change(&sd->bl, status->get_sc_icon(SC_WUGRIDER), status->get_sc_relevant_bl_types(SC_WUGRIDER), 1, 0, 0, 0, 0);
+ // Unequip items which can't be equipped by the character.
+ for (int i = 0; i < EQI_MAX; i++) {
+ if (sd->equip_index[i] >= 0 && pc->isequip(sd , sd->equip_index[i]) == 0)
+ pc->unequipitem(sd, sd->equip_index[i], PCUNEQUIPITEM_FORCE);
+ }
- if(sd->status.manner < 0)
- sc_start(NULL,&sd->bl,SC_NOCHAT,100,0,0);
+ if (pc_isfalcon(sd)) {
+ int sc_icn = status->get_sc_icon(SC_FALCON);
+ int sc_typ = status->get_sc_relevant_bl_types(SC_FALCON);
+ clif->status_change(&sd->bl, sc_icn, sc_typ, 1, 0, 0, 0, 0);
+ }
- //Auron reported that This skill only triggers when you logon on the map o.O [Skotlex]
- if ((lv = pc->checkskill(sd,SG_KNOWLEDGE)) > 0) {
- int i;
- for (i = 0; i < MAX_PC_FEELHATE; i++) {
+ if (pc_isridingpeco(sd) || pc_isridingdragon(sd)) {
+ int sc_icn = status->get_sc_icon(SC_RIDING);
+ int sc_typ = status->get_sc_relevant_bl_types(SC_RIDING);
+ clif->status_change(&sd->bl, sc_icn, sc_typ, 1, 0, 0, 0, 0);
+ } else if (pc_isridingwug(sd)) {
+ int sc_icn = status->get_sc_icon(SC_WUGRIDER);
+ int sc_typ = status->get_sc_relevant_bl_types(SC_WUGRIDER);
+ clif->status_change(&sd->bl, sc_icn, sc_typ, 1, 0, 0, 0, 0);
+ }
+
+ if (sd->status.manner < 0)
+ sc_start(NULL, &sd->bl, SC_NOCHAT, 100, 0, 0);
+
+ int lv = pc->checkskill(sd,SG_KNOWLEDGE);
+
+ // Auron reported that this skill only triggers when you logon on the map. [Skotlex]
+ if (lv > 0) {
+ for (int i = 0; i < MAX_PC_FEELHATE; i++) {
if (sd->bl.m == sd->feel_map[i].m) {
- sc_start(NULL,&sd->bl, SC_KNOWLEDGE, 100, lv, skill->get_time(SG_KNOWLEDGE, lv));
+ sc_start(NULL, &sd->bl, SC_KNOWLEDGE, 100, lv, skill->get_time(SG_KNOWLEDGE, lv));
break;
}
}
}
- if(sd->pd && sd->pd->pet.intimate > 900)
- clif->pet_emotion(sd->pd,(sd->pd->pet.class_ - 100)*100 + 50 + pet->hungry_val(sd->pd));
+ if (sd->pd != NULL && sd->pd->pet.intimate > PET_INTIMACY_LOYAL)
+ clif->pet_emotion(sd->pd, (sd->pd->pet.class_ - 100) * 100 + 50 + pet->hungry_val(sd->pd));
- if(homun_alive(sd->hd))
+ if (homun_alive(sd->hd))
homun->init_timers(sd->hd);
- if (map->night_flag && map->list[sd->bl.m].flag.nightenabled) {
+ if (map->night_flag != 0 && map->list[sd->bl.m].flag.nightenabled != 0) {
+ int sc_icn = status->get_sc_icon(SC_SKE);
+ int sc_typ = status->get_sc_relevant_bl_types(SC_SKE);
+
sd->state.night = 1;
- clif->status_change(&sd->bl, status->get_sc_icon(SC_SKE), status->get_sc_relevant_bl_types(SC_SKE), 1, 0, 0, 0, 0);
+ clif->status_change(&sd->bl, sc_icn, sc_typ, 1, 0, 0, 0, 0);
}
- // Notify everyone that this char logged in [Skotlex].
+ // Notify everyone that this character logged in. [Skotlex]
map->foreachpc(clif->friendslist_toggle_sub, sd->status.account_id, sd->status.char_id, 1);
- //Login Event
+#if PACKETVER >= 20171122
+ if (battle_config.show_tip_window != 0)
+ clif->open_ui_send(sd, ZC_TIPBOX_UI);
+#endif
+
+ // Run OnPCLoginEvent labels.
npc->script_event(sd, NPCE_LOGIN);
} else {
- //For some reason the client "loses" these on warp/map-change.
- clif->updatestatus(sd,SP_STR);
- clif->updatestatus(sd,SP_AGI);
- clif->updatestatus(sd,SP_VIT);
- clif->updatestatus(sd,SP_INT);
- clif->updatestatus(sd,SP_DEX);
- clif->updatestatus(sd,SP_LUK);
-
- if (sd->state.warp_clean) {
- // abort currently running script
+ // For some reason the client "loses" these on warp/map-change.
+ clif->updatestatus(sd, SP_STR);
+ clif->updatestatus(sd, SP_AGI);
+ clif->updatestatus(sd, SP_VIT);
+ clif->updatestatus(sd, SP_INT);
+ clif->updatestatus(sd, SP_DEX);
+ clif->updatestatus(sd, SP_LUK);
+
+ if (sd->state.warp_clean != 0) { // Abort currently running script.
sd->state.using_fake_npc = 0;
sd->state.menu_or_input = 0;
sd->npc_menu = 0;
- if(sd->npc_id)
+
+ if (sd->npc_id != 0)
npc->event_dequeue(sd);
} else {
sd->state.warp_clean = 1;
}
- if( sd->guild && ( battle_config.guild_notice_changemap == 2 || ( battle_config.guild_notice_changemap == 1 && sd->state.changemap ) ) )
- clif->guild_notice(sd,sd->guild);
}
- if( sd->state.changemap ) {// restore information that gets lost on map-change
-#if PACKETVER >= 20070918
- clif->partyinvitationstate(sd);
- clif->equpcheckbox(sd);
-#endif
+ if (sd->state.changemap != 0) { // Restore information that gets lost on map-change.
+ bool flee_penalty = (battle_config.bg_flee_penalty != 100 || battle_config.gvg_flee_penalty != 100);
+ bool is_gvg = (map_flag_gvg2(sd->state.pmap) || map_flag_gvg2(sd->bl.m));
+ bool is_bg = (map->list[sd->state.pmap].flag.battleground != 0 || map->list[sd->bl.m].flag.battleground != 0);
-#if PACKETVER_MAIN_NUM >= 20171025 || PACKETVER_RE_NUM >= 20170920
- if (sd->hd != NULL)
- clif->zc_config(sd, CZ_CONFIG_HOMUNCULUS_AUTOFEEDING, sd->hd->homunculus.autofeed);
- else
- clif->zc_config(sd, CZ_CONFIG_HOMUNCULUS_AUTOFEEDING, false);
-#endif
- if( (battle_config.bg_flee_penalty != 100 || battle_config.gvg_flee_penalty != 100)
- && (map_flag_gvg2(sd->state.pmap) || map_flag_gvg2(sd->bl.m)
- || map->list[sd->state.pmap].flag.battleground || map->list[sd->bl.m].flag.battleground) )
- status_calc_bl(&sd->bl, SCB_FLEE); //Refresh flee penalty
+ if (flee_penalty && (is_gvg || is_bg))
+ status_calc_bl(&sd->bl, SCB_FLEE); // Refresh flee penalty.
+
+ if (map->night_flag != 0 && map->list[sd->bl.m].flag.nightenabled != 0) {
+ if (sd->state.night == 0) { // Display night.
+ int sc_icn = status->get_sc_icon(SC_SKE);
+ int sc_typ = status->get_sc_relevant_bl_types(SC_SKE);
- if( map->night_flag && map->list[sd->bl.m].flag.nightenabled ) {
- //Display night.
- if( !sd->state.night ) {
sd->state.night = 1;
- clif->status_change(&sd->bl, status->get_sc_icon(SC_SKE), status->get_sc_relevant_bl_types(SC_SKE), 1, 0, 0, 0, 0);
+ clif->status_change(&sd->bl, sc_icn, sc_typ, 1, 0, 0, 0, 0);
}
- } else if( sd->state.night ) { //Clear night display.
+ } else if (sd->state.night != 0) { // Clear night display.
sd->state.night = 0;
clif->sc_end(&sd->bl, sd->bl.id, SELF, status->get_sc_icon(SC_SKE));
}
- if( map->list[sd->bl.m].flag.battleground ) {
- clif->map_type(sd, MAPTYPE_BATTLEFIELD); // Battleground Mode
- if( map->list[sd->bl.m].flag.battleground == 2 )
+ if (map->list[sd->bl.m].flag.battleground != 0) {
+ clif->map_type(sd, MAPTYPE_BATTLEFIELD); // Battleground mode.
+
+ if (map->list[sd->bl.m].flag.battleground == 2)
clif->bg_updatescore_single(sd);
}
- if( map->list[sd->bl.m].flag.allowks && !map_flag_ks(sd->bl.m) ) {
+ if (map->list[sd->bl.m].flag.allowks != 0 && !map_flag_ks(sd->bl.m)) {
char output[128];
+
sprintf(output, "%s", msg_sd(sd, 893)); // [ Kill Steal Protection Disabled. KS is allowed in this map ]
clif->broadcast(&sd->bl, output, (int)strlen(output) + 1, BC_BLUE, SELF);
}
- map->iwall_get(sd); // Updates Walls Info on this Map to Client
- status_calc_pc(sd, SCO_NONE);/* some conditions are map-dependent so we must recalculate */
+ map->iwall_get(sd); // Updates walls info on this map to client.
+ status_calc_pc(sd, SCO_NONE); // Some conditions are map-dependent so we must recalculate.
sd->state.changemap = false;
- if (channel->config->local && channel->config->local_autojoin) {
+ if (channel->config->local && channel->config->local_autojoin)
channel->map_join(sd);
- }
- if (channel->config->irc && channel->config->irc_autojoin) {
+
+ if (channel->config->irc && channel->config->irc_autojoin)
channel->irc_join(sd);
- }
}
mail->clear(sd);
-
- clif->maptypeproperty2(&sd->bl,SELF);
-
- /* Guild Aura Init */
- if( sd->state.gmaster_flag ) {
- guild->aura_refresh(sd,GD_LEADERSHIP,guild->checkskill(sd->guild,GD_LEADERSHIP));
- guild->aura_refresh(sd,GD_GLORYWOUNDS,guild->checkskill(sd->guild,GD_GLORYWOUNDS));
- guild->aura_refresh(sd,GD_SOULCOLD,guild->checkskill(sd->guild,GD_SOULCOLD));
- guild->aura_refresh(sd,GD_HAWKEYES,guild->checkskill(sd->guild,GD_HAWKEYES));
+ clif->maptypeproperty2(&sd->bl, SELF);
+
+ if (sd->guild != NULL) {
+ // Init guild aura.
+ if (sd->state.gmaster_flag != 0) {
+ guild->aura_refresh(sd, GD_LEADERSHIP, guild->checkskill(sd->guild, GD_LEADERSHIP));
+ guild->aura_refresh(sd, GD_GLORYWOUNDS, guild->checkskill(sd->guild, GD_GLORYWOUNDS));
+ guild->aura_refresh(sd, GD_SOULCOLD, guild->checkskill(sd->guild, GD_SOULCOLD));
+ guild->aura_refresh(sd, GD_HAWKEYES, guild->checkskill(sd->guild, GD_HAWKEYES));
+ }
}
- if( sd->state.vending ) { /* show we have a vending */
- clif->openvending(sd,sd->bl.id,sd->vending);
- clif->showvendingboard(&sd->bl,sd->message,0);
+ if (sd->state.vending != 0) { // Character is vending.
+ clif->openvending(sd, sd->bl.id, sd->vending);
+ clif->showvendingboard(&sd->bl, sd->message, 0);
}
- if(map->list[sd->bl.m].flag.loadevent) // Lance
+ if (map->list[sd->bl.m].flag.loadevent != 0) // Run OnPCLoadMapEvent labels. [Lance]
npc->script_event(sd, NPCE_LOADMAP);
- if (pc->checkskill(sd, SG_DEVIL) && !pc->nextjobexp(sd)) //blindness [Komurka]
+ if (pc->checkskill(sd, SG_DEVIL) > 0 && pc->nextjobexp(sd) == 0) // Blindness. [Komurka]
clif->sc_end(&sd->bl, sd->bl.id, SELF, status->get_sc_icon(SC_DEVIL1));
- if (sd->sc.opt2) //Client loses these on warp.
+ if (sd->sc.opt2 != 0) // Client loses these on warp.
clif->changeoption(&sd->bl);
- if( sd->sc.data[SC_MONSTER_TRANSFORM] && battle_config.mon_trans_disable_in_gvg && map_flag_gvg2(sd->bl.m) ){
+ if (sd->sc.data[SC_MONSTER_TRANSFORM] != NULL && battle_config.mon_trans_disable_in_gvg != 0
+ && map_flag_gvg2(sd->bl.m)) {
status_change_end(&sd->bl, SC_MONSTER_TRANSFORM, INVALID_TIMER);
- clif->message(sd->fd, msg_sd(sd,1488)); // Transforming into monster is not allowed in Guild Wars.
+ clif->message(sd->fd, msg_sd(sd, 1488)); // Transforming into monster is not allowed in Guild Wars.
}
clif->weather_check(sd);
- // This should be displayed last
- if( sd->guild && first_time )
- clif->guild_notice(sd, sd->guild);
-
- // For automatic triggering of NPCs after map loading (so you don't need to walk 1 step first)
- if (map->getcell(sd->bl.m, &sd->bl, sd->bl.x, sd->bl.y, CELL_CHKNPC))
- npc->touch_areanpc(sd,sd->bl.m,sd->bl.x,sd->bl.y);
+ // For automatic triggering of NPCs after map loading. (So you don't need to walk 1 step first.)
+ if (map->getcell(sd->bl.m, &sd->bl, sd->bl.x, sd->bl.y, CELL_CHKNPC) != 0)
+ npc->touch_areanpc(sd, sd->bl.m, sd->bl.x, sd->bl.y);
else
npc->untouch_areanpc(sd, sd->bl.m, sd->bl.x, sd->bl.y);
- /* it broke at some point (e.g. during a crash), so we make it visibly dead again. */
- if( !sd->status.hp && !pc_isdead(sd) && status->isdead(&sd->bl) )
+ // It broke at some point (e.g. during a crash), so we make it visibly dead again.
+ if (sd->status.hp == 0 && !pc_isdead(sd) && status->isdead(&sd->bl) != 0)
pc_setdead(sd);
- // If player is dead, and is spawned (such as @refresh) send death packet. [Valaris]
- if(pc_isdead(sd))
+ // Send death packet, if character is dead and is spawned (such as @refresh). [Valaris]
+ if (pc_isdead(sd)) {
clif->clearunit_area(&sd->bl, CLR_DEAD);
- else {
+ } else {
skill->usave_trigger(sd);
+
if (battle_config.player_warp_keep_direction == 1)
clif->changed_dir(&sd->bl, SELF); // Visually updates player facing direction
}
- // Trigger skill effects if you appear standing on them
- if(!battle_config.pc_invincible_time)
- skill->unit_move(&sd->bl,timer->gettick(),1);
+ // Trigger skill effects if you appear standing on them.
+ if (battle_config.pc_invincible_time == 0)
+ skill->unit_move(&sd->bl, timer->gettick(), 1);
- // NPC Quest / Event Icon Check [Kisuka]
#if PACKETVER >= 20090218
- quest->questinfo_refresh(sd);
+ quest->questinfo_refresh(sd); // NPC quest/event icon check. [Kisuka]
#endif
+
+ if (first_time) {
+ int i;
+
+ ARR_FIND(0, instance->instances, i, instance->list[i].owner_type == IOT_CHAR && instance->list[i].owner_id == sd->status.account_id);
+
+ if (i < instance->instances) {
+ sd->instances = 1;
+ CREATE(sd->instance, short, 1);
+ sd->instance[0] = instance->list[i].id;
+ clif->instance_join(sd->fd, instance->list[i].id);
+ }
+ }
}
/// Server's tick (ZC_NOTIFY_TIME).
@@ -11117,7 +11464,7 @@ static void clif_parse_WalkToXY(int fd, struct map_session_data *sd)
; //You CAN walk on this OPT1 value.
/*else if( sd->progressbar.npc_id )
clif->progressbar_abort(sd);*/
- else if (pc_cant_act(sd) || pc_isvending(sd))
+ else if (pc_cant_act_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd))
return;
if(sd->sc.data[SC_RUN] || sd->sc.data[SC_WUGDASH])
@@ -11130,7 +11477,7 @@ static void clif_parse_WalkToXY(int fd, struct map_session_data *sd)
//Set last idle time... [Skotlex]
pc->update_idle_time(sd, BCIDLE_WALK);
- unit->walktoxy(&sd->bl, x, y, 4);
+ unit->walk_toxy(&sd->bl, x, y, 4);
}
/// Notification about the result of a disconnect request (ZC_ACK_REQ_DISCONNECT).
@@ -11348,15 +11695,7 @@ static void clif_parse_MapMove(int fd, struct map_session_data *sd)
/// 0 = straight
/// 1 = turned CW
/// 2 = turned CCW
-/// dir:
-/// 0 = north
-/// 1 = northwest
-/// 2 = west
-/// 3 = southwest
-/// 4 = south
-/// 5 = southeast
-/// 6 = east
-/// 7 = northeast
+/// dir: @see enum unit_dir
static void clif_changed_dir(struct block_list *bl, enum send_target target)
{
unsigned char buf[64];
@@ -11487,8 +11826,10 @@ static void clif_parse_ActionRequest_sub(struct map_session_data *sd, int action
return;
}
- if (pc_cant_act(sd) || pc_issit(sd) || sd->sc.option&OPTION_HIDE || pc_isvending(sd))
+ if (pc_cant_act_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0)
+ || pc_issit(sd) || (sd->sc.option & OPTION_HIDE) != 0 || pc_isvending(sd)) {
return;
+ }
if (sd->sc.option & OPTION_COSTUME)
return;
@@ -11626,7 +11967,8 @@ static void clif_parse_WisMessage(int fd, struct map_session_data *sd)
struct map_session_data* dstsd;
int i;
- char target[NAME_LENGTH], message[CHAT_SIZE_MAX + 1];
+ char target[NAME_LENGTH + 1]; // Client can send 24 characters without NULL terminator.
+ char message[CHAT_SIZE_MAX + 1];
const struct packet_whisper_message *packet = RP2PTR(fd);
if (!clif->process_whisper_message(sd, packet, target, message, sizeof message))
@@ -11642,7 +11984,7 @@ static void clif_parse_WisMessage(int fd, struct map_session_data *sd)
char *str = target + 4; // Skip the NPC: string part.
struct npc_data *nd;
if ((nd = npc->name2id(str))) {
- char split_data[NUM_WHISPER_VAR][CHAT_SIZE_MAX];
+ char split_data[NUM_WHISPER_VAR][SCRIPT_STRING_VAR_LENGTH + 1];
char *split;
char output[256];
@@ -11787,7 +12129,7 @@ static void clif_parse_TakeItem(int fd, struct map_session_data *sd)
) )
break;
- if (pc_cant_act(sd))
+ if (pc_cant_act_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0))
break;
if (!pc->takeitem(sd, fitem))
@@ -11813,7 +12155,7 @@ static void clif_parse_DropItem(int fd, struct map_session_data *sd)
if (pc_isdead(sd))
break;
- if ( pc_cant_act2(sd) || sd->state.vending )
+ if (pc_cant_act_except_npc_chat(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0))
break;
if (sd->sc.count && (
@@ -11886,7 +12228,7 @@ static void clif_parse_EquipItem(int fd, struct map_session_data *sd)
return; //Out of bounds check.
if( sd->npc_id ) {
- if ( !sd->npc_item_flag )
+ if ((sd->npc_item_flag & ITEMENABLEDNPC_EQUIP) == 0 && sd->state.using_megaphone == 0)
return;
} else if (sd->state.storage_flag != STORAGE_FLAG_CLOSED || sd->sc.opt1)
; //You can equip/unequip stuff while storage is open/under status changes
@@ -11931,7 +12273,7 @@ static void clif_parse_UnequipItem(int fd, struct map_session_data *sd)
}
if( sd->npc_id ) {
- if ( !sd->npc_item_flag )
+ if ((sd->npc_item_flag & ITEMENABLEDNPC_EQUIP) == 0 && sd->state.using_megaphone == 0)
return;
} else if (sd->state.storage_flag != STORAGE_FLAG_CLOSED || sd->sc.opt1)
; //You can equip/unequip stuff while storage is open/under status changes
@@ -12131,7 +12473,7 @@ static void clif_parse_CreateChatRoom(int fd, struct map_session_data *sd) __att
/// 1 = public
static void clif_parse_CreateChatRoom(int fd, struct map_session_data *sd)
{
- if (sd->state.trading || pc_isdead(sd) || pc_isvending(sd))
+ if (sd->state.trading || (pc_isdead(sd) && (battle_config.allowed_actions_when_dead & PCALLOWACTION_CHAT) == 0) || pc_isvending(sd))
return;
int len = (int)RFIFOW(fd, 2) - 15;
@@ -12179,7 +12521,7 @@ static void clif_parse_ChatAddMember(int fd, struct map_session_data *sd) __attr
/// 00d9 <chat ID>.L <passwd>.8B
static void clif_parse_ChatAddMember(int fd, struct map_session_data *sd)
{
- if (sd->state.trading || pc_isdead(sd) || pc_isvending(sd))
+ if (sd->state.trading || (pc_isdead(sd) && (battle_config.allowed_actions_when_dead & PCALLOWACTION_CHAT) == 0) || pc_isvending(sd))
return;
int chatid = RFIFOL(fd,2);
@@ -12196,7 +12538,7 @@ static void clif_parse_ChatRoomStatusChange(int fd, struct map_session_data *sd)
/// 1 = public
static void clif_parse_ChatRoomStatusChange(int fd, struct map_session_data *sd)
{
- if (sd->state.trading || pc_isdead(sd) || pc_isvending(sd))
+ if (sd->state.trading || (pc_isdead(sd) && (battle_config.allowed_actions_when_dead & PCALLOWACTION_CHAT) == 0) || pc_isvending(sd))
return;
int len = (int)RFIFOW(fd, 2) - 15;
@@ -12231,7 +12573,7 @@ static void clif_parse_ChangeChatOwner(int fd, struct map_session_data *sd) __at
/// 1 = normal
static void clif_parse_ChangeChatOwner(int fd, struct map_session_data *sd)
{
- if (sd->state.trading || pc_isdead(sd) || pc_isvending(sd))
+ if (sd->state.trading || (pc_isdead(sd) && (battle_config.allowed_actions_when_dead & PCALLOWACTION_CHAT) == 0) || pc_isvending(sd))
return;
chat->change_owner(sd, RFIFOP(fd,6)); // non null terminated
@@ -12242,7 +12584,7 @@ static void clif_parse_KickFromChat(int fd, struct map_session_data *sd) __attri
/// 00e2 <name>.24B
static void clif_parse_KickFromChat(int fd, struct map_session_data *sd)
{
- if (sd->state.trading || pc_isdead(sd) || pc_isvending(sd))
+ if (sd->state.trading || (pc_isdead(sd) && (battle_config.allowed_actions_when_dead & PCALLOWACTION_CHAT) == 0) || pc_isvending(sd))
return;
chat->kick(sd, RFIFOP(fd,2)); // non null terminated
@@ -12253,7 +12595,7 @@ static void clif_parse_ChatLeave(int fd, struct map_session_data *sd) __attribut
/// 00e3
static void clif_parse_ChatLeave(int fd, struct map_session_data *sd)
{
- if (sd->state.trading || pc_isdead(sd) || pc_isvending(sd))
+ if (sd->state.trading || (pc_isdead(sd) && (battle_config.allowed_actions_when_dead & PCALLOWACTION_CHAT) == 0) || pc_isvending(sd))
return;
chat->leave(sd, false);
@@ -12280,12 +12622,12 @@ static void clif_parse_TradeRequest(int fd, struct map_session_data *sd) __attri
/// 00e4 <account id>.L
static void clif_parse_TradeRequest(int fd, struct map_session_data *sd)
{
- if (sd->state.trading || pc_isdead(sd) || pc_isvending(sd))
+ if (sd->state.trading || (pc_isdead(sd) && (battle_config.allowed_actions_when_dead & PCALLOWACTION_TRADE) == 0) || pc_isvending(sd))
return;
struct map_session_data *t_sd = map->id2sd(RFIFOL(fd, 2));
- if (sd->chat_id == 0 && pc_cant_act(sd))
+ if (pc_cant_act_except_npc_chat(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0))
return; //You can trade while in a chatroom.
// @noask [LuzZza]
@@ -12310,7 +12652,7 @@ static void clif_parse_TradeAck(int fd, struct map_session_data *sd) __attribute
/// 4 = rejected
static void clif_parse_TradeAck(int fd, struct map_session_data *sd)
{
- if (sd->state.trading || pc_isdead(sd) || pc_isvending(sd))
+ if (sd->state.trading || (pc_isdead(sd) && (battle_config.allowed_actions_when_dead & PCALLOWACTION_TRADE) == 0) || pc_isvending(sd))
return;
trade->ack(sd,RFIFOB(fd,2));
@@ -12321,7 +12663,7 @@ static void clif_parse_TradeAddItem(int fd, struct map_session_data *sd) __attri
/// 00e8 <index>.W <amount>.L
static void clif_parse_TradeAddItem(int fd, struct map_session_data *sd)
{
- if (!sd->state.trading || pc_isdead(sd) || pc_isvending(sd))
+ if (sd->state.trading == 0 || (pc_isdead(sd) && (battle_config.allowed_actions_when_dead & PCALLOWACTION_TRADE) == 0) || pc_isvending(sd))
return;
short index = RFIFOW(fd,2);
@@ -12338,8 +12680,9 @@ static void clif_parse_TradeOk(int fd, struct map_session_data *sd) __attribute_
/// 00eb
static void clif_parse_TradeOk(int fd, struct map_session_data *sd)
{
- if (pc_isdead(sd) || pc_isvending(sd))
+ if ((pc_isdead(sd) && (battle_config.allowed_actions_when_dead & PCALLOWACTION_TRADE) == 0) || pc_isvending(sd))
return;
+
trade->ok(sd);
}
@@ -12348,7 +12691,7 @@ static void clif_parse_TradeCancel(int fd, struct map_session_data *sd) __attrib
/// 00ed
static void clif_parse_TradeCancel(int fd, struct map_session_data *sd)
{
- if (pc_isdead(sd) || pc_isvending(sd))
+ if ((pc_isdead(sd) && (battle_config.allowed_actions_when_dead & PCALLOWACTION_TRADE) == 0) || pc_isvending(sd))
return;
trade->cancel(sd);
@@ -12359,7 +12702,7 @@ static void clif_parse_TradeCommit(int fd, struct map_session_data *sd) __attrib
/// 00ef
static void clif_parse_TradeCommit(int fd, struct map_session_data *sd)
{
- if (pc_isdead(sd) || pc_isvending(sd))
+ if ((pc_isdead(sd) && (battle_config.allowed_actions_when_dead & PCALLOWACTION_TRADE) == 0) || pc_isvending(sd))
return;
trade->commit(sd);
@@ -12379,8 +12722,10 @@ static void clif_parse_PutItemToCart(int fd, struct map_session_data *sd) __attr
static void clif_parse_PutItemToCart(int fd, struct map_session_data *sd)
{
int flag = 0;
- if (pc_istrading(sd) || sd->state.prevend)
+
+ if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || sd->state.prevend != 0)
return;
+
if (!pc_iscarton(sd))
return;
if ( (flag = pc->putitemtocart(sd,RFIFOW(fd,2)-2,RFIFOL(fd,4))) ) {
@@ -12394,8 +12739,9 @@ static void clif_parse_GetItemFromCart(int fd, struct map_session_data *sd) __at
/// 0127 <index>.W <amount>.L
static void clif_parse_GetItemFromCart(int fd, struct map_session_data *sd)
{
- if (pc_istrading(sd) || sd->state.prevend)
+ if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || sd->state.prevend != 0)
return;
+
if (!pc_iscarton(sd))
return;
pc->getitemfromcart(sd,RFIFOW(fd,2)-2,RFIFOL(fd,4));
@@ -12465,7 +12811,7 @@ static void clif_parse_ChangeCart(int fd, struct map_session_data *sd)
if (pc->checkskill(sd, MC_CHANGECART) == 0)
return;
- if (sd->npc_id || sd->state.workinprogress & 1) {
+ if ((sd->npc_id != 0 && sd->state.using_megaphone == 0) || (sd->state.workinprogress & 1) != 0) {
#if PACKETVER >= 20110308
clif->msgtable(sd, MSG_BUSY);
#else
@@ -12652,6 +12998,16 @@ static void clif_useSkillToIdReal(int fd, struct map_session_data *sd, int skill
{
int64 tick = timer->gettick();
+ pc->autocast_set_current(sd, skill_id);
+
+ /**
+ * According to Skotlex' comment below, the client sometimes passes 0 for the skill level.
+ * Even though this seems to only affect guild skills, sd->autocast.skill_lv is used
+ * for the auto-cast data validation if skill_lv is 0.
+ *
+ **/
+ skill->validate_autocast_data(sd, skill_id, (skill_lv == 0) ? sd->auto_cast_current.skill_lv : skill_lv);
+
if (skill_lv < 1)
skill_lv = 1; //No clue, I have seen the client do this with guild skills :/ [Skotlex]
@@ -12672,7 +13028,11 @@ static void clif_useSkillToIdReal(int fd, struct map_session_data *sd, int skill
// Whether skill fails or not is irrelevant, the char ain't idle. [Skotlex]
pc->update_idle_time(sd, BCIDLE_USESKILLTOID);
- if (sd->npc_id || sd->state.workinprogress & 1) {
+ bool allow_self_skill = ((tmp & INF_SELF_SKILL) != 0 && (skill->get_nk(skill_id) & NK_NO_DAMAGE) != 0);
+ allow_self_skill = (allow_self_skill && battle_config.skill_enabled_npc == SKILLENABLEDNPC_SELF);
+
+ if ((sd->npc_id != 0 && sd->state.using_megaphone == 0 && !allow_self_skill && battle_config.skill_enabled_npc != SKILLENABLEDNPC_ALL)
+ || (sd->state.workinprogress & 1) != 0) {
#if PACKETVER >= 20110308
clif->msgtable(sd, MSG_BUSY);
#else
@@ -12681,7 +13041,7 @@ static void clif_useSkillToIdReal(int fd, struct map_session_data *sd, int skill
return;
}
- if (pc_cant_act(sd)
+ if (pc_cant_act_except_npc(sd)
&& skill_id != RK_REFRESH
&& !(skill_id == SR_GENTLETOUCH_CURE && (sd->sc.opt1 == OPT1_STONE || sd->sc.opt1 == OPT1_FREEZE || sd->sc.opt1 == OPT1_STUN))
&& (sd->state.storage_flag != STORAGE_FLAG_CLOSED && !(tmp&INF_SELF_SKILL)) // SELF skills can be used with the storage open, issue: 8027
@@ -12702,10 +13062,10 @@ static void clif_useSkillToIdReal(int fd, struct map_session_data *sd, int skill
target_id = sd->bl.id;
if (sd->ud.skilltimer != INVALID_TIMER) {
- if (skill_id != SA_CASTCANCEL && skill_id != SO_SPELLFIST)
+ if (skill_id != SA_CASTCANCEL && skill_id != SO_SPELLFIST && sd->auto_cast_current.type == AUTOCAST_NONE)
return;
} else if (DIFF_TICK(tick, sd->ud.canact_tick) < 0) {
- if (sd->skillitem != skill_id) {
+ if (sd->auto_cast_current.type == AUTOCAST_NONE) {
clif->skill_fail(sd, skill_id, USESKILL_FAIL_SKILLINTERVAL, 0, 0);
return;
}
@@ -12723,16 +13083,16 @@ static void clif_useSkillToIdReal(int fd, struct map_session_data *sd, int skill
} else if (sd->menuskill_id != SA_AUTOSPELL)
return; //Can't use skills while a menu is open.
}
- if (sd->skillitem == skill_id) {
- if (skill_lv != sd->skillitemlv)
- skill_lv = sd->skillitemlv;
+ if (sd->auto_cast_current.type != AUTOCAST_NONE) {
+ if (skill_lv != sd->auto_cast_current.skill_lv)
+ skill_lv = sd->auto_cast_current.skill_lv;
if (!(tmp&INF_SELF_SKILL))
pc->delinvincibletimer(sd); // Target skills through items cancel invincibility. [Inkfish]
unit->skilluse_id(&sd->bl, target_id, skill_id, skill_lv);
return;
}
- sd->skillitem = sd->skillitemlv = 0;
+ pc->autocast_clear(sd);
if (skill_id >= GD_SKILLBASE && skill_id < GD_MAX) {
if (sd->state.gmaster_flag)
@@ -12793,6 +13153,18 @@ static void clif_parse_UseSkillToPosSub(int fd, struct map_session_data *sd, uin
int64 tick = timer->gettick();
nullpo_retv(sd);
+
+ pc->autocast_set_current(sd, skill_id);
+
+ /**
+ * When using clif_item_skill() to initiate the execution of ground skills,
+ * the client sometimes passes 0 for the skill level in packet 0x0af4.
+ * In that case sd->autocast.skill_lv is used for the auto-cast data validation,
+ * since clif_item_skill() is only used for auto-cast skills.
+ *
+ **/
+ skill->validate_autocast_data(sd, skill_id, (skill_lv == 0) ? sd->auto_cast_current.skill_lv : skill_lv);
+
if( !(skill->get_inf(skill_id)&INF_GROUND_SKILL) )
return; //Using a target skill on the ground? WRONG.
@@ -12806,7 +13178,8 @@ static void clif_parse_UseSkillToPosSub(int fd, struct map_session_data *sd, uin
return;
}
- if (sd->state.workinprogress & 1) {
+ if ((sd->npc_id != 0 && sd->state.using_megaphone == 0 && battle_config.skill_enabled_npc != SKILLENABLEDNPC_ALL)
+ || (sd->state.workinprogress & 1) != 0) {
#if PACKETVER >= 20110308
clif->msgtable(sd, MSG_BUSY);
#else
@@ -12829,11 +13202,11 @@ static void clif_parse_UseSkillToPosSub(int fd, struct map_session_data *sd, uin
safestrncpy(sd->message, RFIFOP(fd, skillmoreinfo), TALKBOX_MESSAGE_SIZE);
}
- if( sd->ud.skilltimer != INVALID_TIMER )
+ if (sd->ud.skilltimer != INVALID_TIMER && sd->auto_cast_current.type == AUTOCAST_NONE)
return;
if( DIFF_TICK(tick, sd->ud.canact_tick) < 0 ) {
- if( sd->skillitem != skill_id ) {
+ if (sd->auto_cast_current.type == AUTOCAST_NONE) {
clif->skill_fail(sd, skill_id, USESKILL_FAIL_SKILLINTERVAL, 0, 0);
return;
}
@@ -12854,13 +13227,13 @@ static void clif_parse_UseSkillToPosSub(int fd, struct map_session_data *sd, uin
pc->delinvincibletimer(sd);
- if( sd->skillitem == skill_id ) {
- if( skill_lv != sd->skillitemlv )
- skill_lv = sd->skillitemlv;
+ if (sd->auto_cast_current.type != AUTOCAST_NONE) {
+ if (skill_lv != sd->auto_cast_current.skill_lv)
+ skill_lv = sd->auto_cast_current.skill_lv;
unit->skilluse_pos(&sd->bl, x, y, skill_id, skill_lv);
} else {
int lv;
- sd->skillitem = sd->skillitemlv = 0;
+ pc->autocast_clear(sd);
if( (lv = pc->checkskill(sd, skill_id)) > 0 ) {
if( skill_lv > lv )
skill_lv = lv;
@@ -12876,7 +13249,7 @@ static void clif_parse_UseSkillToPos(int fd, struct map_session_data *sd) __attr
/// There are various variants of this packet, some of them have padding between fields.
static void clif_parse_UseSkillToPos(int fd, struct map_session_data *sd)
{
- if (pc_cant_act(sd))
+ if (pc_cant_act_except_npc(sd))
return;
if (pc_issit(sd))
return;
@@ -12897,7 +13270,7 @@ static void clif_parse_UseSkillToPosMoreInfo(int fd, struct map_session_data *sd
/// There are various variants of this packet, some of them have padding between fields.
static void clif_parse_UseSkillToPosMoreInfo(int fd, struct map_session_data *sd)
{
- if (pc_cant_act(sd))
+ if (pc_cant_act_except_npc(sd))
return;
if (pc_issit(sd))
return;
@@ -12926,14 +13299,23 @@ static void clif_parse_UseSkillMap(int fd, struct map_session_data *sd)
return;
// It is possible to use teleport with the storage window open issue:8027
- if (pc_cant_act(sd) && (sd->state.storage_flag == STORAGE_FLAG_CLOSED && skill_id != AL_TELEPORT)) {
+ if ((pc_cant_act_except_npc(sd) && sd->state.storage_flag == STORAGE_FLAG_CLOSED && skill_id != AL_TELEPORT)
+ || (sd->npc_id != 0 && sd->state.using_megaphone == 0 && battle_config.skill_enabled_npc != SKILLENABLEDNPC_ALL)) {
clif_menuskill_clear(sd);
return;
}
+
+ pc->autocast_set_current(sd, skill_id);
+
+ /**
+ * Since no skill level was passed use 0 to notify skill_validate_autocast_data() of this special case.
+ *
+ **/
+ skill->validate_autocast_data(sd, skill_id, 0);
pc->delinvincibletimer(sd);
skill->castend_map(sd,skill_id,map_name);
- pc->itemskill_clear(sd);
+ pc->autocast_clear(sd);
}
static void clif_parse_RequestMemo(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
@@ -12961,7 +13343,8 @@ static void clif_parse_ProduceMix(int fd, struct map_session_data *sd)
default:
return;
}
- if (pc_istrading(sd) || pc_isdead(sd) || pc_isvending(sd)) {
+ if (pc_istrading_except_npc(sd) || pc_isdead(sd) || pc_isvending(sd)
+ || (sd->npc_id != 0 && sd->state.using_megaphone == 0)) {
//Make it fail to avoid shop exploits where you sell something different than you see.
clif->skill_fail(sd, sd->ud.skill_id, USESKILL_FAIL_LEVEL, 0, 0);
clif_menuskill_clear(sd);
@@ -12992,7 +13375,8 @@ static void clif_parse_Cooking(int fd, struct map_session_data *sd)
if (type == 6 && sd->menuskill_id != GN_MIX_COOKING && sd->menuskill_id != GN_S_PHARMACY)
return;
- if (pc_istrading(sd) || pc_isdead(sd) || pc_isvending(sd)) {
+ if (pc_istrading_except_npc(sd) || pc_isdead(sd) || pc_isvending(sd)
+ || (sd->npc_id != 0 && sd->state.using_megaphone == 0)) {
//Make it fail to avoid shop exploits where you sell something different than you see.
clif->skill_fail(sd, sd->ud.skill_id, USESKILL_FAIL_LEVEL, 0, 0);
clif_menuskill_clear(sd);
@@ -13012,7 +13396,8 @@ static void clif_parse_RepairItem(int fd, struct map_session_data *sd)
if (sd->menuskill_id != BS_REPAIRWEAPON)
return;
- if (pc_istrading(sd) || pc_isdead(sd) || pc_isvending(sd)) {
+ if (pc_istrading_except_npc(sd) || pc_isdead(sd) || pc_isvending(sd)
+ || (sd->npc_id != 0 && sd->state.using_megaphone == 0)) {
//Make it fail to avoid shop exploits where you sell something different than you see.
clif->skill_fail(sd, sd->ud.skill_id, USESKILL_FAIL_LEVEL, 0, 0);
clif_menuskill_clear(sd);
@@ -13031,7 +13416,8 @@ static void clif_parse_WeaponRefine(int fd, struct map_session_data *sd)
if (sd->menuskill_id != WS_WEAPONREFINE) //Packet exploit?
return;
- if (pc_istrading(sd) || pc_isdead(sd) || pc_isvending(sd)) {
+ if (pc_istrading_except_npc(sd) || pc_isdead(sd) || pc_isvending(sd)
+ || (sd->npc_id != 0 && sd->state.using_megaphone == 0)) {
//Make it fail to avoid shop exploits where you sell something different than you see.
clif->skill_fail(sd, sd->ud.skill_id, USESKILL_FAIL_LEVEL, 0, 0);
clif_menuskill_clear(sd);
@@ -13118,7 +13504,7 @@ static void clif_parse_NpcStringInput(int fd, struct map_session_data *sd) __att
/// 01d5 <packet len>.W <npc id>.L <string>.?B
static void clif_parse_NpcStringInput(int fd, struct map_session_data *sd)
{
- if (sd->state.trading || pc_isdead(sd) || pc_isvending(sd))
+ if ((sd->state.trading != 0 || pc_isvending(sd) || pc_isdead(sd)) && sd->state.using_megaphone == 0)
return;
int len = RFIFOW(fd, 2);
@@ -13134,7 +13520,7 @@ static void clif_parse_NpcStringInput(int fd, struct map_session_data *sd)
if (len < 9)
return;
- npcid = RFIFOL(fd, 4);
+ npcid = (sd->state.using_megaphone == 0) ? RFIFOL(fd, 4) : sd->npc_id;
message = RFIFOP(fd, 8);
safestrncpy(sd->npc_str, message, min(message_len,CHATBOX_SIZE));
@@ -13203,7 +13589,8 @@ static void clif_parse_SelectArrow(int fd, struct map_session_data *sd) __attrib
static void clif_parse_SelectArrow(int fd, struct map_session_data *sd)
{
int itemId;
- if (pc_istrading(sd) || pc_isdead(sd) || pc_isvending(sd)) {
+ if (pc_istrading_except_npc(sd) || pc_isdead(sd) || pc_isvending(sd)
+ || (sd->npc_id != 0 && sd->state.using_megaphone == 0)) {
//Make it fail to avoid shop exploits where you sell something different than you see.
clif->skill_fail(sd, sd->ud.skill_id, USESKILL_FAIL_LEVEL, 0, 0);
clif_menuskill_clear(sd);
@@ -13489,7 +13876,7 @@ static void clif_parse_CreateParty(int fd, struct map_session_data *sd) __attrib
/// 01e8 <party name>.24B <item pickup rule>.B <item share rule>.B (CZ_MAKE_GROUP2)
static void clif_parse_CreateParty(int fd, struct map_session_data *sd)
{
- if (pc_istrading(sd) || pc_isvending(sd))
+ if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd))
return;
char name[NAME_LENGTH];
@@ -13512,7 +13899,7 @@ static void clif_parse_CreateParty(int fd, struct map_session_data *sd)
static void clif_parse_CreateParty2(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
static void clif_parse_CreateParty2(int fd, struct map_session_data *sd)
{
- if (pc_istrading(sd) || pc_isvending(sd))
+ if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd))
return;
char name[NAME_LENGTH];
@@ -13540,7 +13927,7 @@ static void clif_parse_PartyInvite(int fd, struct map_session_data *sd) __attrib
/// 02c4 <char name>.24B (CZ_PARTY_JOIN_REQ)
static void clif_parse_PartyInvite(int fd, struct map_session_data *sd)
{
- if (pc_istrading(sd) || pc_isvending(sd))
+ if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd))
return;
struct map_session_data *t_sd;
@@ -13564,7 +13951,7 @@ static void clif_parse_PartyInvite(int fd, struct map_session_data *sd)
static void clif_parse_PartyInvite2(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
static void clif_parse_PartyInvite2(int fd, struct map_session_data *sd)
{
- if (pc_istrading(sd) || pc_isvending(sd))
+ if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd))
return;
struct map_session_data *t_sd;
@@ -13597,7 +13984,7 @@ static void clif_parse_ReplyPartyInvite(int fd, struct map_session_data *sd) __a
/// 1 = accept
static void clif_parse_ReplyPartyInvite(int fd, struct map_session_data *sd)
{
- if (pc_istrading(sd) || pc_isvending(sd)) {
+ if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd)) {
party->reply_invite(sd, RFIFOL(fd, 2), 0);
return;
}
@@ -13608,7 +13995,7 @@ static void clif_parse_ReplyPartyInvite(int fd, struct map_session_data *sd)
static void clif_parse_ReplyPartyInvite2(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
static void clif_parse_ReplyPartyInvite2(int fd, struct map_session_data *sd)
{
- if (pc_istrading(sd) || pc_isvending(sd)) {
+ if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd)) {
party->reply_invite(sd, RFIFOL(fd, 2), 0);
return;
}
@@ -13621,7 +14008,7 @@ static void clif_parse_LeaveParty(int fd, struct map_session_data *sd) __attribu
/// 0100
static void clif_parse_LeaveParty(int fd, struct map_session_data *sd)
{
- if (pc_istrading(sd) || pc_isvending(sd))
+ if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd))
return;
if (map->list[sd->bl.m].flag.partylock) {
@@ -13637,7 +14024,7 @@ static void clif_parse_RemovePartyMember(int fd, struct map_session_data *sd) __
/// 0103 <account id>.L <char name>.24B
static void clif_parse_RemovePartyMember(int fd, struct map_session_data *sd)
{
- if (pc_istrading(sd) || pc_isvending(sd))
+ if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd))
return;
if (map->list[sd->bl.m].flag.partylock) {
@@ -13654,7 +14041,7 @@ static void clif_parse_PartyChangeOption(int fd, struct map_session_data *sd) __
/// 07d7 <exp share rule>.L <item pickup rule>.B <item share rule>.B (CZ_GROUPINFO_CHANGE_V2)
static void clif_parse_PartyChangeOption(int fd, struct map_session_data *sd)
{
- if (pc_istrading(sd) || pc_isvending(sd))
+ if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd))
return;
struct party_data *p;
@@ -13709,7 +14096,7 @@ static void clif_parse_PartyChangeLeader(int fd, struct map_session_data *sd) __
/// 07da <account id>.L
static void clif_parse_PartyChangeLeader(int fd, struct map_session_data *sd)
{
- if (pc_istrading(sd) || pc_isvending(sd))
+ if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd))
return;
party->changeleader(sd, map->id2sd(RFIFOL(fd,2)));
@@ -13724,7 +14111,7 @@ static void clif_parse_PartyBookingRegisterReq(int fd, struct map_session_data *
static void clif_parse_PartyBookingRegisterReq(int fd, struct map_session_data *sd)
{
#ifndef PARTY_RECRUIT
- if (pc_istrading(sd) || pc_isvending(sd))
+ if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd))
return;
short level = RFIFOW(fd,2);
@@ -13769,7 +14156,7 @@ static void clif_parse_PartyBookingSearchReq(int fd, struct map_session_data *sd
static void clif_parse_PartyBookingSearchReq(int fd, struct map_session_data *sd)
{
#ifndef PARTY_RECRUIT
- if (pc_istrading(sd) || pc_isvending(sd))
+ if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd))
return;
short level = RFIFOW(fd,2);
@@ -13823,7 +14210,7 @@ static void clif_parse_PartyBookingDeleteReq(int fd, struct map_session_data *sd
static void clif_parse_PartyBookingDeleteReq(int fd, struct map_session_data *sd)
{
#ifndef PARTY_RECRUIT
- if (pc_istrading(sd) || pc_isvending(sd))
+ if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd))
return;
if (party->booking_delete(sd))
@@ -13862,7 +14249,7 @@ static void clif_parse_PartyBookingUpdateReq(int fd, struct map_session_data *sd
static void clif_parse_PartyBookingUpdateReq(int fd, struct map_session_data *sd)
{
#ifndef PARTY_RECRUIT
- if (pc_istrading(sd) || pc_isvending(sd))
+ if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd))
return;
short job[PARTY_BOOKING_JOBS];
@@ -13881,7 +14268,7 @@ static void clif_parse_PartyBookingUpdateReq(int fd, struct map_session_data *sd
static void clif_PartyBookingInsertNotify(struct map_session_data *sd, struct party_booking_ad_info *pb_ad)
{
#ifndef PARTY_RECRUIT
- if (pc_istrading(sd) || pc_isvending(sd))
+ if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd))
return;
int i;
@@ -13952,7 +14339,7 @@ static void clif_parse_PartyRecruitRegisterReq(int fd, struct map_session_data *
static void clif_parse_PartyRecruitRegisterReq(int fd, struct map_session_data *sd)
{
#ifdef PARTY_RECRUIT
- if (pc_istrading(sd) || pc_isvending(sd))
+ if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd))
return;
short level = RFIFOW(fd, 2);
@@ -14026,7 +14413,7 @@ static void clif_parse_PartyRecruitSearchReq(int fd, struct map_session_data *sd
static void clif_parse_PartyRecruitSearchReq(int fd, struct map_session_data *sd)
{
#ifdef PARTY_RECRUIT
- if (pc_istrading(sd) || pc_isvending(sd))
+ if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd))
return;
short level = RFIFOW(fd, 2);
@@ -14046,7 +14433,7 @@ static void clif_parse_PartyRecruitDeleteReq(int fd, struct map_session_data *sd
static void clif_parse_PartyRecruitDeleteReq(int fd, struct map_session_data *sd)
{
#ifdef PARTY_RECRUIT
- if (pc_istrading(sd) || pc_isvending(sd))
+ if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd))
return;
if (party->booking_delete(sd))
@@ -14085,7 +14472,7 @@ static void clif_parse_PartyRecruitUpdateReq(int fd, struct map_session_data *sd
static void clif_parse_PartyRecruitUpdateReq(int fd, struct map_session_data *sd)
{
#ifdef PARTY_RECRUIT
- if (pc_istrading(sd) || pc_isvending(sd))
+ if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd))
return;
const char *notice = RFIFOP(fd, 2);
@@ -14161,7 +14548,7 @@ static void clif_parse_PartyBookingAddFilteringList(int fd, struct map_session_d
static void clif_parse_PartyBookingAddFilteringList(int fd, struct map_session_data *sd)
{
#ifdef PARTY_RECRUIT
- if (pc_istrading(sd) || pc_isvending(sd))
+ if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd))
return;
int index = RFIFOL(fd, 2);
@@ -14178,7 +14565,7 @@ static void clif_parse_PartyBookingSubFilteringList(int fd, struct map_session_d
static void clif_parse_PartyBookingSubFilteringList(int fd, struct map_session_data *sd)
{
#ifdef PARTY_RECRUIT
- if (pc_istrading(sd) || pc_isvending(sd))
+ if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd))
return;
int gid = RFIFOL(fd, 2);
@@ -14195,7 +14582,7 @@ static void clif_parse_PartyBookingReqVolunteer(int fd, struct map_session_data
static void clif_parse_PartyBookingReqVolunteer(int fd, struct map_session_data *sd)
{
#ifdef PARTY_RECRUIT
- if (pc_istrading(sd) || pc_isvending(sd))
+ if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd))
return;
int index = RFIFOL(fd, 2);
@@ -14274,7 +14661,7 @@ static void clif_parse_PartyBookingRefuseVolunteer(int fd, struct map_session_da
static void clif_parse_PartyBookingRefuseVolunteer(int fd, struct map_session_data *sd)
{
#ifdef PARTY_RECRUIT
- if (pc_istrading(sd) || pc_isvending(sd))
+ if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd))
return;
unsigned int aid = RFIFOL(fd, 2);
@@ -14306,7 +14693,7 @@ static void clif_parse_PartyBookingCancelVolunteer(int fd, struct map_session_da
static void clif_parse_PartyBookingCancelVolunteer(int fd, struct map_session_data *sd)
{
#ifdef PARTY_RECRUIT
- if (pc_istrading(sd) || pc_isvending(sd))
+ if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd))
return;
int index = RFIFOL(fd, 2);
@@ -14384,7 +14771,7 @@ static void clif_parse_CloseVending(int fd, struct map_session_data *sd) __attri
/// 012e
static void clif_parse_CloseVending(int fd, struct map_session_data *sd)
{
- if (sd->npc_id || sd->state.buyingstore || sd->state.trading)
+ if ((sd->npc_id != 0 && sd->state.using_megaphone == 0) || sd->state.buyingstore != 0 || sd->state.trading != 0)
return;
vending->close(sd);
@@ -14395,12 +14782,9 @@ static void clif_parse_VendingListReq(int fd, struct map_session_data *sd) __att
/// 0130 <account id>.L
static void clif_parse_VendingListReq(int fd, struct map_session_data *sd)
{
- if (pc_istrading(sd) || pc_isdead(sd))
+ if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isdead(sd))
return;
- if( sd->npc_id ) {// using an NPC
- return;
- }
vending->list(sd,RFIFOL(fd,2));
}
@@ -14462,8 +14846,10 @@ static void clif_parse_OpenVending(int fd, struct map_session_data *sd) __attrib
/// 1 = open
static void clif_parse_OpenVending(int fd, struct map_session_data *sd)
{
- if (pc_istrading(sd) || pc_isdead(sd) || sd->state.vending || sd->state.buyingstore)
+ if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0)
+ || pc_isdead(sd) || sd->state.vending != 0 || sd->state.buyingstore != 0) {
return;
+ }
int len = (int)RFIFOW(fd, 2) - 85;
@@ -15126,58 +15512,68 @@ static void clif_parse_ChangePetName(int fd, struct map_session_data *sd)
pet->change_name(sd, RFIFOP(fd,2));
}
+/**
+ * Request to evolve the pet. (CZ_PET_EVOLUTION)
+ *
+ * @code
+ * 09fb <Length>.W <EvolvedPetEggID>.W {<index>.W <amount>.W}*items
+ * @endcode
+ *
+ * @param fd The incoming file descriptor.
+ * @param sd The related character.
+ *
+ **/
static void clif_parse_pet_evolution(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
-/// Request to Evolve the pet (CZ_PET_EVOLUTION) [Dastgir/Hercules]
-/// 09fb <Length>.W <EvolvedPetEggID>.W {<index>.W <amount>.W}*items
static void clif_parse_pet_evolution(int fd, struct map_session_data *sd)
{
- if (sd->state.trading || pc_isdead(sd) || pc_isvending(sd))
+ if (sd->state.trading != 0 || pc_isdead(sd) || pc_isvending(sd))
return;
- const struct PACKET_CZ_PET_EVOLUTION *p = RP2PTR(fd);
- int i = 0, idx, petIndex;
-
- Assert_retv(p->PacketLength >= (uint16)sizeof(struct PACKET_CZ_PET_EVOLUTION));
-
- if (sd->status.pet_id == 0) {
+ if (sd->pd == NULL || sd->status.pet_id == 0) { // No pet.
clif->petEvolutionResult(fd, PET_EVOL_NO_CALLPET);
return;
}
- ARR_FIND(0, sd->status.inventorySize, idx, sd->status.inventory[idx].card[0] == CARD0_PET &&
- sd->status.pet_id == MakeDWord(sd->status.inventory[idx].card[1], sd->status.inventory[idx].card[2]));
+ int inv_index;
+
+ ARR_FIND(0, sd->status.inventorySize, inv_index, sd->status.inventory[inv_index].card[0] == CARD0_PET
+ && sd->status.pet_id == MakeDWord(sd->status.inventory[inv_index].card[1],
+ sd->status.inventory[inv_index].card[2]));
- if (idx == sd->status.inventorySize) {
+ if (inv_index == sd->status.inventorySize) { // No pet egg.
clif->petEvolutionResult(fd, PET_EVOL_NO_PETEGG);
return;
}
- // Not Loyal Yet
- if (sd->pd == NULL || sd->pd->pet.intimate < 900) {
+ if (sd->pd->pet.intimate < PET_INTIMACY_LOYAL) { // Pet isn't loyal.
clif->petEvolutionResult(fd, PET_EVOL_RG_FAMILIAR);
return;
}
- ARR_FIND(0, MAX_PET_DB, petIndex, pet->db[petIndex].class_ == sd->pd->pet.class_);
+ int pet_index;
- if (petIndex == MAX_PET_DB) {
- // Which error?
- clif->petEvolutionResult(fd, PET_EVOL_UNKNOWN);
+ ARR_FIND(0, MAX_PET_DB, pet_index, pet->db[pet_index].class_ == sd->pd->pet.class_);
+
+ if (pet_index == MAX_PET_DB) {
+ clif->petEvolutionResult(fd, PET_EVOL_UNKNOWN); // Which error?
return;
}
+ const struct PACKET_CZ_PET_EVOLUTION *p = RP2PTR(fd);
+
+ Assert_retv(p->PacketLength >= (uint16)sizeof(struct PACKET_CZ_PET_EVOLUTION));
+
// Client side validation is not done as it is insecure.
- for (i = 0; i < VECTOR_LENGTH(pet->db[petIndex].evolve_data); i++) {
- struct pet_evolve_data *ped = &VECTOR_INDEX(pet->db[petIndex].evolve_data, i);
- if (ped->petEggId == p->EvolvedPetEggID) {
- int j;
- int pet_id;
+ for (int i = 0; i < VECTOR_LENGTH(pet->db[pet_index].evolve_data); i++) {
+ struct pet_evolve_data *ped = &VECTOR_INDEX(pet->db[pet_index].evolve_data, i);
+ if (ped->petEggId == p->EvolvedPetEggID) {
if (VECTOR_LENGTH(ped->items) == 0) {
clif->petEvolutionResult(fd, PET_EVOL_NO_RECIPE);
return;
}
- for (j = 0; j < VECTOR_LENGTH(ped->items); j++) {
+
+ for (int j = 0; j < VECTOR_LENGTH(ped->items); j++) {
struct itemlist_entry *list = &VECTOR_INDEX(ped->items, j);
int n = pc->search_inventory(sd, list->id);
@@ -15187,7 +15583,7 @@ static void clif_parse_pet_evolution(int fd, struct map_session_data *sd)
}
}
- for (j = 0; j < VECTOR_LENGTH(ped->items); j++) {
+ for (int j = 0; j < VECTOR_LENGTH(ped->items); j++) {
struct itemlist_entry *list = &VECTOR_INDEX(ped->items, j);
int n = pc->search_inventory(sd, list->id);
@@ -15197,27 +15593,26 @@ static void clif_parse_pet_evolution(int fd, struct map_session_data *sd)
}
}
- // Return to Egg
- pet->return_egg(sd, sd->pd);
+ pet->return_egg(sd, sd->pd); // Return pet to egg.
- if (pc->delitem(sd, idx, 1, 0, DELITEM_NORMAL, LOG_TYPE_EGG) == 1) {
+ if (pc->delitem(sd, inv_index, 1, 0, DELITEM_NORMAL, LOG_TYPE_EGG) == 1) {
clif->petEvolutionResult(fd, PET_EVOL_NO_PETEGG);
return;
}
- pet_id = pet->search_petDB_index(ped->petEggId, PET_EGG);
+ int pet_id = pet->search_petDB_index(ped->petEggId, PET_EGG);
+
if (pet_id >= 0) {
sd->catch_target_class = pet->db[pet_id].class_;
-
- intif->create_pet(
- sd->status.account_id, sd->status.char_id,
- pet->db[pet_id].class_, mob->db(pet->db[pet_id].class_)->lv,
- pet->db[pet_id].EggID, 0, (short)pet->db[pet_id].intimate,
- 100, 0, 1, pet->db[pet_id].jname);
+ intif->create_pet(sd->status.account_id, sd->status.char_id, pet->db[pet_id].class_,
+ mob->db(pet->db[pet_id].class_)->lv, pet->db[pet_id].EggID,
+ 0, (short)pet->db[pet_id].intimate, PET_HUNGER_STUFFED,
+ 0, 1, pet->db[pet_id].jname);
clif->petEvolutionResult(fd, PET_EVOL_SUCCESS);
} else {
clif->petEvolutionResult(fd, PET_EVOL_UNKNOWN);
}
+
return;
}
}
@@ -15290,6 +15685,7 @@ static void clif_parse_GMKick(int fd, struct map_session_data *sd)
}
npc->unload_duplicates(nd, true);
npc->unload(nd, true, true);
+ npc->motd = npc->name2id("HerculesMOTD");
npc->read_event_script();
}
break;
@@ -15786,7 +16182,7 @@ static void clif_friendslist_toggle(struct map_session_data *sd, int account_id,
WFIFOL(fd, 2) = sd->status.friends[i].account_id;
WFIFOL(fd, 6) = sd->status.friends[i].char_id;
WFIFOB(fd, 10) = !online; //Yeah, a 1 here means "logged off", go figure...
-#if PACKETVER_MAIN_NUM >= 20180307 || PACKETVER_RE_NUM >= 20180221
+#if PACKETVER_MAIN_NUM >= 20180307 || PACKETVER_RE_NUM >= 20180221 || PACKETVER_ZERO_NUM >= 20180328
memcpy(WFIFOP(fd, 11), sd->status.friends[i].name, NAME_LENGTH);
#endif // PACKETVER_ZERO
@@ -15811,7 +16207,7 @@ static void clif_friendslist_send(struct map_session_data *sd)
{
int i = 0, n, fd = sd->fd;
-#if PACKETVER_MAIN_NUM >= 20180307 || PACKETVER_RE_NUM >= 20180221
+#if PACKETVER_MAIN_NUM >= 20180307 || PACKETVER_RE_NUM >= 20180221 || PACKETVER_ZERO_NUM >= 20180328
const int offset = 8;
#else
const int offset = 32;
@@ -15823,7 +16219,7 @@ static void clif_friendslist_send(struct map_session_data *sd)
for(i = 0; i < MAX_FRIENDS && sd->status.friends[i].char_id; i++) {
WFIFOL(fd, 4 + offset * i + 0) = sd->status.friends[i].account_id;
WFIFOL(fd, 4 + offset * i + 4) = sd->status.friends[i].char_id;
-#if !(PACKETVER_MAIN_NUM >= 20180307 || PACKETVER_RE_NUM >= 20180221)
+#if !(PACKETVER_MAIN_NUM >= 20180307 || PACKETVER_RE_NUM >= 20180221 || PACKETVER_ZERO_NUM >= 20180328)
memcpy(WFIFOP(fd, 4 + offset * i + 8), &sd->status.friends[i].name, NAME_LENGTH);
#endif
}
@@ -16459,7 +16855,7 @@ static void clif_parse_HomMoveToMaster(int fd, struct map_session_data *sd)
unit->calc_pos(bl, sd->bl.x, sd->bl.y, sd->ud.dir);
ud = unit->bl2ud(bl);
- unit->walktoxy(bl, ud->to_x, ud->to_y, 4);
+ unit->walk_toxy(bl, ud->to_x, ud->to_y, 4);
}
static void clif_parse_HomMoveTo(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
@@ -16483,7 +16879,7 @@ static void clif_parse_HomMoveTo(int fd, struct map_session_data *sd)
else
return;
- unit->walktoxy(bl, x, y, 4);
+ unit->walk_toxy(bl, x, y, 4);
}
static void clif_parse_HomAttack(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
@@ -16540,7 +16936,7 @@ static void clif_parse_AutoRevive(int fd, struct map_session_data *sd) __attribu
/// 0292
static void clif_parse_AutoRevive(int fd, struct map_session_data *sd)
{
- if (pc_istrading(sd) || pc_isvending(sd))
+ if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd))
return;
if (!pc_isdead(sd))
@@ -18968,7 +19364,7 @@ static void clif_parse_ReqOpenBuyingStore(int fd, struct map_session_data *sd) _
/// 1 = open
static void clif_parse_ReqOpenBuyingStore(int fd, struct map_session_data *sd)
{
- if (pc_istrading(sd) || pc_isdead(sd))
+ if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isdead(sd))
return;
const unsigned int blocksize = sizeof(struct PACKET_CZ_REQ_OPEN_BUYING_STORE_sub);
@@ -19743,9 +20139,9 @@ static int clif_autoshadowspell_list(struct map_session_data *sd)
WFIFOHEAD(fd, 2 * 6 + 4);
WFIFOW(fd,0) = 0x442;
for (i = 0, c = 0; i < MAX_SKILL_DB; i++)
- if( sd->status.skill[i].flag == SKILL_FLAG_PLAGIARIZED && sd->status.skill[i].id > 0 &&
- sd->status.skill[i].id < GS_GLITTERING && skill->get_type(sd->status.skill[i].id) == BF_MAGIC )
- { // Can't auto cast both Extended class and 3rd class skills.
+ if (sd->status.skill[i].flag == SKILL_FLAG_PLAGIARIZED && sd->status.skill[i].id > 0 && sd->status.skill[i].id < GS_GLITTERING
+ && skill->get_type(sd->status.skill[i].id, sd->status.skill[i].lv) == BF_MAGIC) {
+ // Can't auto cast both Extended class and 3rd class skills.
WFIFOW(fd,8+c*2) = sd->status.skill[i].id;
c++;
}
@@ -19806,7 +20202,7 @@ static void clif_parse_SkillSelectMenu(int fd, struct map_session_data *sd)
if (sd->menuskill_id != SC_AUTOSHADOWSPELL)
return;
- if (pc_istrading(sd) || sd->state.prevend) {
+ if (pc_istrading_except_npc(sd) || sd->state.prevend != 0 || (sd->npc_id != 0 && sd->state.using_megaphone == 0)) {
clif->skill_fail(sd, sd->ud.skill_id, 0, 0, 0);
clif_menuskill_clear(sd);
return;
@@ -20037,7 +20433,7 @@ static void clif_parse_cashShopOpen2(int fd, struct map_session_data *sd)
static void clif_cashShopOpen(int fd, struct map_session_data *sd, int tab)
{
-#if PACKETVER_MAIN_NUM >= 20101123 || PACKETVER_RE_NUM >= 20120328 || PACKETVER_ZERO_NUM >= defined(PACKETVER_ZERO)
+#if PACKETVER_MAIN_NUM >= 20101123 || PACKETVER_RE_NUM >= 20120328 || defined(PACKETVER_ZERO)
WFIFOHEAD(fd, sizeof(struct PACKET_ZC_SE_CASHSHOP_OPEN));
struct PACKET_ZC_SE_CASHSHOP_OPEN *p = WFIFOP(fd, 0);
p->packetType = HEADER_ZC_SE_CASHSHOP_OPEN;
@@ -20251,17 +20647,14 @@ static void clif_maptypeproperty2(struct block_list *bl, enum send_target t)
{
#if PACKETVER >= 20121010
struct packet_maptypeproperty2 p;
- struct map_session_data *sd = NULL;
nullpo_retv(bl);
- sd = BL_CAST(BL_PC, bl);
-
p.PacketType = maptypeproperty2Type;
p.type = 0x28;
p.flag.party = map->list[bl->m].flag.pvp ? 1 : 0; //PARTY
p.flag.guild = (map->list[bl->m].flag.battleground || map_flag_gvg(bl->m)) ? 1 : 0; // GUILD
p.flag.siege = (map->list[bl->m].flag.battleground || map_flag_gvg2(bl->m)) ? 1: 0; // SIEGE
- p.flag.mineffect = map_flag_gvg(bl->m) ? 1 : ( (sd && sd->state.lesseffect) ? 1 : 0); // USE_SIMPLE_EFFECT - Forcing /mineffect in castles during WoE (probably redundant? I'm not sure)
+ p.flag.mineffect = map_flag_gvg2(bl->m) ? 1 : 0; // USE_SIMPLE_EFFECT - Automatically enable /mineffect in guild arenas and castles.
p.flag.nolockon = 0; // DISABLE_LOCKON - TODO
p.flag.countpk = map->list[bl->m].flag.pvp ? 1 : 0; // COUNT_PK
p.flag.nopartyformation = map->list[bl->m].flag.partylock ? 1 : 0; // NO_PARTY_FORMATION
@@ -20716,20 +21109,57 @@ static void clif_bank_withdraw(struct map_session_data *sd, enum e_BANKING_WITHD
#endif
}
-/* TODO: official response packet (tried 0x8cb/0x97b but the display was quite screwed up.) */
-/* currently mimicing */
+/**
+ * Sends EXP, drop and death-penalty rates.
+ * 0x097b <packet len>.W <exp>.L <death>.L <drop>.L <DETAIL_EXP_INFO>13B (ZC_PERSONAL_INFOMATION2)
+ * <InfoType>.B <Exp>.L <Death>.L <Drop>.L (DETAIL_EXP_INFO)
+ *
+ * @param sd The character which should receive the messages.
+ *
+ **/
static void clif_show_modifiers(struct map_session_data *sd)
{
nullpo_retv(sd);
- if( sd->status.mod_exp != 100 || sd->status.mod_drop != 100 || sd->status.mod_death != 100 ) {
+#if PACKETVER_MAIN_NUM >= 20120503 || PACKETVER_RE_NUM >= 20120502 || defined(PACKETVER_ZERO)
+ int length = sizeof(struct PACKET_ZC_PERSONAL_INFOMATION) + 4 * sizeof(struct PACKET_ZC_PERSONAL_INFOMATION_SUB);
+ WFIFOHEAD(sd->fd, length);
+ struct PACKET_ZC_PERSONAL_INFOMATION *p = WFIFOP(sd->fd, 0);
+
+ p->packetType = HEADER_ZC_PERSONAL_INFOMATION;
+ p->length = length;
+ // Single values.
+ p->details[0].type = PC_EXP_INFO;
+ p->details[0].exp = 0;
+ p->details[0].death = 0;
+ p->details[0].drop = 0;
+ p->details[1].type = TPLUS_EXP_INFO;
+ p->details[1].exp = 0;
+ p->details[1].death = 0;
+ p->details[1].drop = 0;
+ p->details[2].type = PREMIUM_EXP_INFO;
+ p->details[2].exp = (sd->status.mod_exp - 100) * 1000;
+ p->details[2].death = (sd->status.mod_death - 100) * 1000;
+ p->details[2].drop = (sd->status.mod_drop - 100) * 1000;
+ p->details[3].type = SERVER_EXP_INFO;
+ p->details[3].exp = battle_config.base_exp_rate * 1000;
+ p->details[3].death = battle_config.death_penalty_base * 10;
+ p->details[3].drop = battle_config.item_rate_common * 1000;
+ // Total values.
+ p->total_exp = (battle_config.base_exp_rate * sd->status.mod_exp / 100) * 1000;
+ p->total_death = (battle_config.base_exp_rate * sd->status.mod_death / 100) * 10;
+ p->total_drop = (battle_config.base_exp_rate * sd->status.mod_drop / 100) * 1000;
+
+ WFIFOSET(sd->fd, length);
+#else
+ if (sd->status.mod_exp != 100 || sd->status.mod_drop != 100 || sd->status.mod_death != 100) {
char output[128];
- snprintf(output,128, msg_sd(sd, 896), // Base EXP : %d%% | Base Drop: %d%% | Base Death Penalty: %d%%
- sd->status.mod_exp,sd->status.mod_drop,sd->status.mod_death);
+ // Base EXP : %d%% | Base Drop: %d%% | Base Death Penalty: %d%%
+ safesnprintf(output, sizeof(output), msg_sd(sd, 896), sd->status.mod_exp, sd->status.mod_drop, sd->status.mod_death);
clif->broadcast2(&sd->bl, output, (int)strlen(output) + 1, 0xffbc90, 0x190, 12, 0, 0, SELF);
}
-
+#endif // PACKETVER_MAIN_NUM >= 20120503 || PACKETVER_RE_NUM >= 20120502 || defined(PACKETVER_ZERO)
}
static void clif_notify_bounditem(struct map_session_data *sd, unsigned short index)
@@ -21969,7 +22399,10 @@ static void clif_parse_rodex_open_write_mail(int fd, struct map_session_data *sd
return;
const struct PACKET_CZ_REQ_OPEN_WRITE_MAIL *rPacket = RFIFOP(fd, 0);
- int8 result = (rodex->isenabled() == true && sd->npc_id == 0) ? 1 : 0;
+ int8 result = (rodex->isenabled() && (sd->npc_id == 0 || sd->state.using_megaphone != 0)) ? 1 : 0;
+
+ if (result == 1)
+ sd->state.workinprogress |= 2;
clif->rodex_open_write_mail(fd, rPacket->receiveName, result);
}
@@ -22115,7 +22548,7 @@ static void clif_rodex_checkname_result(struct map_session_data *sd, int char_id
sPacket->Class = class_;
sPacket->BaseLevel = base_level;
#if PACKETVER >= 20160316
- strncpy(sPacket->Name, name, NAME_LENGTH);
+ safestrncpy(sPacket->Name, name, NAME_LENGTH);
#endif
WFIFOSET(fd, sizeof(*sPacket));
#endif
@@ -22752,61 +23185,65 @@ static void clif_parse_open_ui_request(int fd, struct map_session_data *sd)
clif->open_ui(sd, p->UIType);
}
-static void clif_open_ui(struct map_session_data *sd, enum cz_ui_types uiType)
+/**
+ * Does the actual packet sending for clif_open_ui().
+ *
+ * @param sd The character who opens the UI.
+ * @param ui_type The UI which should be opened.
+ *
+ **/
+static void clif_open_ui_send(struct map_session_data *sd, enum zc_ui_types ui_type)
{
+ nullpo_retv(sd);
+
#if PACKETVER >= 20150128
struct PACKET_ZC_OPEN_UI p;
-#if PACKETVER_RE_NUM >= 20180307 || PACKETVER_MAIN_NUM >= 20180404 || PACKETVER_ZERO_NUM >= 20180411
- int claimed = 0;
-#endif
-
- nullpo_retv(sd);
p.PacketType = openUiType;
- switch (uiType) {
- case CZ_STYLIST_UI:
- p.UIType = ZC_STYLIST_UI;
-#if PACKETVER >= 20171122
- p.data = 0;
-#endif
- break;
- case CZ_MACRO_REGISTER_UI:
- p.UIType = ZC_CAPTCHA_UI;
+ p.UIType = ui_type;
+
+ switch (ui_type) {
+ case ZC_BANK_UI:
+ case ZC_STYLIST_UI:
+ case ZC_CAPTCHA_UI:
+ case ZC_MACRO_UI:
#if PACKETVER >= 20171122
p.data = 0;
#endif
break;
- case CZ_MACRO_DETECTOR_UI:
- p.UIType = ZC_MACRO_UI;
#if PACKETVER >= 20171122
+ case ZC_TIPBOX_UI:
+ case ZC_RENEWQUEST_UI:
p.data = 0;
-#endif
break;
- case CZ_ATTENDANCE_UI:
- {
+ case ZC_ATTENDANCE_UI:
+ if (battle_config.feature_enable_attendance_system == 0)
+ return;
+
if (clif->attendance_getendtime() < time(NULL)) {
#if PACKETVER >= 20180207
clif->msgtable_color(sd, MSG_ATTENDANCE_UNAVAILABLE, COLOR_RED);
#endif
return;
}
- if (battle_config.feature_enable_attendance_system != 1)
- return;
+
#if PACKETVER_RE_NUM >= 20180307 || PACKETVER_MAIN_NUM >= 20180404 || PACKETVER_ZERO_NUM >= 20180411
- if (clif->attendance_timediff(sd) != true)
+ int claimed = 0;
+
+ if (!clif->attendance_timediff(sd))
++claimed;
else if (sd->status.attendance_count >= VECTOR_LENGTH(clif->attendance_data))
sd->status.attendance_count = 0;
- p.UIType = ZC_ATTENDANCE_UI;
+
p.data = sd->status.attendance_count * 10 + claimed;
#else
ShowWarning("Attendance System available only for PACKETVER_RE_NUM >= 20180307 || PACKETVER_MAIN_NUM >= 20180404 || PACKETVER_ZERO_NUM >= 20180411.\n");
return;
#endif
break;
- }
+#endif
default:
- ShowWarning("clif_open_ui: Requested UI (%u) is not implemented yet.\n", uiType);
+ ShowWarning("clif_open_ui_send: Requested UI (%u) is not implemented yet.\n", ui_type);
return;
}
@@ -22814,6 +23251,37 @@ static void clif_open_ui(struct map_session_data *sd, enum cz_ui_types uiType)
#endif
}
+static void clif_open_ui(struct map_session_data *sd, enum cz_ui_types uiType)
+{
+ nullpo_retv(sd);
+
+ enum zc_ui_types send_ui_type;
+
+ switch (uiType) {
+#if PACKETVER >= 20150128
+ case CZ_STYLIST_UI:
+ send_ui_type = ZC_STYLIST_UI;
+ break;
+ case CZ_MACRO_REGISTER_UI:
+ send_ui_type = ZC_CAPTCHA_UI;
+ break;
+ case CZ_MACRO_DETECTOR_UI:
+ send_ui_type = ZC_MACRO_UI;
+ break;
+#endif
+#if PACKETVER >= 20171122
+ case CZ_ATTENDANCE_UI:
+ send_ui_type = ZC_ATTENDANCE_UI;
+ break;
+#endif
+ default:
+ ShowWarning("clif_open_ui: Requested UI (%u) is not implemented yet.\n", uiType);
+ return;
+ }
+
+ clif->open_ui_send(sd, send_ui_type);
+}
+
static void clif_parse_attendance_reward_request(int fd, struct map_session_data *sd) __attribute__((nonnull(2)));
static void clif_parse_attendance_reward_request(int fd, struct map_session_data *sd)
{
@@ -23232,7 +23700,8 @@ static void clif_parse_npc_expanded_barter_closed(int fd, struct map_session_dat
#if PACKETVER_MAIN_NUM >= 20191120 || PACKETVER_RE_NUM >= 20191106 || PACKETVER_ZERO_NUM >= 20191127
#define NEXT_EXPANDED_BARTER_ITEM(var, count) \
var = (struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub *)((char*)item + \
- sizeof(struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub) + \
+ sizeof(struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub) - \
+ sizeof(struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub2) + \
count * sizeof(struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub2))
#endif
@@ -23252,7 +23721,11 @@ static void clif_npc_expanded_barter_open(struct map_session_data *sd, struct np
packet->packetType = HEADER_ZC_NPC_EXPANDED_BARTER_OPEN;
struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub *item = &packet->items[0];
- for (int i = 0; i < shop_size && buf_left >= sizeof(struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub); i++) {
+ // Workaround for fix Visual Studio bug (error C2233)
+ // Here should be sizeof(struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub)
+ const int ptr_size = sizeof(struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub) -
+ sizeof(struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub2);
+ for (int i = 0; i < shop_size && buf_left >= ptr_size; i++) {
if (shop[i].nameid) {
struct item_data *id = itemdb->exists(shop[i].nameid);
if (id == NULL)
@@ -23265,7 +23738,7 @@ static void clif_npc_expanded_barter_open(struct map_session_data *sd, struct np
item->index = i;
item->zeny = shop[i].value;
item->currency_count = 0;
- buf_left -= sizeof(struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub);
+ buf_left -= ptr_size;
items_count ++;
int count = shop[i].value2;
if (buf_left < sizeof(struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub2) * count) {
@@ -23294,7 +23767,7 @@ static void clif_npc_expanded_barter_open(struct map_session_data *sd, struct np
packet->items_count = items_count;
packet->packetLength = sizeof(struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN) +
- sizeof(struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub) * items_count +
+ ptr_size * items_count +
sizeof(struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub2) * currencies_count;
clif->send(packet, packet->packetLength, &sd->bl, SELF);
#endif
@@ -23607,12 +24080,15 @@ static void clif_parse_lapineDdukDdak_ack(int fd, struct map_session_data *sd) _
static void clif_parse_lapineDdukDdak_ack(int fd, struct map_session_data *sd)
{
#if PACKETVER >= 20160302
+ if (sd->state.lapine_ui == 0)
+ return;
+
const struct PACKET_CZ_LAPINEDDUKDDAK_ACK *p = RP2PTR(fd);
struct item_data *it = itemdb->exists(p->itemId);
if (it == NULL || it->lapineddukddak == NULL)
return;
- if (pc_cant_act(sd))
+ if (pc_cant_act_except_lapine(sd))
return;
if (pc->search_inventory(sd, it->nameid) == INDEX_NOT_FOUND)
return;
@@ -23673,6 +24149,55 @@ static void clif_parse_lapineDdukDdak_close(int fd, struct map_session_data *sd)
#endif // PACKETVER >= 20160504
}
+static bool clif_lapineUpgrade_open(struct map_session_data *sd, int item_id)
+{
+#if PACKETVER_MAIN_NUM >= 20170726 || PACKETVER_RE_NUM >= 20170621 || defined(PACKETVER_ZERO)
+ nullpo_retr(false, sd);
+ nullpo_retr(false, itemdb->exists(item_id));
+ struct PACKET_ZC_LAPINEUPGRADE_OPEN p;
+
+ p.packetType = HEADER_ZC_LAPINEUPGRADE_OPEN;
+ p.itemId = item_id;
+ clif->send(&p, sizeof(p), &sd->bl, SELF);
+
+ return true;
+#else
+ return false;
+#endif // PACKETVER_MAIN_NUM >= 20170726 || PACKETVER_RE_NUM >= 20170621 || defined(PACKETVER_ZERO)
+}
+
+static void clif_parse_lapineUpgrade_close(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_lapineUpgrade_close(int fd, struct map_session_data *sd)
+{
+#if PACKETVER_MAIN_NUM >= 20170111 || PACKETVER_RE_NUM >= 20170111 || defined(PACKETVER_ZERO)
+#endif // PACKETVER_MAIN_NUM >= 20170111 || PACKETVER_RE_NUM >= 20170111 || defined(PACKETVER_ZERO)
+}
+
+static void clif_parse_lapineUpgrade_makeItem(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_lapineUpgrade_makeItem(int fd, struct map_session_data *sd)
+{
+#if PACKETVER_MAIN_NUM >= 20170111 || PACKETVER_RE_NUM >= 20170111 || defined(PACKETVER_ZERO)
+ ShowError("Lapin upgrade not implimented yet");
+ clif->lapineUpgrade_result(sd, LAPINE_UPGRADE_FAILED);
+#endif // PACKETVER_MAIN_NUM >= 20170111 || PACKETVER_RE_NUM >= 20170111 || defined(PACKETVER_ZERO)
+}
+
+static bool clif_lapineUpgrade_result(struct map_session_data *sd, enum lapineUpgrade_result result)
+{
+#if PACKETVER_MAIN_NUM >= 20170726 || PACKETVER_RE_NUM >= 20170621 || defined(PACKETVER_ZERO)
+ nullpo_retr(false, sd);
+ struct PACKET_ZC_LAPINEUPGRADE_RESULT p;
+
+ p.packetType = HEADER_ZC_LAPINEUPGRADE_RESULT;
+ p.result = result;
+ clif->send(&p, sizeof(p), &sd->bl, SELF);
+
+ return true;
+#else
+ return false;
+#endif // PACKETVER_MAIN_NUM >= 20170726 || PACKETVER_RE_NUM >= 20170621 || defined(PACKETVER_ZERO)
+}
+
/*==========================================
* Main client packet processing function
*------------------------------------------*/
@@ -23951,7 +24476,7 @@ static int do_init_clif(bool minimal)
timer->add_func_list(clif->clearunit_delayed_sub, "clif_clearunit_delayed_sub");
timer->add_func_list(clif->delayquit, "clif_delayquit");
- clif->delay_clearunit_ers = ers_new(sizeof(struct block_list),"clif.c::delay_clearunit_ers",ERS_OPT_CLEAR);
+ clif->delay_clearunit_ers = ers_new(sizeof(struct mob_data), "clif.c::delay_clearunit_ers", ERS_OPT_CLEAR);
clif->delayed_damage_ers = ers_new(sizeof(struct cdelayed_damage),"clif.c::delayed_damage_ers",ERS_OPT_CLEAR);
#if PACKETVER_MAIN_NUM >= 20190403 || PACKETVER_RE_NUM >= 20190320
@@ -24173,6 +24698,8 @@ void clif_defaults(void)
clif->mobname_normal_ack = clif_mobname_normal_ack;
clif->chatname_ack = clif_chatname_ack;
clif->elemname_ack = clif_elemname_ack;
+ clif->skillname_ack = clif_skillname_ack;
+ clif->itemname_ack = clif_itemname_ack;
clif->unknownname_ack = clif_unknownname_ack;
clif->monster_hp_bar = clif_monster_hp_bar;
clif->hpmeter = clif_hpmeter;
@@ -24865,6 +25392,7 @@ void clif_defaults(void)
clif->attendance_timediff = clif_attendance_timediff;
clif->attendance_getendtime = clif_attendance_getendtime;
clif->pOpenUIRequest = clif_parse_open_ui_request;
+ clif->open_ui_send = clif_open_ui_send;
clif->open_ui = clif_open_ui;
clif->pAttendanceRewardRequest = clif_parse_attendance_reward_request;
clif->ui_action = clif_ui_action;
@@ -24916,5 +25444,9 @@ void clif_defaults(void)
clif->lapineDdukDdak_result = clif_lapineDdukDdak_result;
clif->plapineDdukDdak_ack = clif_parse_lapineDdukDdak_ack;
clif->plapineDdukDdak_close = clif_parse_lapineDdukDdak_close;
+ clif->lapineUpgrade_open = clif_lapineUpgrade_open;
+ clif->lapineUpgrade_result = clif_lapineUpgrade_result;
+ clif->pLapineUpgrade_close = clif_parse_lapineUpgrade_close;
+ clif->pLapineUpgrade_makeItem = clif_parse_lapineUpgrade_makeItem;
clif->pReqGearOff = clif_parse_reqGearOff;
}
diff --git a/src/map/clif.h b/src/map/clif.h
index 25ac65af5..ee76e62e8 100644
--- a/src/map/clif.h
+++ b/src/map/clif.h
@@ -146,6 +146,8 @@ typedef enum broadcast_flags {
BC_WOE = 0x20,
BC_COLOR_MASK = 0x30, // BC_YELLOW|BC_BLUE|BC_WOE
+ BC_MEGAPHONE = 0x40,
+
BC_DEFAULT = BC_ALL|BC_PC|BC_YELLOW
} broadcast_flags;
@@ -733,6 +735,11 @@ enum lapineddukddak_result {
LAPINEDDKUKDDAK_INVALID_ITEM = 7,
};
+enum lapineUpgrade_result {
+ LAPINE_UPGRADE_SUCCESS = 0,
+ LAPINE_UPGRADE_FAILED = 1
+};
+
enum removeGear_flag {
REMOVE_MOUNT_0 = 0, // unused
REMOVE_MOUNT_DRAGON = 1,
@@ -743,6 +750,14 @@ enum removeGear_flag {
REMOVE_MOUNT_CART = 6,
};
+/** Info types for PACKET_ZC_PERSONAL_INFOMATION (0x097b). **/
+enum detail_exp_info_type {
+ PC_EXP_INFO = 0x0, //!< PCBang internet cafe modifiers. (http://pcbang.gnjoy.com/) (Unused.)
+ PREMIUM_EXP_INFO = 0x1, //!< Premium user modifiers. Values aren't displayed in 20161207+ clients.
+ SERVER_EXP_INFO = 0x2, //!< Server rates.
+ TPLUS_EXP_INFO = 0x3, //!< Unknown. Values are displayed as "TPLUS" in kRO. (Unused.)
+};
+
/**
* Clif.c Interface
**/
@@ -952,6 +967,8 @@ struct clif_interface {
void (*mobname_normal_ack) (int fd, struct block_list *bl);
void (*chatname_ack) (int fd, struct block_list *bl);
void (*elemname_ack) (int fd, struct block_list *bl);
+ void (*skillname_ack) (int fd, struct block_list *bl);
+ void (*itemname_ack) (int fd, struct block_list *bl);
void (*unknownname_ack) (int fd, struct block_list *bl);
void (*monster_hp_bar) ( struct mob_data* md, struct map_session_data *sd );
int (*hpmeter) (struct map_session_data *sd);
@@ -1641,6 +1658,7 @@ struct clif_interface {
bool (*attendance_timediff) (struct map_session_data *sd);
time_t (*attendance_getendtime) (void);
void (*pOpenUIRequest) (int fd, struct map_session_data *sd);
+ void (*open_ui_send) (struct map_session_data *sd, enum zc_ui_types ui_type);
void (*open_ui) (struct map_session_data *sd, enum cz_ui_types uiType);
void (*pAttendanceRewardRequest) (int fd, struct map_session_data *sd);
void (*ui_action) (struct map_session_data *sd, int32 UIType, int32 data);
@@ -1688,6 +1706,10 @@ struct clif_interface {
bool (*lapineDdukDdak_result) (struct map_session_data *sd, enum lapineddukddak_result result);
void (*plapineDdukDdak_ack) (int fd, struct map_session_data *sd);
void (*plapineDdukDdak_close) (int fd, struct map_session_data *sd);
+ bool (*lapineUpgrade_open) (struct map_session_data *sd, int item_id);
+ bool (*lapineUpgrade_result) (struct map_session_data *sd, enum lapineUpgrade_result result);
+ void (*pLapineUpgrade_close) (int fd, struct map_session_data *sd);
+ void (*pLapineUpgrade_makeItem) (int fd, struct map_session_data *sd);
void (*pReqGearOff) (int fd, struct map_session_data *sd);
};
diff --git a/src/map/elemental.c b/src/map/elemental.c
index 1c1d98634..f176bb9e2 100644
--- a/src/map/elemental.c
+++ b/src/map/elemental.c
@@ -788,8 +788,8 @@ static int elemental_ai_sub_timer(struct elemental_data *ed, struct map_session_
return 0; //Already walking to him
if( DIFF_TICK(tick, ed->ud.canmove_tick) < 0 )
return 0; //Can't move yet.
- if( map->search_freecell(&ed->bl, sd->bl.m, &x, &y, MIN_ELEDISTANCE, MIN_ELEDISTANCE, 1)
- && unit->walktoxy(&ed->bl, x, y, 0) )
+ if (map->search_freecell(&ed->bl, sd->bl.m, &x, &y, MIN_ELEDISTANCE, MIN_ELEDISTANCE, 1) != 0
+ && unit->walk_toxy(&ed->bl, x, y, 0) == 0)
return 0;
}
diff --git a/src/map/guild.c b/src/map/guild.c
index f344878e1..a78ea169c 100644
--- a/src/map/guild.c
+++ b/src/map/guild.c
@@ -887,6 +887,12 @@ static void guild_member_joined(struct map_session_data *sd)
channel->join(g->channel, sd, "", true);
}
+ for (int j = 0; j < g->instances; j++) {
+ if (g->instance[j] >= 0) {
+ clif->instance_join(sd->fd, g->instance[j]);
+ break;
+ }
+ }
}
}
@@ -940,6 +946,13 @@ static int guild_member_added(int guild_id, int account_id, int char_id, int fla
channel->join(g->channel, sd, "", true);
}
+ for (int i = 0; i < g->instances; i++) {
+ if (g->instance[i] >= 0) {
+ clif->instance_join(sd->fd, g->instance[i]);
+ break;
+ }
+ }
+
return 0;
}
@@ -1519,7 +1532,7 @@ static void guild_guildaura_refresh(struct map_session_data *sd, uint16 skill_id
if( !skill_lv )
return;
if (sd->sc.data[type] && (group = skill->id2group(sd->sc.data[type]->val4)) != NULL) {
- skill->del_unitgroup(group,ALC_MARK);
+ skill->del_unitgroup(group);
status_change_end(&sd->bl,type,INVALID_TIMER);
}
group = skill->unitsetting(&sd->bl,skill_id,skill_lv,sd->bl.x,sd->bl.y,0);
@@ -2069,7 +2082,7 @@ static int guild_break(struct map_session_data *sd, const char *name)
}
}
for(i = 0; i < count; i++) { // FIXME: Why is this not done in the above loop?
- skill->del_unitgroup(groups[i],ALC_MARK);
+ skill->del_unitgroup(groups[i]);
}
}
diff --git a/src/map/instance.c b/src/map/instance.c
index 1104b7e88..d2c0a229c 100644
--- a/src/map/instance.c
+++ b/src/map/instance.c
@@ -68,7 +68,7 @@ static bool instance_is_valid(int instance_id)
/*--------------------------------------
* name : instance name
* Return value could be
- * -4 = already exists | -3 = no free instances | -2 = owner not found | -1 = invalid type
+ * -4 = already exists | -2 = owner not found | -1 = invalid type
* On success return instance_id
*--------------------------------------*/
static int instance_create(int owner_id, const char *name, enum instance_owner_type type)
@@ -734,7 +734,7 @@ static void instance_force_destroy(struct map_session_data *sd)
switch (instance->list[i].owner_type) {
case IOT_CHAR:
{
- if (instance->list[i].owner_id != sd->status.char_id)
+ if (instance->list[i].owner_id != sd->status.account_id)
continue;
break;
}
diff --git a/src/map/intif.c b/src/map/intif.c
index a420b7204..276b40780 100644
--- a/src/map/intif.c
+++ b/src/map/intif.c
@@ -218,13 +218,13 @@ static int intif_saveregistry(struct map_session_data *sd)
plen += 1;
if( p->value ) {
- len = strlen(p->value)+1;
+ len = strlen(p->value);
- WFIFOB(inter_fd, plen) = (unsigned char)len;/* won't be higher; the column size is 254 */
+ WFIFOB(inter_fd, plen) = (unsigned char)len; // Won't be higher; the column size is 255.
plen += 1;
- safestrncpy(WFIFOP(inter_fd,plen), p->value, len);
- plen += len;
+ safestrncpy(WFIFOP(inter_fd, plen), p->value, len + 1);
+ plen += len + 1;
} else {
script->reg_destroy_single(sd,key.i64,&p->flag);
}
@@ -1025,7 +1025,7 @@ static void intif_parse_Registers(int fd)
* { keyLength(B), key(<keyLength>), index(L), valLength(B), val(<valLength>) }
**/
if (type) {
- char sval[254];
+ char sval[SCRIPT_STRING_VAR_LENGTH + 1];
for (i = 0; i < max; i++) {
int len = RFIFOB(fd, cursor);
safestrncpy(key, RFIFOP(fd, cursor + 1), min((int)sizeof(key), len));
@@ -1035,8 +1035,8 @@ static void intif_parse_Registers(int fd)
cursor += 4;
len = RFIFOB(fd, cursor);
- safestrncpy(sval, RFIFOP(fd, cursor + 1), min((int)sizeof(sval), len));
- cursor += len + 1;
+ safestrncpy(sval, RFIFOP(fd, cursor + 1), min((int)sizeof(sval), len + 1));
+ cursor += len + 2;
script->set_reg(NULL,sd,reference_uid(script->add_variable(key), index), key, sval, NULL);
}
diff --git a/src/map/itemdb.h b/src/map/itemdb.h
index 5f0790b10..39f0e7945 100644
--- a/src/map/itemdb.h
+++ b/src/map/itemdb.h
@@ -152,6 +152,7 @@ enum item_itemid {
ITEMID_BUBBLE_GUM = 12210,
ITEMID_GIANT_FLY_WING = 12212,
ITEMID_NEURALIZER = 12213,
+ ITEMID_MEGAPHONE = 12221,
ITEMID_M_CENTER_POTION = 12241,
ITEMID_M_AWAKENING_POTION = 12242,
ITEMID_M_BERSERK_POTION = 12243,
@@ -606,7 +607,6 @@ struct item_data {
#define itemid_isgemstone(n) ((n) >= ITEMID_YELLOW_GEMSTONE && (n) <= ITEMID_BLUE_GEMSTONE)
#define itemdb_is_GNbomb(n) ((n) >= ITEMID_APPLE_BOMB && (n) <= ITEMID_VERY_HARD_LUMP)
#define itemdb_is_GNthrowable(n) ((n) >= ITEMID_MYSTERIOUS_POWDER && (n) <= ITEMID_BLACK_THING_TO_THROW)
-#define itemid_is_pilebunker(n) ((n) == ITEMID_PILEBUNCKER || (n) == ITEMID_PILEBUNCKER_P || (n) == ITEMID_PILEBUNCKER_S || (n) == ITEMID_PILEBUNCKER_T)
#define itemdb_is_shadowequip(n) ((n) & (EQP_SHADOW_ARMOR|EQP_SHADOW_WEAPON|EQP_SHADOW_SHIELD|EQP_SHADOW_SHOES|EQP_SHADOW_ACC_R|EQP_SHADOW_ACC_L))
#define itemdb_is_costumeequip(n) ((n) & (EQP_COSTUME_HEAD_TOP|EQP_COSTUME_HEAD_MID|EQP_COSTUME_HEAD_LOW|EQP_COSTUME_GARMENT))
diff --git a/src/map/mail.c b/src/map/mail.c
index a1176e8fc..b862900c7 100644
--- a/src/map/mail.c
+++ b/src/map/mail.c
@@ -81,9 +81,9 @@ static int mail_removezeny(struct map_session_data *sd, short flag)
static unsigned char mail_setitem(struct map_session_data *sd, int idx, int amount)
{
-
nullpo_retr(1, sd);
- if( pc_istrading(sd) )
+
+ if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0))
return 1;
if( idx == 0 ) { // Zeny Transfer
diff --git a/src/map/map.c b/src/map/map.c
index 70623ae22..c88118b43 100644
--- a/src/map/map.c
+++ b/src/map/map.c
@@ -261,11 +261,13 @@ static int map_addblock(struct block_list *bl)
pos = x/BLOCK_SIZE+(y/BLOCK_SIZE)*map->list[m].bxs;
if (bl->type == BL_MOB) {
+ Assert_ret(map->list[m].block_mob != NULL);
bl->next = map->list[m].block_mob[pos];
bl->prev = &map->bl_head;
if (bl->next) bl->next->prev = bl;
map->list[m].block_mob[pos] = bl;
} else {
+ Assert_ret(map->list[m].block != NULL);
bl->next = map->list[m].block[pos];
bl->prev = &map->bl_head;
if (bl->next) bl->next->prev = bl;
@@ -307,8 +309,10 @@ static int map_delblock(struct block_list *bl)
if (bl->prev == &map->bl_head) {
//Since the head of the list, update the block_list map of []
if (bl->type == BL_MOB) {
+ Assert_ret(map->list[bl->m].block_mob != NULL);
map->list[bl->m].block_mob[pos] = bl->next;
} else {
+ Assert_ret(map->list[bl->m].block != NULL);
map->list[bl->m].block[pos] = bl->next;
}
} else {
@@ -450,6 +454,12 @@ static int map_count_oncell(int16 m, int16 x, int16 y, int type, int flag)
struct block_list *bl;
int count = 0;
+ Assert_ret(m >= -1);
+ if (m < 0)
+ return 0;
+ Assert_ret(m < map->count);
+ Assert_ret(map->list[m].block != NULL);
+
if (x < 0 || y < 0 || (x >= map->list[m].xs) || (y >= map->list[m].ys))
return 0;
@@ -512,6 +522,12 @@ static struct skill_unit *map_find_skill_unit_oncell(struct block_list *target,
nullpo_retr(NULL, target);
m = target->m;
+ Assert_ret(m >= -1);
+ if (m < 0)
+ return 0;
+ Assert_ret(m < map->count);
+ Assert_ret(map->list[m].block != NULL);
+
if (x < 0 || y < 0 || (x >= map->list[m].xs) || (y >= map->list[m].ys))
return NULL;
@@ -586,8 +602,11 @@ static int map_vforeachinmap(int (*func)(struct block_list*, va_list), int16 m,
struct block_list *bl;
int blockcount = map->bl_list_count;
+ Assert_ret(m >= -1);
if (m < 0)
return 0;
+ Assert_ret(m < map->count);
+ Assert_ret(map->list[m].block != NULL);
bsize = map->list[m].bxs * map->list[m].bys;
for (i = 0; i < bsize; i++) {
@@ -719,24 +738,28 @@ static int bl_getall_area(int type, int m, int x0, int y0, int x1, int y1, int (
struct block_list *bl;
int found = 0;
+ Assert_ret(m >= -1);
if (m < 0)
return 0;
+ Assert_ret(m < map->count);
+ const struct map_data *const listm = &map->list[m];
+ Assert_ret(listm->xs > 0 && listm->ys > 0);
+ Assert_ret(listm->block != NULL);
+
+ // Limit search area to map size
+ x0 = min(max(x0, 0), map->list[m].xs - 1);
+ y0 = min(max(y0, 0), map->list[m].ys - 1);
+ x1 = min(max(x1, 0), map->list[m].xs - 1);
+ y1 = min(max(y1, 0), map->list[m].ys - 1);
if (x1 < x0) swap(x0, x1);
if (y1 < y0) swap(y0, y1);
- // Limit search area to map size
- x0 = max(x0, 0);
- y0 = max(y0, 0);
- x1 = min(x1, map->list[m].xs - 1);
- y1 = min(y1, map->list[m].ys - 1);
-
{
const int x0b = x0 / BLOCK_SIZE;
const int x1b = x1 / BLOCK_SIZE;
const int y0b = y0 / BLOCK_SIZE;
const int y1b = y1 / BLOCK_SIZE;
- const struct map_data *const listm = &map->list[m];
const int bxs0 = listm->bxs;
// duplication for better performance
@@ -1670,7 +1693,7 @@ static int map_search_freecell(struct block_list *src, int16 m, int16 *x, int16
*------------------------------------------*/
static bool map_closest_freecell(int16 m, const struct block_list *bl, int16 *x, int16 *y, int type, int flag)
{
- uint8 dir = 6;
+ enum unit_dir dir = UNIT_DIR_EAST;
int16 tx;
int16 ty;
int costrange = 10;
@@ -1689,7 +1712,7 @@ static bool map_closest_freecell(int16 m, const struct block_list *bl, int16 *x,
short dy = diry[dir];
//Linear search
- if(dir%2 == 0 && costrange%MOVE_COST == 0) {
+ if (!unit_is_diagonal_dir(dir) && (costrange % MOVE_COST) == 0) {
tx = *x+dx*(costrange/MOVE_COST);
ty = *y+dy*(costrange/MOVE_COST);
if (!map->count_oncell(m, tx, ty, type, flag) && map->getcell(m, bl, tx, ty, CELL_CHKPASS)) {
@@ -1699,7 +1722,7 @@ static bool map_closest_freecell(int16 m, const struct block_list *bl, int16 *x,
}
}
//Full diagonal search
- else if(dir%2 == 1 && costrange%MOVE_DIAGONAL_COST == 0) {
+ else if (unit_is_diagonal_dir(dir) && (costrange % MOVE_DIAGONAL_COST) == 0) {
tx = *x+dx*(costrange/MOVE_DIAGONAL_COST);
ty = *y+dy*(costrange/MOVE_DIAGONAL_COST);
if (!map->count_oncell(m, tx, ty, type, flag) && map->getcell(m, bl, tx, ty, CELL_CHKPASS)) {
@@ -1709,16 +1732,24 @@ static bool map_closest_freecell(int16 m, const struct block_list *bl, int16 *x,
}
}
//One cell diagonal, rest linear (TODO: Find a better algorithm for this)
- else if(dir%2 == 1 && costrange%MOVE_COST == 4) {
- tx = *x+dx*((dir%4==3)?(costrange/MOVE_COST):1);
- ty = *y+dy*((dir%4==1)?(costrange/MOVE_COST):1);
+ else if (unit_is_diagonal_dir(dir) && (costrange % MOVE_COST) == 4) {
+ tx = *x + dx;
+ ty = *y + dy;
+ if (unit_is_dir_or_opposite(dir, UNIT_DIR_SOUTHWEST))
+ tx = tx * costrange / MOVE_COST;
+ if (unit_is_dir_or_opposite(dir, UNIT_DIR_NORTHWEST))
+ ty = ty * costrange / MOVE_COST;
if (!map->count_oncell(m, tx, ty, type, flag) && map->getcell(m, bl, tx, ty, CELL_CHKPASS)) {
*x = tx;
*y = ty;
return true;
}
- tx = *x+dx*((dir%4==1)?(costrange/MOVE_COST):1);
- ty = *y+dy*((dir%4==3)?(costrange/MOVE_COST):1);
+ tx = *x + dx;
+ ty = *y + dy;
+ if (unit_is_dir_or_opposite(dir, UNIT_DIR_NORTHWEST))
+ tx = tx * costrange / MOVE_COST;
+ if (unit_is_dir_or_opposite(dir, UNIT_DIR_SOUTHWEST))
+ ty = ty * costrange / MOVE_COST;
if (!map->count_oncell(m, tx, ty, type, flag) && map->getcell(m, bl, tx, ty, CELL_CHKPASS)) {
*x = tx;
*y = ty;
@@ -1727,17 +1758,17 @@ static bool map_closest_freecell(int16 m, const struct block_list *bl, int16 *x,
}
//Get next direction
- if (dir == 5) {
+ if (dir == UNIT_DIR_SOUTHEAST) {
//Diagonal search complete, repeat with higher cost range
if(costrange == 14) costrange += 6;
else if(costrange == 28 || costrange >= 38) costrange += 2;
else costrange += 4;
- dir = 6;
- } else if (dir == 4) {
+ dir = UNIT_DIR_EAST;
+ } else if (dir == UNIT_DIR_SOUTH) {
//Linear search complete, switch to diagonal directions
- dir = 7;
+ dir = UNIT_DIR_NORTHEAST;
} else {
- dir = (dir+2)%8;
+ dir = unit_get_ccw90_dir(dir);
}
}
@@ -1880,6 +1911,7 @@ static void map_reqnickdb(struct map_session_data *sd, int charid)
}
// not in cache, request it
CREATE(req, struct charid_request, 1);
+ req->charid = sd->status.char_id;
req->next = p->requests;
p->requests = req;
chrif->searchcharid(charid);
@@ -2845,63 +2877,70 @@ static int map_mapname2ipport(unsigned short name, uint32 *ip, uint16 *port)
return 0;
}
-/*==========================================
+/**
* Checks if both dirs point in the same direction.
- *------------------------------------------*/
-static int map_check_dir(int s_dir, int t_dir)
+ * @param s_dir: direction source is facing
+ * @param t_dir: direction target is facing
+ * @return 0: success(both face the same direction), 1: failure
+ **/
+static int map_check_dir(enum unit_dir s_dir, enum unit_dir t_dir)
{
- if(s_dir == t_dir)
+ if (s_dir == t_dir || ((t_dir + UNIT_DIR_MAX - 1) % UNIT_DIR_MAX) == s_dir
+ || ((t_dir + UNIT_DIR_MAX + 1) % UNIT_DIR_MAX) == s_dir)
return 0;
- switch(s_dir) {
- case 0: if(t_dir == 7 || t_dir == 1 || t_dir == 0) return 0; break;
- case 1: if(t_dir == 0 || t_dir == 2 || t_dir == 1) return 0; break;
- case 2: if(t_dir == 1 || t_dir == 3 || t_dir == 2) return 0; break;
- case 3: if(t_dir == 2 || t_dir == 4 || t_dir == 3) return 0; break;
- case 4: if(t_dir == 3 || t_dir == 5 || t_dir == 4) return 0; break;
- case 5: if(t_dir == 4 || t_dir == 6 || t_dir == 5) return 0; break;
- case 6: if(t_dir == 5 || t_dir == 7 || t_dir == 6) return 0; break;
- case 7: if(t_dir == 6 || t_dir == 0 || t_dir == 7) return 0; break;
- }
return 1;
}
-/*==========================================
+/**
* Returns the direction of the given cell, relative to 'src'
- *------------------------------------------*/
-static uint8 map_calc_dir(struct block_list *src, int16 x, int16 y)
+ * @param src: object to put in relation between coordinates
+ * @param x: x-coordinate of cell
+ * @param y: y-coordinate of cell
+ * @return the direction of the given cell, relative to 'src'
+ **/
+static enum unit_dir map_calc_dir(const struct block_list *src, int16 x, int16 y)
{
- uint8 dir = 0;
- int dx, dy;
-
- nullpo_ret(src);
+ nullpo_retr(UNIT_DIR_NORTH, src);
+ enum unit_dir dir = UNIT_DIR_NORTH;
- dx = x-src->x;
- dy = y-src->y;
+ int dx = x - src->x;
+ int dy = y - src->y;
if (dx == 0 && dy == 0) {
// both are standing on the same spot.
// aegis-style, makes knockback default to the left.
// athena-style, makes knockback default to behind 'src'.
- dir = (battle_config.knockback_left ? 6 : unit->getdir(src));
- } else if (dx >= 0 && dy >=0) {
- // upper-right
- if( dx*2 < dy || dx == 0 ) dir = 0; // up
- else if( dx > dy*2+1 || dy == 0 ) dir = 6; // right
- else dir = 7; // up-right
+ if (battle_config.knockback_left != 0)
+ dir = UNIT_DIR_EAST;
+ else
+ dir = unit->getdir(src);
+ } else if (dx >= 0 && dy >= 0) {
+ if (dx * 2 < dy || dx == 0)
+ dir = UNIT_DIR_NORTH;
+ else if (dx > dy * 2 + 1 || dy == 0)
+ dir = UNIT_DIR_EAST;
+ else
+ dir = UNIT_DIR_NORTHEAST;
} else if (dx >= 0 && dy <= 0) {
- // lower-right
- if( dx*2 < -dy || dx == 0 ) dir = 4; // down
- else if( dx > -dy*2+1 || dy == 0 ) dir = 6; // right
- else dir = 5; // down-right
+ if (dx * 2 < -dy || dx == 0)
+ dir = UNIT_DIR_SOUTH;
+ else if (dx > -dy * 2 + 1 || dy == 0)
+ dir = UNIT_DIR_EAST;
+ else
+ dir = UNIT_DIR_SOUTHEAST;
} else if (dx <= 0 && dy <= 0) {
- // lower-left
- if( dx*2 > dy || dx == 0 ) dir = 4; // down
- else if( dx < dy*2-1 || dy == 0 ) dir = 2; // left
- else dir = 3; // down-left
+ if (dx * 2 > dy || dx == 0 )
+ dir = UNIT_DIR_SOUTH;
+ else if (dx < dy * 2 + 1 || dy == 0)
+ dir = UNIT_DIR_WEST;
+ else
+ dir = UNIT_DIR_SOUTHWEST;
} else {
- // upper-left
- if( -dx*2 < dy || dx == 0 ) dir = 0; // up
- else if( -dx > dy*2+1 || dy == 0) dir = 2; // left
- else dir = 1; // up-left
+ if (-dx * 2 < dy || dx == 0 )
+ dir = UNIT_DIR_NORTH;
+ else if (-dx > dy * 2 + 1 || dy == 0)
+ dir = UNIT_DIR_WEST;
+ else
+ dir = UNIT_DIR_NORTHWEST;
}
return dir;
}
@@ -2929,11 +2968,11 @@ static int map_random_dir(struct block_list *bl, int16 *x, int16 *y)
if (dist < 1) dist =1;
do {
- int j = 1 + 2*(rnd()%4); //Pick a random diagonal direction
+ enum unit_dir dir = unit_get_rnd_diagonal_dir();
short segment = 1+(rnd()%dist); //Pick a random interval from the whole vector in that direction
- xi = bl->x + segment*dirx[j];
+ xi = bl->x + segment * dirx[dir];
segment = (short)sqrt((float)(dist2 - segment*segment)); //The complement of the previously picked segment
- yi = bl->y + segment*diry[j];
+ yi = bl->y + segment * diry[dir];
} while ((map->getcell(bl->m, bl, xi, yi, CELL_CHKNOPASS) || !path->search(NULL, bl, bl->m, bl->x, bl->y, xi, yi, 1, CELL_CHKNOREACH))
&& (++i)<100);
@@ -3062,6 +3101,8 @@ static int map_getcellp(struct map_data *m, const struct block_list *bl, int16 x
return (cell.icewall);
case CELL_CHKNOICEWALL:
return (cell.noicewall);
+ case CELL_CHKNOSKILL:
+ return (cell.noskill);
// special checks
case CELL_CHKPASS:
@@ -3126,6 +3167,7 @@ static void map_setcell(int16 m, int16 x, int16 y, cell_t cell, bool flag)
case CELL_NOCHAT: map->list[m].cell[j].nochat = flag; break;
case CELL_ICEWALL: map->list[m].cell[j].icewall = flag; break;
case CELL_NOICEWALL: map->list[m].cell[j].noicewall = flag; break;
+ case CELL_NOSKILL: map->list[m].cell[j].noskill = flag; break;
default:
ShowWarning("map_setcell: invalid cell type '%d'\n", (int)cell);
@@ -4441,7 +4483,6 @@ static bool inter_config_read_connection(const char *filename, const struct conf
static bool inter_config_read_database_names(const char *filename, const struct config_t *config, bool imported)
{
const struct config_setting_t *setting = NULL;
- bool retval = true;
nullpo_retr(false, filename);
nullpo_retr(false, config);
@@ -4459,16 +4500,14 @@ static bool inter_config_read_database_names(const char *filename, const struct
libconfig->setting_lookup_mutable_string(setting, "npc_barter_data_db", map->npc_barter_data_db, sizeof(map->npc_barter_data_db));
libconfig->setting_lookup_mutable_string(setting, "npc_expanded_barter_data_db", map->npc_expanded_barter_data_db, sizeof(map->npc_expanded_barter_data_db));
- if (!mapreg->config_read(filename, setting, imported))
- retval = false;
-
if ((setting = libconfig->lookup(config, "inter_configuration/database_names/registry")) == NULL) {
if (imported)
- return retval;
+ return true;
ShowError("inter_config_read: inter_configuration/database_names/registry was not found in %s!\n", filename);
return false;
}
- return retval;
+
+ return mapreg->config_read_registry(filename, setting, imported);
}
/*=======================================
@@ -5250,7 +5289,7 @@ static bool map_zone_mf_cache(int m, char *flag, char *params)
}
}
- if( modifier[0] == '\0' || !( skill_id = skill->name2id(skill_name) ) || !skill->get_unit_id( skill->name2id(skill_name), 0) || atoi(modifier) < 1 || atoi(modifier) > USHRT_MAX ) {
+ if (modifier[0] == '\0' || (skill_id = skill->name2id(skill_name)) == 0 || skill->get_unit_id(skill->name2id(skill_name), 1, 0) == 0 || atoi(modifier) < 1 || atoi(modifier) > USHRT_MAX) {
;/* we don't mind it, the server will take care of it next. */
} else {
int idx = map->list[m].unit_count;
@@ -5430,6 +5469,19 @@ static bool map_zone_mf_cache(int m, char *flag, char *params)
map_zone_mf_cache_add(m, rflag);
}
}
+ } else if (strcmpi(flag, "nopet") == 0) {
+ if (state == 0) {
+ if (map->list[m].flag.nopet != 0) {
+ sprintf(rflag, "nopet\t%d", map->list[m].flag.nopet);
+ map_zone_mf_cache_add(m, rflag);
+ }
+ }
+ if (sscanf(params, "%d", &state) == 1) {
+ if (state != map->list[m].flag.nopet) {
+ sprintf(rflag, "nopet\t%d", state);
+ map_zone_mf_cache_add(m, rflag);
+ }
+ }
}
return false;
@@ -6032,11 +6084,15 @@ static bool map_add_questinfo(int m, struct npc_data *nd)
nullpo_retr(false, nd);
Assert_retr(false, m >= 0 && m < map->count);
- if (&VECTOR_LAST(map->list[m].qi_list) == nd)
+ int i;
+ ARR_FIND(0, VECTOR_LENGTH(map->list[m].qi_list), i, VECTOR_INDEX(map->list[m].qi_list, i) == nd);
+
+ if (i < VECTOR_LENGTH(map->list[m].qi_list)) {
return false;
+ }
VECTOR_ENSURE(map->list[m].qi_list, 1, 1);
- VECTOR_PUSH(map->list[m].qi_list, *nd);
+ VECTOR_PUSH(map->list[m].qi_list, nd);
return true;
}
@@ -6047,7 +6103,7 @@ static bool map_remove_questinfo(int m, struct npc_data *nd)
Assert_retr(false, m >= 0 && m < map->count);
int i;
- ARR_FIND(0, VECTOR_LENGTH(map->list[m].qi_list), i, &VECTOR_INDEX(map->list[m].qi_list, i) == nd);
+ ARR_FIND(0, VECTOR_LENGTH(map->list[m].qi_list), i, VECTOR_INDEX(map->list[m].qi_list, i) == nd);
if (i != VECTOR_LENGTH(map->list[m].qi_list)) {
VECTOR_ERASE(map->list[m].qi_list, i);
return true;
@@ -6649,6 +6705,8 @@ int do_init(int argc, char *argv[])
atcommand->msg_read(map->MSG_CONF_NAME, false);
map->inter_config_read(map->INTER_CONF_NAME, false);
logs->config_read(map->LOG_CONF_NAME, false);
+ } else {
+ battle->config_read(map->BATTLE_CONF_FILENAME, false);
}
script->config_read(map->SCRIPT_CONF_NAME, false);
@@ -6699,8 +6757,8 @@ int do_init(int argc, char *argv[])
timer->add_func_list(map->removemobs_timer, "map_removemobs_timer");
timer->add_interval(timer->gettick()+1000, map->freeblock_timer, 0, 0, 60*1000);
- HPM->event(HPET_INIT);
}
+ HPM->event(HPET_INIT);
atcommand->init(minimal);
battle->init(minimal);
@@ -6747,8 +6805,12 @@ int do_init(int argc, char *argv[])
exit(EXIT_SUCCESS);
}
- if( minimal ) {
+ if (minimal) {
HPM->event(HPET_READY);
+ HPM->event(HPET_FINAL);
+ battle->final();
+ HPM_map_do_final();
+ HPM->event(HPET_POST_FINAL);
exit(EXIT_SUCCESS);
}
diff --git a/src/map/map.h b/src/map/map.h
index dbd9c0fba..e7c0cb50d 100644
--- a/src/map/map.h
+++ b/src/map/map.h
@@ -27,6 +27,7 @@
#include "common/db.h"
#include "common/mapindex.h"
#include "common/mmo.h"
+#include "map/unitdefines.h" // enum unit_dir
#include <stdio.h>
#include <stdarg.h>
@@ -328,6 +329,14 @@ enum bl_type {
enum npc_subtype { WARP, SHOP, SCRIPT, CASHSHOP, TOMB };
+/** optional flags for script labels, used by the label db */
+enum script_label_flags {
+ /** the label can be called from outside the local scope of the NPC */
+ LABEL_IS_EXTERN = 0x1,
+ /** the label is a public or private local NPC function */
+ LABEL_IS_USERFUNC = 0x2,
+};
+
/**
* Race type IDs.
*
@@ -587,6 +596,7 @@ typedef enum {
CELL_NOCHAT,
CELL_ICEWALL,
CELL_NOICEWALL,
+ CELL_NOSKILL,
} cell_t;
@@ -611,6 +621,7 @@ typedef enum {
CELL_CHKNOCHAT,
CELL_CHKICEWALL,
CELL_CHKNOICEWALL,
+ CELL_CHKNOSKILL,
} cell_chk;
@@ -629,7 +640,8 @@ struct mapcell {
novending : 1,
nochat : 1,
icewall : 1,
- noicewall : 1;
+ noicewall : 1,
+ noskill : 1;
#ifdef CELL_NOSTACK
int cell_bl; //Holds amount of bls in this cell.
@@ -787,6 +799,7 @@ struct map_data {
unsigned pairship_endable : 1;
unsigned nostorage : 2;
unsigned nogstorage : 2;
+ unsigned nopet : 1;
uint32 noviewid; ///< noviewid (bitmask - @see enum equip_pos)
} flag;
struct point save;
@@ -845,7 +858,7 @@ struct map_data {
} cell_buf;
/* questinfo entries list */
- VECTOR_DECL(struct npc_data) qi_list;
+ VECTOR_DECL(struct npc_data *) qi_list;
/* speeds up clif_updatestatus processing by causing hpmeter to run only when someone with the permission can view it */
unsigned short hpmeter_visible;
@@ -1216,8 +1229,8 @@ END_ZEROED_BLOCK;
// reload config file looking only for npcs
void (*reloadnpc) (bool clear);
- int (*check_dir) (int s_dir,int t_dir);
- uint8 (*calc_dir) (struct block_list *src,int16 x,int16 y);
+ int (*check_dir) (enum unit_dir s_dir, enum unit_dir t_dir);
+ enum unit_dir (*calc_dir) (const struct block_list *src, int16 x, int16 y);
int (*random_dir) (struct block_list *bl, short *x, short *y); // [Skotlex]
int (*cleanup_sub) (struct block_list *bl, va_list ap);
diff --git a/src/map/mapdefines.h b/src/map/mapdefines.h
index f5a8149d4..8a363e2d4 100644
--- a/src/map/mapdefines.h
+++ b/src/map/mapdefines.h
@@ -30,7 +30,15 @@
#define DAMAGELOG_SIZE 30
#define LOOTITEM_SIZE 10
#define MAX_MOBSKILL 50
+
+#ifndef MAX_MOB_LIST_PER_MAP
+#ifdef RENEWAL
#define MAX_MOB_LIST_PER_MAP 100
+#else
+#define MAX_MOB_LIST_PER_MAP 115
+#endif
+#endif
+
#define MAX_EVENTQUEUE 2
#define MAX_EVENTTIMER 32
#define NATURAL_HEAL_INTERVAL 500
diff --git a/src/map/mapreg.h b/src/map/mapreg.h
index b3b89e1b2..4318eaea8 100644
--- a/src/map/mapreg.h
+++ b/src/map/mapreg.h
@@ -21,55 +21,66 @@
#ifndef MAP_MAPREG_H
#define MAP_MAPREG_H
-#include "map/script.h" // struct reg_db
-#include "common/hercules.h"
+#include "map/script.h"
#include "common/db.h"
+#include "common/hercules.h"
-/* Forward Declarations */
-struct config_setting_t; // common/conf.h
+/** Forward Declarations **/
+struct config_setting_t;
struct eri;
-/** Container for a mapreg value */
+#ifndef MAPREG_AUTOSAVE_INTERVAL
+#define MAPREG_AUTOSAVE_INTERVAL (300 * 1000) //!< Interval for auto-saving permanent global variables to the database in milliseconds.
+#endif /** MAPREG_AUTOSAVE_INTERVAL **/
+
+/** Global variable structure. **/
struct mapreg_save {
- int64 uid; ///< Unique ID
- union {
- int i; ///< Numeric value
- char *str; ///< String value
+ int64 uid; //!< The variable's unique ID.
+ union value { //!< The variable's value container.
+ int i; //!< The variable's integer value.
+ char *str; //!< The variable's string value.
} u;
- bool is_string; ///< true if it's a string, false if it's a number
- bool save; ///< Whether a save operation is pending
+ bool is_string; //!< Whether the variable's value is a string.
+ bool save; //!< Whether the variable's save operation is pending.
};
+/** The mapreg interface structure. **/
struct mapreg_interface {
- struct reg_db regs;
- /* */
- bool skip_insert;
- /* */
- struct eri *ers; //[Ind/Hercules]
- /* */
- char table[32];
- /* */
- bool dirty; ///< Whether there are modified regs to be saved
- /* */
- void (*init) (void);
- void (*final) (void);
- /* */
+ /** Interface variables. **/
+ struct eri *ers; //!< Entry manager for global variables.
+ struct reg_db regs; //!< Generic database for global variables.
+ bool dirty; //!< Whether there are modified global variables to be saved.
+ bool skip_insert; //!< Whether to skip inserting the variable into the SQL database in mapreg_set_*_db().
+ char num_db[32]; //!< Name of SQL table which holds permanent global integer variables.
+ char str_db[32]; //!< Name of SQL table which holds permanent global string variables.
+
+ /** Interface functions. **/
int (*readreg) (int64 uid);
- char* (*readregstr) (int64 uid);
+ char *(*readregstr) (int64 uid);
+ bool (*set_num_db) (int64 uid, const char *name, unsigned int index, int value);
+ bool (*delete_num_db) (int64 uid, const char *name, unsigned int index);
bool (*setreg) (int64 uid, int val);
+ bool (*set_str_db) (int64 uid, const char *name, unsigned int index, const char *value);
+ bool (*delete_str_db) (int64 uid, const char *name, unsigned int index);
bool (*setregstr) (int64 uid, const char *str);
+ void (*load_num_db) (void);
+ void (*load_str_db) (void);
void (*load) (void);
+ void (*save_num_db) (const char *name, unsigned int index, int value);
+ void (*save_str_db) (const char *name, unsigned int index, const char *value);
void (*save) (void);
int (*save_timer) (int tid, int64 tick, int id, intptr_t data);
int (*destroyreg) (union DBKey key, struct DBData *data, va_list ap);
void (*reload) (void);
- bool (*config_read) (const char *filename, const struct config_setting_t *config, bool imported);
+ bool (*config_read_registry) (const char *filename, const struct config_setting_t *config, bool imported);
+ void (*final) (void);
+ void (*init) (void);
};
#ifdef HERCULES_CORE
void mapreg_defaults(void);
-#endif // HERCULES_CORE
+#endif /** HERCULES_CORE **/
HPShared struct mapreg_interface *mapreg;
-#endif /* MAP_MAPREG_H */
+#endif /** MAP_MAPREG_H **/
diff --git a/src/map/mapreg_sql.c b/src/map/mapreg_sql.c
index 741505e17..16d8b0ff6 100644
--- a/src/map/mapreg_sql.c
+++ b/src/map/mapreg_sql.c
@@ -22,7 +22,7 @@
#include "mapreg.h"
-#include "map/map.h" // map-"mysql_handle
+#include "map/map.h"
#include "map/script.h"
#include "common/cbasetypes.h"
#include "common/conf.h"
@@ -38,289 +38,596 @@
#include <stdlib.h>
#include <string.h>
-static struct mapreg_interface mapreg_s;
-struct mapreg_interface *mapreg;
-
-#define MAPREG_AUTOSAVE_INTERVAL (300*1000)
+static struct mapreg_interface mapreg_s; //!< Private interface structure.
+struct mapreg_interface *mapreg; //!< Public interface structure.
/**
- * Looks up the value of an integer variable using its uid.
+ * Looks up the value of a global integer variable using its unique ID.
*
- * @param uid variable's unique identifier.
- * @return variable's integer value
- */
-static int mapreg_readreg(int64 uid)
+ * @param uid The variable's unique ID.
+ * @return The variable's value or 0 if the variable does not exist.
+ *
+ **/
+static int mapreg_get_num_reg(int64 uid)
{
- struct mapreg_save *m = i64db_get(mapreg->regs.vars, uid);
- return m?m->u.i:0;
+ struct mapreg_save *var = i64db_get(mapreg->regs.vars, uid);
+ return (var != NULL) ? var->u.i : 0;
}
/**
- * Looks up the value of a string variable using its uid.
+ * Looks up the value of a global string variable using its unique ID.
*
- * @param uid variable's unique identifier
- * @return variable's string value
- */
-static char *mapreg_readregstr(int64 uid)
+ * @param uid The variable's unique ID.
+ * @return The variable's value or NULL if the variable does not exist.
+ *
+ **/
+static char *mapreg_get_str_reg(int64 uid)
{
- struct mapreg_save *m = i64db_get(mapreg->regs.vars, uid);
- return m?m->u.str:NULL;
+ struct mapreg_save *var = i64db_get(mapreg->regs.vars, uid);
+ return (var != NULL) ? var->u.str : NULL;
}
/**
- * Modifies the value of an integer variable.
+ * Sets the value of a global integer variable.
*
- * @param uid variable's unique identifier
- * @param val new value
- * @retval true value was successfully set
- */
-static bool mapreg_setreg(int64 uid, int val)
+ * @param uid The variable's unique ID.
+ * @param name The variable's name.
+ * @param index The variable's array index.
+ * @param value The variable's new value.
+ * @return True on success, otherwise false.
+ *
+ **/
+static bool mapreg_set_num_db(int64 uid, const char *name, unsigned int index, int value)
{
- struct mapreg_save *m;
- int num = script_getvarid(uid);
- unsigned int i = script_getvaridx(uid);
- const char* name = script->get_str(num);
-
- nullpo_retr(true, name);
- if( val != 0 ) {
- if( (m = i64db_get(mapreg->regs.vars, uid)) ) {
- m->u.i = val;
- if(name[1] != '@') {
- m->save = true;
- mapreg->dirty = true;
- }
- } else {
- if( i )
- script->array_update(&mapreg->regs, uid, false);
-
- m = ers_alloc(mapreg->ers, struct mapreg_save);
-
- m->u.i = val;
- m->uid = uid;
- m->save = false;
- m->is_string = false;
-
- if (name[1] != '@' && !mapreg->skip_insert) {// write new variable to database
- char tmp_str[(SCRIPT_VARNAME_LENGTH+1)*2+1];
- SQL->EscapeStringLen(map->mysql_handle, tmp_str, name, strnlen(name, SCRIPT_VARNAME_LENGTH+1));
- if( SQL_ERROR == SQL->Query(map->mysql_handle, "INSERT INTO `%s`(`varname`,`index`,`value`) VALUES ('%s','%u','%d')", mapreg->table, tmp_str, i, val) )
- Sql_ShowDebug(map->mysql_handle);
- }
- i64db_put(mapreg->regs.vars, uid, m);
+ nullpo_retr(false, name);
+ Assert_retr(false, *name != '\0');
+ Assert_retr(false, strlen(name) <= SCRIPT_VARNAME_LENGTH);
+
+ if (value == 0)
+ return mapreg->delete_num_db(uid, name, index);
+
+ struct mapreg_save *var = i64db_get(mapreg->regs.vars, uid);
+
+ // Update variable.
+ if (var != NULL) {
+ var->u.i = value;
+
+ if (script->is_permanent_variable(name)) {
+ var->save = true;
+ mapreg->dirty = true;
}
- } else { // val == 0
- if( i )
- script->array_update(&mapreg->regs, uid, true);
- if( (m = i64db_get(mapreg->regs.vars, uid)) ) {
- ers_free(mapreg->ers, m);
+
+ return true;
+ }
+
+ // Add new variable.
+ if (index != 0)
+ script->array_update(&mapreg->regs, uid, false);
+
+ var = ers_alloc(mapreg->ers, struct mapreg_save);
+ var->u.i = value;
+ var->uid = uid;
+ var->save = false;
+ var->is_string = false;
+ i64db_put(mapreg->regs.vars, uid, var);
+
+ if (script->is_permanent_variable(name) && !mapreg->skip_insert) {
+ struct SqlStmt *stmt = SQL->StmtMalloc(map->mysql_handle);
+
+ if (stmt == NULL) {
+ SqlStmt_ShowDebug(stmt);
+ return false;
}
- i64db_remove(mapreg->regs.vars, uid);
- if( name[1] != '@' ) {// Remove from database because it is unused.
- if( SQL_ERROR == SQL->Query(map->mysql_handle, "DELETE FROM `%s` WHERE `varname`='%s' AND `index`='%u'", mapreg->table, name, i) )
- Sql_ShowDebug(map->mysql_handle);
+ const char *query = "INSERT INTO `%s` (`key`, `index`, `value`) VALUES (?, ?, ?)";
+
+ if (SQL_ERROR == SQL->StmtPrepare(stmt, query, mapreg->num_db)
+ || SQL_ERROR == SQL->StmtBindParam(stmt, 0, SQLDT_STRING, name, strlen(name))
+ || SQL_ERROR == SQL->StmtBindParam(stmt, 1, SQLDT_UINT32, &index, sizeof(index))
+ || SQL_ERROR == SQL->StmtBindParam(stmt, 2, SQLDT_INT32, &value, sizeof(value))
+ || SQL_ERROR == SQL->StmtExecute(stmt)) {
+ SqlStmt_ShowDebug(stmt);
+ SQL->StmtFree(stmt);
+ return false;
}
+
+ SQL->StmtFree(stmt);
}
return true;
}
/**
- * Modifies the value of a string variable.
+ * Deletes a global integer variable.
*
- * @param uid variable's unique identifier
- * @param str new value
- * @retval true value was successfully set
- */
-static bool mapreg_setregstr(int64 uid, const char *str)
+ * @param uid The variable's unique ID.
+ * @param name The variable's name.
+ * @param index The variable's array index.
+ * @return True on success, otherwise false.
+ *
+ **/
+static bool mapreg_delete_num_db(int64 uid, const char *name, unsigned int index)
{
- struct mapreg_save *m;
- int num = script_getvarid(uid);
- unsigned int i = script_getvaridx(uid);
- const char* name = script->get_str(num);
-
- nullpo_retr(true, name);
-
- if( str == NULL || *str == 0 ) {
- if( i )
- script->array_update(&mapreg->regs, uid, true);
- if(name[1] != '@') {
- if (SQL_ERROR == SQL->Query(map->mysql_handle, "DELETE FROM `%s` WHERE `varname`='%s' AND `index`='%u'", mapreg->table, name, i))
- Sql_ShowDebug(map->mysql_handle);
+ nullpo_retr(false, name);
+ Assert_retr(false, *name != '\0');
+ Assert_retr(false, strlen(name) <= SCRIPT_VARNAME_LENGTH);
+
+ struct mapreg_save *var = i64db_get(mapreg->regs.vars, uid);
+
+ if (var != NULL)
+ ers_free(mapreg->ers, var);
+
+ if (index != 0)
+ script->array_update(&mapreg->regs, uid, true);
+
+ i64db_remove(mapreg->regs.vars, uid);
+
+ if (script->is_permanent_variable(name)) {
+ struct SqlStmt *stmt = SQL->StmtMalloc(map->mysql_handle);
+
+ if (stmt == NULL) {
+ SqlStmt_ShowDebug(stmt);
+ return false;
}
- if( (m = i64db_get(mapreg->regs.vars, uid)) ) {
- if( m->u.str != NULL )
- aFree(m->u.str);
- ers_free(mapreg->ers, m);
+
+ const char *query = "DELETE FROM `%s` WHERE `key`=? AND `index`=?";
+
+ if (SQL_ERROR == SQL->StmtPrepare(stmt, query, mapreg->num_db)
+ || SQL_ERROR == SQL->StmtBindParam(stmt, 0, SQLDT_STRING, name, strlen(name))
+ || SQL_ERROR == SQL->StmtBindParam(stmt, 1, SQLDT_UINT32, &index, sizeof(index))
+ || SQL_ERROR == SQL->StmtExecute(stmt)) {
+ SqlStmt_ShowDebug(stmt);
+ SQL->StmtFree(stmt);
+ return false;
}
- i64db_remove(mapreg->regs.vars, uid);
- } else {
- if( (m = i64db_get(mapreg->regs.vars, uid)) ) {
- if( m->u.str != NULL )
- aFree(m->u.str);
- m->u.str = aStrdup(str);
- if(name[1] != '@') {
- mapreg->dirty = true;
- m->save = true;
- }
- } else {
- if( i )
- script->array_update(&mapreg->regs, uid, false);
-
- m = ers_alloc(mapreg->ers, struct mapreg_save);
-
- m->uid = uid;
- m->u.str = aStrdup(str);
- m->save = false;
- m->is_string = true;
-
- if(name[1] != '@' && !mapreg->skip_insert) { //put returned null, so we must insert.
- char tmp_str[(SCRIPT_VARNAME_LENGTH+1)*2+1];
- char tmp_str2[255*2+1];
- SQL->EscapeStringLen(map->mysql_handle, tmp_str, name, strnlen(name, SCRIPT_VARNAME_LENGTH+1));
- SQL->EscapeStringLen(map->mysql_handle, tmp_str2, str, strnlen(str, 255));
- if( SQL_ERROR == SQL->Query(map->mysql_handle, "INSERT INTO `%s`(`varname`,`index`,`value`) VALUES ('%s','%u','%s')", mapreg->table, tmp_str, i, tmp_str2) )
- Sql_ShowDebug(map->mysql_handle);
- }
- i64db_put(mapreg->regs.vars, uid, m);
+
+ SQL->StmtFree(stmt);
+ }
+
+ return true;
+}
+
+/**
+ * Sets the value of a global integer variable or deletes it if passed value is 0.
+ *
+ * @param uid The variable's unique ID.
+ * @param val The variable's new value.
+ * @return True on success, otherwise false.
+ *
+ **/
+static bool mapreg_set_num(int64 uid, int val)
+{
+ unsigned int index = script_getvaridx(uid);
+ const char *name = script->get_str(script_getvarid(uid));
+
+ if (val != 0)
+ return mapreg->set_num_db(uid, name, index, val);
+ else
+ return mapreg->delete_num_db(uid, name, index);
+}
+
+/**
+ * Sets the value of a global string variable.
+ *
+ * @param uid The variable's unique ID.
+ * @param name The variable's name.
+ * @param index The variable's array index.
+ * @param value The variable's new value.
+ * @return True on success, otherwise false.
+ *
+ **/
+static bool mapreg_set_str_db(int64 uid, const char *name, unsigned int index, const char *value)
+{
+ nullpo_retr(false, name);
+ Assert_retr(false, *name != '\0');
+ Assert_retr(false, strlen(name) <= SCRIPT_VARNAME_LENGTH);
+
+ if (value == NULL || *value == '\0')
+ return mapreg->delete_str_db(uid, name, index);
+
+ if (script->is_permanent_variable(name))
+ Assert_retr(false, strlen(value) <= SCRIPT_STRING_VAR_LENGTH);
+
+ struct mapreg_save *var = i64db_get(mapreg->regs.vars, uid);
+
+ // Update variable.
+ if (var != NULL) {
+ if (var->u.str != NULL)
+ aFree(var->u.str);
+
+ var->u.str = aStrdup(value);
+
+ if (script->is_permanent_variable(name)) {
+ var->save = true;
+ mapreg->dirty = true;
}
+
+ return true;
+ }
+
+ // Add new variable.
+ if (index != 0)
+ script->array_update(&mapreg->regs, uid, false);
+
+ var = ers_alloc(mapreg->ers, struct mapreg_save);
+ var->u.str = aStrdup(value);
+ var->uid = uid;
+ var->save = false;
+ var->is_string = true;
+ i64db_put(mapreg->regs.vars, uid, var);
+
+ if (script->is_permanent_variable(name) && !mapreg->skip_insert) {
+ struct SqlStmt *stmt = SQL->StmtMalloc(map->mysql_handle);
+
+ if (stmt == NULL) {
+ SqlStmt_ShowDebug(stmt);
+ return false;
+ }
+
+ const char *query = "INSERT INTO `%s` (`key`, `index`, `value`) VALUES (?, ?, ?)";
+
+ if (SQL_ERROR == SQL->StmtPrepare(stmt, query, mapreg->str_db)
+ || SQL_ERROR == SQL->StmtBindParam(stmt, 0, SQLDT_STRING, name, strlen(name))
+ || SQL_ERROR == SQL->StmtBindParam(stmt, 1, SQLDT_UINT32, &index, sizeof(index))
+ || SQL_ERROR == SQL->StmtBindParam(stmt, 2, SQLDT_STRING, value, strlen(value))
+ || SQL_ERROR == SQL->StmtExecute(stmt)) {
+ SqlStmt_ShowDebug(stmt);
+ SQL->StmtFree(stmt);
+ return false;
+ }
+
+ SQL->StmtFree(stmt);
}
return true;
}
/**
- * Loads permanent variables from database.
- */
-static void script_load_mapreg(void)
+ * Deletes a global string variable.
+ *
+ * @param uid The variable's unique ID.
+ * @param name The variable's name.
+ * @param index The variable's array index.
+ * @return True on success, otherwise false.
+ *
+ **/
+static bool mapreg_delete_str_db(int64 uid, const char *name, unsigned int index)
+{
+ nullpo_retr(false, name);
+ Assert_retr(false, *name != '\0');
+ Assert_retr(false, strlen(name) <= SCRIPT_VARNAME_LENGTH);
+
+ struct mapreg_save *var = i64db_get(mapreg->regs.vars, uid);
+
+ if (var != NULL) {
+ if (var->u.str != NULL)
+ aFree(var->u.str);
+
+ ers_free(mapreg->ers, var);
+ }
+
+ if (index != 0)
+ script->array_update(&mapreg->regs, uid, true);
+
+ i64db_remove(mapreg->regs.vars, uid);
+
+ if (script->is_permanent_variable(name)) {
+ struct SqlStmt *stmt = SQL->StmtMalloc(map->mysql_handle);
+
+ if (stmt == NULL) {
+ SqlStmt_ShowDebug(stmt);
+ return false;
+ }
+
+ const char *query = "DELETE FROM `%s` WHERE `key`=? AND `index`=?";
+
+ if (SQL_ERROR == SQL->StmtPrepare(stmt, query, mapreg->str_db)
+ || SQL_ERROR == SQL->StmtBindParam(stmt, 0, SQLDT_STRING, name, strlen(name))
+ || SQL_ERROR == SQL->StmtBindParam(stmt, 1, SQLDT_UINT32, &index, sizeof(index))
+ || SQL_ERROR == SQL->StmtExecute(stmt)) {
+ SqlStmt_ShowDebug(stmt);
+ SQL->StmtFree(stmt);
+ return false;
+ }
+
+ SQL->StmtFree(stmt);
+ }
+
+ return true;
+}
+
+/**
+ * Sets the value of a global string variable or deletes it if passed value is NULL or an empty string.
+ *
+ * @param uid The variable's unique ID.
+ * @param str The variable's new value.
+ * @return True on success, otherwise false.
+ *
+ **/
+static bool mapreg_set_str(int64 uid, const char *str)
+{
+ unsigned int index = script_getvaridx(uid);
+ const char *name = script->get_str(script_getvarid(uid));
+
+ if (str != NULL && *str != '\0')
+ return mapreg->set_str_db(uid, name, index, str);
+ else
+ return mapreg->delete_str_db(uid, name, index);
+}
+
+/**
+ * Loads permanent global interger variables from the database.
+ *
+ **/
+static void mapreg_load_num_db(void)
{
- /*
- 0 1 2
- +-------------------------+
- | varname | index | value |
- +-------------------------+
- */
struct SqlStmt *stmt = SQL->StmtMalloc(map->mysql_handle);
- char varname[SCRIPT_VARNAME_LENGTH+1];
- int index;
- char value[255+1];
- uint32 length;
-
- if ( SQL_ERROR == SQL->StmtPrepare(stmt, "SELECT `varname`, `index`, `value` FROM `%s`", mapreg->table)
- || SQL_ERROR == SQL->StmtExecute(stmt)
- ) {
+
+ if (stmt == NULL) {
SqlStmt_ShowDebug(stmt);
- SQL->StmtFree(stmt);
return;
}
- mapreg->skip_insert = true;
+ const char *query = "SELECT `key`, `index`, `value` FROM `%s`";
+ char name[SCRIPT_VARNAME_LENGTH + 1];
+ unsigned int index;
+ int value;
- SQL->StmtBindColumn(stmt, 0, SQLDT_STRING, &varname, sizeof varname, &length, NULL);
- SQL->StmtBindColumn(stmt, 1, SQLDT_INT, &index, sizeof index, NULL, NULL);
- SQL->StmtBindColumn(stmt, 2, SQLDT_STRING, &value, sizeof value, NULL, NULL);
+ if (SQL_ERROR == SQL->StmtPrepare(stmt, query, mapreg->num_db)
+ || SQL_ERROR == SQL->StmtExecute(stmt)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 0, SQLDT_STRING, &name, sizeof(name), NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 1, SQLDT_UINT32, &index, sizeof(index), NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 2, SQLDT_INT32, &value, sizeof(value), NULL, NULL)) {
+ SqlStmt_ShowDebug(stmt);
+ SQL->StmtFree(stmt);
+ return;
+ }
- while ( SQL_SUCCESS == SQL->StmtNextRow(stmt) ) {
- int s = script->add_variable(varname);
- int i = index;
+ if (SQL->StmtNumRows(stmt) < 1) {
+ SQL->StmtFree(stmt);
+ return;
+ }
+ mapreg->skip_insert = true;
+
+ while (SQL_SUCCESS == SQL->StmtNextRow(stmt)) {
+ int var_key = script->add_variable(name);
+ int64 uid = reference_uid(var_key, index);
- if( i64db_exists(mapreg->regs.vars, reference_uid(s, i)) ) {
- ShowWarning("load_mapreg: duplicate! '%s' => '%s' skipping...\n",varname,value);
+ if (i64db_exists(mapreg->regs.vars, uid)) {
+ ShowWarning("mapreg_load_num_db: Duplicate! '%s' => '%d' Skipping...\n", name, value);
continue;
}
- if( varname[length-1] == '$' ) {
- mapreg->setregstr(reference_uid(s, i),value);
- } else {
- mapreg->setreg(reference_uid(s, i),atoi(value));
- }
+
+ mapreg->setreg(uid, value);
}
+ mapreg->skip_insert = false;
SQL->StmtFree(stmt);
+}
+
+/**
+ * Loads permanent global string variables from the database.
+ *
+ **/
+static void mapreg_load_str_db(void)
+{
+ struct SqlStmt *stmt = SQL->StmtMalloc(map->mysql_handle);
+
+ if (stmt == NULL) {
+ SqlStmt_ShowDebug(stmt);
+ return;
+ }
+
+ const char *query = "SELECT `key`, `index`, `value` FROM `%s`";
+ char name[SCRIPT_VARNAME_LENGTH + 1];
+ unsigned int index;
+ char value[SCRIPT_STRING_VAR_LENGTH + 1];
+
+ if (SQL_ERROR == SQL->StmtPrepare(stmt, query, mapreg->str_db)
+ || SQL_ERROR == SQL->StmtExecute(stmt)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 0, SQLDT_STRING, &name, sizeof(name), NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 1, SQLDT_UINT32, &index, sizeof(index), NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 2, SQLDT_STRING, &value, sizeof(value), NULL, NULL)) {
+ SqlStmt_ShowDebug(stmt);
+ SQL->StmtFree(stmt);
+ return;
+ }
+
+ if (SQL->StmtNumRows(stmt) < 1) {
+ SQL->StmtFree(stmt);
+ return;
+ }
+
+ mapreg->skip_insert = true;
+
+ while (SQL_SUCCESS == SQL->StmtNextRow(stmt)) {
+ int var_key = script->add_variable(name);
+ int64 uid = reference_uid(var_key, index);
+
+ if (i64db_exists(mapreg->regs.vars, uid)) {
+ ShowWarning("mapreg_load_str_db: Duplicate! '%s' => '%s' Skipping...\n", name, value);
+ continue;
+ }
+
+ mapreg->setregstr(uid, value);
+ }
mapreg->skip_insert = false;
+ SQL->StmtFree(stmt);
+}
+/**
+ * Loads permanent global variables from the database.
+ *
+ **/
+static void mapreg_load(void)
+{
+ mapreg->load_num_db();
+ mapreg->load_str_db();
mapreg->dirty = false;
}
/**
- * Saves permanent variables to database.
- */
-static void script_save_mapreg(void)
+ * Saves a permanent global integer variable to the database.
+ *
+ * @param name The variable's name.
+ * @param index The variable's array index.
+ * @param value The variable's value.
+ *
+ **/
+static void mapreg_save_num_db(const char *name, unsigned int index, int value)
+{
+ nullpo_retv(name);
+ Assert_retv(*name != '\0');
+ Assert_retv(strlen(name) <= SCRIPT_VARNAME_LENGTH);
+
+ struct SqlStmt *stmt = SQL->StmtMalloc(map->mysql_handle);
+
+ if (stmt == NULL) {
+ SqlStmt_ShowDebug(stmt);
+ return;
+ }
+
+ const char *query = "UPDATE `%s` SET `value`=? WHERE `key`=? AND `index`=? LIMIT 1";
+
+ if (SQL_ERROR == SQL->StmtPrepare(stmt, query, mapreg->num_db)
+ || SQL_ERROR == SQL->StmtBindParam(stmt, 0, SQLDT_INT32, &value, sizeof(value))
+ || SQL_ERROR == SQL->StmtBindParam(stmt, 1, SQLDT_STRING, name, strlen(name))
+ || SQL_ERROR == SQL->StmtBindParam(stmt, 2, SQLDT_UINT32, &index, sizeof(index))
+ || SQL_ERROR == SQL->StmtExecute(stmt)) {
+ SqlStmt_ShowDebug(stmt);
+ }
+
+ SQL->StmtFree(stmt);
+}
+
+/**
+ * Saves a permanent global string variable to the database.
+ *
+ * @param name The variable's name.
+ * @param index The variable's array index.
+ * @param value The variable's value.
+ *
+ **/
+static void mapreg_save_str_db(const char *name, unsigned int index, const char *value)
+{
+ nullpo_retv(name);
+ nullpo_retv(value);
+ Assert_retv(*name != '\0');
+ Assert_retv(strlen(name) <= SCRIPT_VARNAME_LENGTH);
+ Assert_retv(*value != '\0');
+ Assert_retv(strlen(value) <= SCRIPT_STRING_VAR_LENGTH);
+
+ struct SqlStmt *stmt = SQL->StmtMalloc(map->mysql_handle);
+
+ if (stmt == NULL) {
+ SqlStmt_ShowDebug(stmt);
+ return;
+ }
+
+ const char *query = "UPDATE `%s` SET `value`=? WHERE `key`=? AND `index`=? LIMIT 1";
+
+ if (SQL_ERROR == SQL->StmtPrepare(stmt, query, mapreg->str_db)
+ || SQL_ERROR == SQL->StmtBindParam(stmt, 0, SQLDT_STRING, value, strlen(value))
+ || SQL_ERROR == SQL->StmtBindParam(stmt, 1, SQLDT_STRING, name, strlen(name))
+ || SQL_ERROR == SQL->StmtBindParam(stmt, 2, SQLDT_UINT32, &index, sizeof(index))
+ || SQL_ERROR == SQL->StmtExecute(stmt)) {
+ SqlStmt_ShowDebug(stmt);
+ }
+
+ SQL->StmtFree(stmt);
+}
+
+/**
+ * Saves permanent global variables to the database.
+ *
+ **/
+static void mapreg_save(void)
{
if (mapreg->dirty) {
struct DBIterator *iter = db_iterator(mapreg->regs.vars);
- struct mapreg_save *m = NULL;
- for (m = dbi_first(iter); dbi_exists(iter); m = dbi_next(iter)) {
- if (m->save) {
- int num = script_getvarid(m->uid);
- int i = script_getvaridx(m->uid);
- const char* name = script->get_str(num);
- nullpo_retv(name);
- if (!m->is_string) {
- if( SQL_ERROR == SQL->Query(map->mysql_handle, "UPDATE `%s` SET `value`='%d' WHERE `varname`='%s' AND `index`='%d' LIMIT 1", mapreg->table, m->u.i, name, i) )
- Sql_ShowDebug(map->mysql_handle);
- } else {
- char tmp_str2[2*255+1];
- SQL->EscapeStringLen(map->mysql_handle, tmp_str2, m->u.str, safestrnlen(m->u.str, 255));
- if( SQL_ERROR == SQL->Query(map->mysql_handle, "UPDATE `%s` SET `value`='%s' WHERE `varname`='%s' AND `index`='%d' LIMIT 1", mapreg->table, tmp_str2, name, i) )
- Sql_ShowDebug(map->mysql_handle);
- }
- m->save = false;
+ struct mapreg_save *var = NULL;
+
+ for (var = dbi_first(iter); dbi_exists(iter); var = dbi_next(iter)) {
+ if (var->save) {
+ int index = script_getvaridx(var->uid);
+ const char *name = script->get_str(script_getvarid(var->uid));
+
+ if (!var->is_string)
+ mapreg->save_num_db(name, index, var->u.i);
+ else
+ mapreg->save_str_db(name, index, var->u.str);
+
+ var->save = false;
}
}
+
dbi_destroy(iter);
mapreg->dirty = false;
}
}
/**
- * Timer event to auto-save permanent variables.
+ * Timer event to auto-save permanent global variables.
*
- * @see timer->do_timer
- */
-static int script_autosave_mapreg(int tid, int64 tick, int id, intptr_t data)
+ * @see timer->do_timer()
+ *
+ * @param tid Unused.
+ * @param tick Unused.
+ * @param id Unused.
+ * @param data Unused.
+ * @return Always 0.
+ *
+ **/
+static int mapreg_save_timer(int tid, int64 tick, int id, intptr_t data)
{
mapreg->save();
return 0;
}
/**
- * Destroys a mapreg_save structure, freeing the contained string, if any.
+ * Destroys a mapreg_save structure and frees the contained string, if any.
*
* @see DBApply
- */
-static int mapreg_destroyreg(union DBKey key, struct DBData *data, va_list ap)
+ *
+ * @param key Unused.
+ * @param data The DB data holding the mapreg_save data.
+ * @param ap Unused.
+ * @return 0 on success, otherwise 1.
+ *
+ **/
+static int mapreg_destroy_reg(union DBKey key, struct DBData *data, va_list ap)
{
- struct mapreg_save *m = NULL;
+ nullpo_retr(1, data);
if (data->type != DB_DATA_PTR) // Sanity check
- return 0;
+ return 1;
- m = DB->data2ptr(data);
+ struct mapreg_save *var = DB->data2ptr(data);
- if (m->is_string) {
- if (m->u.str)
- aFree(m->u.str);
- }
- ers_free(mapreg->ers, m);
+ if (var == NULL)
+ return 1;
+
+ if (var->is_string && var->u.str != NULL)
+ aFree(var->u.str);
+ ers_free(mapreg->ers, var);
return 0;
}
/**
- * Reloads mapregs, saving to database beforehand.
+ * Reloads permanent global variables, saving them to the database beforehand.
*
- * This has the effect of clearing the temporary variables, and
- * reloading the permanent ones.
- */
+ * This has the effect of clearing the temporary global variables and reloading the permanent ones.
+ *
+ **/
static void mapreg_reload(void)
{
mapreg->save();
-
mapreg->regs.vars->clear(mapreg->regs.vars, mapreg->destroyreg);
- if( mapreg->regs.arrays ) {
+ if (mapreg->regs.arrays != NULL) {
mapreg->regs.arrays->destroy(mapreg->regs.arrays, script->array_free_db);
mapreg->regs.arrays = NULL;
}
@@ -329,86 +636,105 @@ static void mapreg_reload(void)
}
/**
- * Finalizer.
- */
+ * Loads the mapreg database table names from configuration file.
+ *
+ * @param filename Path to configuration file. (Used in error and warning messages).
+ * @param config The current config being parsed.
+ * @param imported Whether the current config is imported from another file.
+ * @return True on success, otherwise false.
+ *
+ **/
+static bool mapreg_config_read_registry(const char *filename, const struct config_setting_t *config, bool imported)
+{
+ nullpo_retr(false, filename);
+ nullpo_retr(false, config);
+
+ bool ret_val = true;
+ size_t sz = sizeof(mapreg->num_db);
+ int result = libconfig->setting_lookup_mutable_string(config, "map_reg_num_db", mapreg->num_db, sz);
+
+ if (result != CONFIG_TRUE && !imported) {
+ ShowError("%s: inter_configuration/database_names/registry/map_reg_num_db was not found in %s!\n",
+ __func__, filename);
+ ret_val = false;
+ }
+
+ sz = sizeof(mapreg->str_db);
+ result = libconfig->setting_lookup_mutable_string(config, "map_reg_str_db", mapreg->str_db, sz);
+
+ if (result != CONFIG_TRUE && !imported) {
+ ShowError("%s: inter_configuration/database_names/registry/map_reg_str_db was not found in %s!\n",
+ __func__, filename);
+ ret_val = false;
+ }
+
+ return ret_val;
+}
+
+/**
+ * Saves permanent global variables to the database and frees all the memory they use afterwards.
+ *
+ **/
static void mapreg_final(void)
{
mapreg->save();
-
mapreg->regs.vars->destroy(mapreg->regs.vars, mapreg->destroyreg);
-
ers_destroy(mapreg->ers);
- if( mapreg->regs.arrays )
+ if (mapreg->regs.arrays != NULL)
mapreg->regs.arrays->destroy(mapreg->regs.arrays, script->array_free_db);
}
/**
- * Initializer.
- */
+ * Allocates memory for permanent global variables, loads them from the database and initializes the auto-save timer.
+ *
+ **/
static void mapreg_init(void)
{
mapreg->regs.vars = i64db_alloc(DB_OPT_BASE);
mapreg->ers = ers_new(sizeof(struct mapreg_save), "mapreg_sql.c::mapreg_ers", ERS_OPT_CLEAN);
-
mapreg->load();
-
- timer->add_func_list(mapreg->save_timer, "mapreg_script_autosave_mapreg");
+ timer->add_func_list(mapreg->save_timer, "mapreg_save_timer");
timer->add_interval(timer->gettick() + MAPREG_AUTOSAVE_INTERVAL, mapreg->save_timer, 0, 0, MAPREG_AUTOSAVE_INTERVAL);
}
/**
- * Loads the mapreg configuration file.
- *
- * @param filename Path to configuration file (used in error and warning messages).
- * @param config The current config being parsed.
- * @param imported Whether the current config is imported from another file.
+ * Initializes the mapreg interface defaults.
*
- * @retval false in case of error.
- */
-static bool mapreg_config_read(const char *filename, const struct config_setting_t *config, bool imported)
-{
- nullpo_retr(false, filename);
- nullpo_retr(false, config);
-
- if (libconfig->setting_lookup_mutable_string(config, "mapreg_db", mapreg->table, sizeof(mapreg->table)) != CONFIG_TRUE)
- return false;
-
- return true;
-}
-
-/**
- * Interface defaults initializer.
- */
+ **/
void mapreg_defaults(void)
{
+ /** Interface structure. **/
mapreg = &mapreg_s;
- /* */
- mapreg->regs.vars = NULL;
+ /** Interface variables. **/
mapreg->ers = NULL;
- mapreg->skip_insert = false;
-
- safestrncpy(mapreg->table, "mapreg", sizeof(mapreg->table));
- mapreg->dirty = false;
-
- /* */
+ mapreg->regs.vars = NULL;
mapreg->regs.arrays = NULL;
-
- /* */
- mapreg->init = mapreg_init;
- mapreg->final = mapreg_final;
-
- /* */
- mapreg->readreg = mapreg_readreg;
- mapreg->readregstr = mapreg_readregstr;
- mapreg->setreg = mapreg_setreg;
- mapreg->setregstr = mapreg_setregstr;
- mapreg->load = script_load_mapreg;
- mapreg->save = script_save_mapreg;
- mapreg->save_timer = script_autosave_mapreg;
- mapreg->destroyreg = mapreg_destroyreg;
+ mapreg->dirty = false;
+ mapreg->skip_insert = false;
+ safestrncpy(mapreg->num_db, "map_reg_num_db", sizeof(mapreg->num_db));
+ safestrncpy(mapreg->str_db, "map_reg_str_db", sizeof(mapreg->str_db));
+
+ /** Interface functions. **/
+ mapreg->readreg = mapreg_get_num_reg;
+ mapreg->readregstr = mapreg_get_str_reg;
+ mapreg->set_num_db = mapreg_set_num_db;
+ mapreg->delete_num_db = mapreg_delete_num_db;
+ mapreg->setreg = mapreg_set_num;
+ mapreg->set_str_db = mapreg_set_str_db;
+ mapreg->delete_str_db = mapreg_delete_str_db;
+ mapreg->setregstr = mapreg_set_str;
+ mapreg->load_num_db = mapreg_load_num_db;
+ mapreg->load_str_db = mapreg_load_str_db;
+ mapreg->load = mapreg_load;
+ mapreg->save_num_db = mapreg_save_num_db;
+ mapreg->save_str_db = mapreg_save_str_db;
+ mapreg->save = mapreg_save;
+ mapreg->save_timer = mapreg_save_timer;
+ mapreg->destroyreg = mapreg_destroy_reg;
mapreg->reload = mapreg_reload;
- mapreg->config_read = mapreg_config_read;
-
+ mapreg->config_read_registry = mapreg_config_read_registry;
+ mapreg->final = mapreg_final;
+ mapreg->init = mapreg_init;
}
diff --git a/src/map/messages_main.h b/src/map/messages_main.h
index 6fc0310e7..7dc0ff2b6 100644
--- a/src/map/messages_main.h
+++ b/src/map/messages_main.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2020 Hercules Dev Team
- * Copyright (C) 2018-2020 Andrei Karas (4144)
+ * Copyright (C) 2013-2020 Hercules Dev Team
+ * Copyright (C) 2018-2020 Andrei Karas (4144)
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -24,7 +24,7 @@
/* This file is autogenerated, please do not commit manual changes
-Latest version: 20200129
+Latest version: 20200701
*/
enum clif_messages {
@@ -13866,12 +13866,14 @@ Ghost %d
Shadow %d
*/
MSG_NAVIGATION_PROPERTY8 = 0x8de,
-/*20120417 to latest
+/*20120417 to 20200506
언데드%d
Undead %d
20130807 to 20130814
염속성%d
Ghost %d
+20200520 to latest
+불사%d
*/
MSG_NAVIGATION_PROPERTY9 = 0x8df,
/*20120417 to latest
@@ -22521,6 +22523,139 @@ Search
*/
MSG_ID_ECE = 0xece,
#endif
+#if PACKETVER >= 20200212
+/*20200212 to latest
+합주를 혼자 사용할 수 있습니다.
+*/
+ MSG_ID_ECF = 0xecf,
+/*20200212 to latest
+크바시르의 지혜가 사라집니다.
+*/
+ MSG_ID_ED0 = 0xed0,
+/*20200212 to latest
+미스틱 심포니의 효과가 부여됩니다.
+*/
+ MSG_ID_ED1 = 0xed1,
+/*20200212 to latest
+미스틱 심포니의 효과가 사라집니다.
+*/
+ MSG_ID_ED2 = 0xed2,
+/*20200212 to latest
+마법 저항력이 감소했습니다.
+*/
+ MSG_ID_ED3 = 0xed3,
+/*20200212 to latest
+게페니아 녹턴의 효과가 해제 되었습니다.
+*/
+ MSG_ID_ED4 = 0xed4,
+/*20200212 to latest
+물리 저항력이 감소했습니다.
+*/
+ MSG_ID_ED5 = 0xed5,
+/*20200212 to latest
+마인워커 랩소디 상태가 해제되었습니다.
+*/
+ MSG_ID_ED6 = 0xed6,
+/*20200212 to latest
+물리 저항력이 증가했습니다.
+*/
+ MSG_ID_ED7 = 0xed7,
+/*20200212 to latest
+뮤지컬 인터루드 상태가 해제되었습니다.
+*/
+ MSG_ID_ED8 = 0xed8,
+/*20200212 to latest
+특성 마법 공격력과 이동 속도가 증가합니다.
+*/
+ MSG_ID_ED9 = 0xed9,
+/*20200212 to latest
+저녁 노을의 세레나데 효과가 해제되었습니다.
+*/
+ MSG_ID_EDA = 0xeda,
+/*20200212 to latest
+특성 물리 공격력과 이동 속도가 증가합니다.
+*/
+ MSG_ID_EDB = 0xedb,
+/*20200212 to latest
+ 프론테라의 행진곡 효과가 해제되었습니다.
+*/
+ MSG_ID_EDC = 0xedc,
+/*20200212 to latest
+바람의 분노가 시전자에게 흘러 들어옵니다.
+*/
+ MSG_ID_EDD = 0xedd,
+/*20200212 to latest
+캘러미티 가일 상태가 해제되었습니다.
+*/
+ MSG_ID_EDE = 0xede,
+/*20200212 to latest
+바람에 의해 약점과 모습이 드러납니다.
+*/
+ MSG_ID_EDF = 0xedf,
+/*20200212 to latest
+윈드 사인 효과가 사라집니다.
+*/
+ MSG_ID_EE0 = 0xee0,
+#endif
+#if PACKETVER >= 20200304
+/*20200304 to latest
+E X P : %.1f%% ( basic 100.0%% %s %.1f%%)
+EXP: %.1f%% (basic: 100.0%%, %s: %.1f%%)
+*/
+ MSG_ID_EE1 = 0xee1,
+/*20200304 to latest
+DROP : %.1f%% ( basic 100.0%% %s %.1f%%)
+DROP: %.1f%% (basic: 100.0%%, %s: %.1f%%)
+*/
+ MSG_ID_EE2 = 0xee2,
+/*20200304 to latest
+DEATH : %.1f%% ( basic 100.0%% %s %.1f%%)
+DEATH: %.1f%% (basic: 100.0%%, %s: %.1f%%)
+*/
+ MSG_ID_EE3 = 0xee3,
+#endif
+#if PACKETVER >= 20200506
+/*20200506 to latest
+특성 마법 공격력이 증가되었습니다.
+*/
+ MSG_ID_EE4 = 0xee4,
+/*20200506 to latest
+스펠 인챈팅 효과가 해제되었습니다.
+*/
+ MSG_ID_EE5 = 0xee5,
+/*20200506 to latest
+프롬 디 어비스 효과가 해제되었습니다.
+*/
+ MSG_ID_EE6 = 0xee6,
+/*20200506 to latest
+특성 물리 공격력, 특성 마법 공격력 및 명중률이 증가되었습니다.
+*/
+ MSG_ID_EE7 = 0xee7,
+/*20200506 to latest
+어비스 슬레이어 효과가 해제되었습니다.
+*/
+ MSG_ID_EE8 = 0xee8,
+#endif
+#if PACKETVER >= 20200617
+/*20200617 to latest
+캐릭터 생성에 제한이 있을 수 있습니다.
+*/
+ MSG_ID_EE9 = 0xee9,
+/*20200617 to latest
+월드가 포화상태입니다. 다른 월드를 이용해 주세요.
+*/
+ MSG_ID_EEA = 0xeea,
+#endif
+#if PACKETVER >= 20200701
+/*20200701 to latest
+채팅차단해제(수신거부해제)
+*/
+ MSG_ID_EEB = 0xeeb,
+/*20200701 to latest
+채팅차단(수신거부)
+*/
+ MSG_ID_EEC = 0xeec,
+#endif
};
#endif /* MAP_MESSAGES_MAIN_H */
diff --git a/src/map/messages_re.h b/src/map/messages_re.h
index f4cc62d68..aa05a2e56 100644
--- a/src/map/messages_re.h
+++ b/src/map/messages_re.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2020 Hercules Dev Team
- * Copyright (C) 2018-2020 Andrei Karas (4144)
+ * Copyright (C) 2013-2020 Hercules Dev Team
+ * Copyright (C) 2018-2020 Andrei Karas (4144)
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -24,7 +24,7 @@
/* This file is autogenerated, please do not commit manual changes
-Latest version: 20200205
+Latest version: 20200709
*/
enum clif_messages {
@@ -13342,12 +13342,14 @@ Ghost %d
Shadow %d
*/
MSG_NAVIGATION_PROPERTY8 = 0x8de,
-/*20120417 to latest
+/*20120417 to 20200304
언데드%d
Undead %d
20130807 to 20130814
염속성%d
Ghost %d
+20200709 to latest
+불사%d
*/
MSG_NAVIGATION_PROPERTY9 = 0x8df,
/*20120417 to latest
@@ -21998,6 +22000,135 @@ Search
*/
MSG_ID_ECE = 0xece,
#endif
+#if PACKETVER >= 20200212
+/*20200212 to latest
+합주를 혼자 사용할 수 있습니다.
+*/
+ MSG_ID_ECF = 0xecf,
+/*20200212 to latest
+크바시르의 지혜가 사라집니다.
+*/
+ MSG_ID_ED0 = 0xed0,
+/*20200212 to latest
+미스틱 심포니의 효과가 부여됩니다.
+*/
+ MSG_ID_ED1 = 0xed1,
+/*20200212 to latest
+미스틱 심포니의 효과가 사라집니다.
+*/
+ MSG_ID_ED2 = 0xed2,
+/*20200212 to latest
+마법 저항력이 감소했습니다.
+*/
+ MSG_ID_ED3 = 0xed3,
+/*20200212 to latest
+게페니아 녹턴의 효과가 해제 되었습니다.
+*/
+ MSG_ID_ED4 = 0xed4,
+/*20200212 to latest
+물리 저항력이 감소했습니다.
+*/
+ MSG_ID_ED5 = 0xed5,
+/*20200212 to latest
+마인워커 랩소디 상태가 해제되었습니다.
+*/
+ MSG_ID_ED6 = 0xed6,
+/*20200212 to latest
+물리 저항력이 증가했습니다.
+*/
+ MSG_ID_ED7 = 0xed7,
+/*20200212 to latest
+뮤지컬 인터루드 상태가 해제되었습니다.
+*/
+ MSG_ID_ED8 = 0xed8,
+/*20200212 to latest
+특성 마법 공격력과 이동 속도가 증가합니다.
+*/
+ MSG_ID_ED9 = 0xed9,
+/*20200212 to latest
+저녁 노을의 세레나데 효과가 해제되었습니다.
+*/
+ MSG_ID_EDA = 0xeda,
+/*20200212 to latest
+특성 물리 공격력과 이동 속도가 증가합니다.
+*/
+ MSG_ID_EDB = 0xedb,
+/*20200212 to latest
+ 프론테라의 행진곡 효과가 해제되었습니다.
+*/
+ MSG_ID_EDC = 0xedc,
+/*20200212 to latest
+바람의 분노가 시전자에게 흘러 들어옵니다.
+*/
+ MSG_ID_EDD = 0xedd,
+/*20200212 to latest
+캘러미티 가일 상태가 해제되었습니다.
+*/
+ MSG_ID_EDE = 0xede,
+/*20200212 to latest
+바람에 의해 약점과 모습이 드러납니다.
+*/
+ MSG_ID_EDF = 0xedf,
+/*20200212 to latest
+윈드 사인 효과가 사라집니다.
+*/
+ MSG_ID_EE0 = 0xee0,
+#endif
+#if PACKETVER >= 20200304
+/*20200304 to latest
+E X P : %.1f%% ( basic 100.0%% %s %.1f%%)
+EXP: %.1f%% (basic: 100.0%%, %s: %.1f%%)
+*/
+ MSG_ID_EE1 = 0xee1,
+/*20200304 to latest
+DROP : %.1f%% ( basic 100.0%% %s %.1f%%)
+DROP: %.1f%% (basic: 100.0%%, %s: %.1f%%)
+*/
+ MSG_ID_EE2 = 0xee2,
+/*20200304 to latest
+DEATH : %.1f%% ( basic 100.0%% %s %.1f%%)
+DEATH: %.1f%% (basic: 100.0%%, %s: %.1f%%)
+*/
+ MSG_ID_EE3 = 0xee3,
+#endif
+#if PACKETVER >= 20200709
+/*20200709 to latest
+특성 마법 공격력이 증가되었습니다.
+*/
+ MSG_ID_EE4 = 0xee4,
+/*20200709 to latest
+스펠 인챈팅 효과가 해제되었습니다.
+*/
+ MSG_ID_EE5 = 0xee5,
+/*20200709 to latest
+프롬 디 어비스 효과가 해제되었습니다.
+*/
+ MSG_ID_EE6 = 0xee6,
+/*20200709 to latest
+특성 물리 공격력, 특성 마법 공격력 및 명중률이 증가되었습니다.
+*/
+ MSG_ID_EE7 = 0xee7,
+/*20200709 to latest
+어비스 슬레이어 효과가 해제되었습니다.
+*/
+ MSG_ID_EE8 = 0xee8,
+/*20200709 to latest
+캐릭터 생성에 제한이 있을 수 있습니다.
+*/
+ MSG_ID_EE9 = 0xee9,
+/*20200709 to latest
+월드가 포화상태입니다. 다른 월드를 이용해 주세요.
+*/
+ MSG_ID_EEA = 0xeea,
+/*20200709 to latest
+채팅차단해제(수신거부해제)
+*/
+ MSG_ID_EEB = 0xeeb,
+/*20200709 to latest
+채팅차단(수신거부)
+*/
+ MSG_ID_EEC = 0xeec,
+#endif
};
#endif /* MAP_MESSAGES_RE_H */
diff --git a/src/map/messages_zero.h b/src/map/messages_zero.h
index 55c0329ee..7eca56cd9 100644
--- a/src/map/messages_zero.h
+++ b/src/map/messages_zero.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2020 Hercules Dev Team
- * Copyright (C) 2018-2020 Andrei Karas (4144)
+ * Copyright (C) 2013-2020 Hercules Dev Team
+ * Copyright (C) 2018-2020 Andrei Karas (4144)
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -24,7 +24,7 @@
/* This file is autogenerated, please do not commit manual changes
-Latest version: 20200129
+Latest version: 20200701
*/
enum clif_messages {
@@ -11263,9 +11263,11 @@ Shadow %d
Ghost %d
*/
MSG_NAVIGATION_PROPERTY8 = 0x8de,
-/*20171018 to latest
+/*20171018 to 20200506
언데드%d
Undead %d
+20200520 to latest
+불사%d
*/
MSG_NAVIGATION_PROPERTY9 = 0x8df,
/*20171018 to latest
@@ -18605,6 +18607,144 @@ Search
*/
MSG_ID_ECD = 0xecd,
#endif
+#if PACKETVER >= 20200212
+/*20200212 to latest
+검색
+Search
+*/
+ MSG_ID_ECE = 0xece,
+/*20200212 to latest
+합주를 혼자 사용할 수 있습니다.
+*/
+ MSG_ID_ECF = 0xecf,
+/*20200212 to latest
+크바시르의 지혜가 사라집니다.
+*/
+ MSG_ID_ED0 = 0xed0,
+/*20200212 to latest
+미스틱 심포니의 효과가 부여됩니다.
+*/
+ MSG_ID_ED1 = 0xed1,
+/*20200212 to latest
+미스틱 심포니의 효과가 사라집니다.
+*/
+ MSG_ID_ED2 = 0xed2,
+/*20200212 to latest
+마법 저항력이 감소했습니다.
+*/
+ MSG_ID_ED3 = 0xed3,
+/*20200212 to latest
+게페니아 녹턴의 효과가 해제 되었습니다.
+*/
+ MSG_ID_ED4 = 0xed4,
+/*20200212 to latest
+물리 저항력이 감소했습니다.
+*/
+ MSG_ID_ED5 = 0xed5,
+/*20200212 to latest
+마인워커 랩소디 상태가 해제되었습니다.
+*/
+ MSG_ID_ED6 = 0xed6,
+/*20200212 to latest
+물리 저항력이 증가했습니다.
+*/
+ MSG_ID_ED7 = 0xed7,
+/*20200212 to latest
+뮤지컬 인터루드 상태가 해제되었습니다.
+*/
+ MSG_ID_ED8 = 0xed8,
+/*20200212 to latest
+특성 마법 공격력과 이동 속도가 증가합니다.
+*/
+ MSG_ID_ED9 = 0xed9,
+/*20200212 to latest
+저녁 노을의 세레나데 효과가 해제되었습니다.
+*/
+ MSG_ID_EDA = 0xeda,
+/*20200212 to latest
+특성 물리 공격력과 이동 속도가 증가합니다.
+*/
+ MSG_ID_EDB = 0xedb,
+/*20200212 to latest
+ 프론테라의 행진곡 효과가 해제되었습니다.
+*/
+ MSG_ID_EDC = 0xedc,
+/*20200212 to latest
+바람의 분노가 시전자에게 흘러 들어옵니다.
+*/
+ MSG_ID_EDD = 0xedd,
+/*20200212 to latest
+캘러미티 가일 상태가 해제되었습니다.
+*/
+ MSG_ID_EDE = 0xede,
+/*20200212 to latest
+바람에 의해 약점과 모습이 드러납니다.
+*/
+ MSG_ID_EDF = 0xedf,
+/*20200212 to latest
+윈드 사인 효과가 사라집니다.
+*/
+ MSG_ID_EE0 = 0xee0,
+#endif
+#if PACKETVER >= 20200304
+/*20200304 to latest
+E X P : %.1f%% ( basic 100.0%% %s %.1f%%)
+EXP: %.1f%% (basic: 100.0%%, %s: %.1f%%)
+*/
+ MSG_ID_EE1 = 0xee1,
+/*20200304 to latest
+DROP : %.1f%% ( basic 100.0%% %s %.1f%%)
+DROP: %.1f%% (basic: 100.0%%, %s: %.1f%%)
+*/
+ MSG_ID_EE2 = 0xee2,
+/*20200304 to latest
+DEATH : %.1f%% ( basic 100.0%% %s %.1f%%)
+DEATH: %.1f%% (basic: 100.0%%, %s: %.1f%%)
+*/
+ MSG_ID_EE3 = 0xee3,
+#endif
+#if PACKETVER >= 20200506
+/*20200506 to latest
+특성 마법 공격력이 증가되었습니다.
+*/
+ MSG_ID_EE4 = 0xee4,
+/*20200506 to latest
+스펠 인챈팅 효과가 해제되었습니다.
+*/
+ MSG_ID_EE5 = 0xee5,
+/*20200506 to latest
+프롬 디 어비스 효과가 해제되었습니다.
+*/
+ MSG_ID_EE6 = 0xee6,
+/*20200506 to latest
+특성 물리 공격력, 특성 마법 공격력 및 명중률이 증가되었습니다.
+*/
+ MSG_ID_EE7 = 0xee7,
+/*20200506 to latest
+어비스 슬레이어 효과가 해제되었습니다.
+*/
+ MSG_ID_EE8 = 0xee8,
+#endif
+#if PACKETVER >= 20200617
+/*20200617 to latest
+캐릭터 생성에 제한이 있을 수 있습니다.
+*/
+ MSG_ID_EE9 = 0xee9,
+/*20200617 to latest
+월드가 포화상태입니다. 다른 월드를 이용해 주세요.
+*/
+ MSG_ID_EEA = 0xeea,
+#endif
+#if PACKETVER >= 20200701
+/*20200701 to latest
+채팅차단해제(수신거부해제)
+*/
+ MSG_ID_EEB = 0xeeb,
+/*20200701 to latest
+채팅차단(수신거부)
+*/
+ MSG_ID_EEC = 0xeec,
+#endif
};
#endif /* MAP_MESSAGES_ZERO_H */
diff --git a/src/map/mob.c b/src/map/mob.c
index 0830e5a5a..849b962a1 100644
--- a/src/map/mob.c
+++ b/src/map/mob.c
@@ -78,6 +78,7 @@ struct mob_interface *mob;
// Move probability for mobs away from players (rate of 1000 minute)
// in Aegis, this is 100% for mobs that have been activated by players and none otherwise.
#define MOB_LAZYMOVEPERC(md) ((md)->state.spotted?1000:0)
+#define MOB_MAX_CASTTIME (10 * 60 * 1000) // Maximum cast time for monster skills. (10 minutes)
#define MOB_MAX_DELAY (24*3600*1000)
#define MAX_MINCHASE 30 //Max minimum chase value to use for mobs.
#define RUDE_ATTACKED_COUNT 2 //After how many rude-attacks should the skill be used?
@@ -446,6 +447,9 @@ static bool mob_ksprotected(struct block_list *src, struct block_list *target)
if( !battle_config.ksprotection )
return false; // KS Protection Disabled
+ if (status->isdead(target) != 0)
+ return false; // Target is dead.
+
if( !(md = BL_CAST(BL_MOB,target)) )
return false; // Target is not MOB
@@ -1462,7 +1466,7 @@ static int mob_ai_sub_hard_slavemob(struct mob_data *md, int64 tick)
// If master is BL_MOB and in battle, lock & chase to master's target instead, unless configured not to.
if ((battle_config.slave_chase_masters_chasetarget == 0 || (m_md != NULL && !mob->is_in_battle_state(m_md)))
&& map->search_freecell(&md->bl, bl->m, &x, &y, MOB_SLAVEDISTANCE, MOB_SLAVEDISTANCE, 1)
- && unit->walktoxy(&md->bl, x, y, 0))
+ && unit->walk_toxy(&md->bl, x, y, 0) == 0)
return 1;
}
} else if (bl->m != md->bl.m && map_flag_gvg(md->bl.m)) {
@@ -1519,7 +1523,7 @@ static int mob_unlocktarget(struct mob_data *md, int64 tick)
FALLTHROUGH
case MSS_IDLE:
// Idle skill.
- if (!(++md->ud.walk_count%IDLE_SKILL_INTERVAL) && mob->skill_use(md, tick, -1))
+ if ((++md->ud.walk_count % IDLE_SKILL_INTERVAL) == 0 && mob->skill_use(md, tick, -1) == 0)
break;
//Random walk.
if (!md->master_id &&
@@ -1544,7 +1548,7 @@ static int mob_unlocktarget(struct mob_data *md, int64 tick)
unit->set_target(&md->ud, 0);
}
if(battle_config.official_cell_stack_limit && map->count_oncell(md->bl.m, md->bl.x, md->bl.y, BL_CHAR|BL_NPC, 0x1 | 0x2) > battle_config.official_cell_stack_limit) {
- unit->walktoxy(&md->bl, md->bl.x, md->bl.y, 8);
+ unit->walk_toxy(&md->bl, md->bl.x, md->bl.y, 8);
}
return 0;
@@ -1576,9 +1580,9 @@ static int mob_randomwalk(struct mob_data *md, int64 tick)
x+=md->bl.x;
y+=md->bl.y;
- if (((x != md->bl.x) || (y != md->bl.y)) && map->getcell(md->bl.m, &md->bl, x, y, CELL_CHKPASS) && unit->walktoxy(&md->bl, x, y, 8)) {
+ if ((x != md->bl.x || y != md->bl.y) && map->getcell(md->bl.m, &md->bl, x, y, CELL_CHKPASS) != 0
+ && unit->walk_toxy(&md->bl, x, y, 8) == 0)
break;
- }
}
if(i==retrycount){
md->move_fail_count++;
@@ -1699,7 +1703,7 @@ static bool mob_ai_sub_hard(struct mob_data *md, int64 tick)
|| !mob->can_reach(md, tbl, md->min_chase, MSS_RUSH)
)
&& md->state.attacked_count++ >= RUDE_ATTACKED_COUNT
- && !mob->skill_use(md, tick, MSC_RUDEATTACKED) // If can't rude Attack
+ && mob->skill_use(md, tick, MSC_RUDEATTACKED) == 0 // If can't rude Attack
&& can_move && unit->escape(&md->bl, tbl, rnd()%10 +1) // Attempt escape
) {
//Escaped
@@ -1727,7 +1731,7 @@ static bool mob_ai_sub_hard(struct mob_data *md, int64 tick)
) {
// Rude attacked
if (md->state.attacked_count++ >= RUDE_ATTACKED_COUNT
- && !mob->skill_use(md, tick, MSC_RUDEATTACKED) && can_move
+ && mob->skill_use(md, tick, MSC_RUDEATTACKED) == 0 && can_move != 0
&& !tbl && unit->escape(&md->bl, abl, rnd()%10 +1)
) {
//Escaped.
@@ -2422,6 +2426,7 @@ static int mob_dead(struct mob_data *md, struct block_list *src, int type)
nullpo_retr(3, md);
m = md->bl.m;
+ Assert_retr(false, m >= 0 && m < map->count);
mstatus = &md->status;
if( md->guardian_data && md->guardian_data->number >= 0 && md->guardian_data->number < MAX_GUARDIANS )
@@ -3387,272 +3392,344 @@ static struct block_list *mob_getmasterhpltmaxrate(struct mob_data *md, int rate
return NULL;
}
-/*==========================================
- * What a status state suits by nearby MOB is looked for.
- *------------------------------------------*/
+
+/**
+ * Checks if the passed monster/character meets the passed status change requirements
+ * and returns it by reference parameter on success.
+ *
+ * @param bl The monster/character to check.
+ * @param ap List of arguments. (Source monster, MSC_* flag, SC_* flag, reference bl.)
+ * @return Always 0.
+ *
+ **/
static int mob_getfriendstatus_sub(struct block_list *bl, va_list ap)
{
- int cond1,cond2;
- struct mob_data **fr = NULL, *md = NULL, *mmd = NULL;
- int flag=0;
-
nullpo_ret(bl);
- Assert_ret(bl->type == BL_MOB);
- md = BL_UCAST(BL_MOB, bl);
- nullpo_ret(mmd=va_arg(ap,struct mob_data *));
- if( mmd->bl.id == bl->id && !(battle_config.mob_ai&0x10) )
+ struct mob_data *md = va_arg(ap, struct mob_data *);
+
+ nullpo_ret(md);
+
+ if (md->bl.id == bl->id && (battle_config.mob_ai & 0x10) == 0)
+ return 0;
+
+ if (battle->check_target(&md->bl, bl, BCT_ENEMY) > 0)
return 0;
- if (battle->check_target(&mmd->bl,bl,BCT_ENEMY)>0)
+ int cond1 = va_arg(ap, int);
+ int cond2 = va_arg(ap, int);
+ struct block_list **fr = va_arg(ap, struct block_list **);
+
+ if ((*fr) != NULL) // A friend was already found.
return 0;
- cond1=va_arg(ap,int);
- cond2=va_arg(ap,int);
- fr=va_arg(ap,struct mob_data **);
- if( cond2==-1 ){
- int j;
- for(j=SC_COMMON_MIN;j<=SC_COMMON_MAX && !flag;j++){
- if ((flag=(md->sc.data[j] != NULL))) //Once an effect was found, break out. [Skotlex]
+
+ int flag = 0;
+ struct status_change *sc = status->get_sc(bl);
+
+ if (cond2 == -1) { // Check for any of the common status alignments.
+ for (int i = SC_COMMON_MIN; i <= SC_COMMON_MAX; i++) {
+ if ((flag = (sc->data[i] != NULL)) != 0) // Once an effect was found, break out. [Skotlex]
break;
}
- }else
- flag=( md->sc.data[cond2] != NULL );
- if( flag^( cond1==MSC_FRIENDSTATUSOFF ) )
- (*fr)=md;
+ } else {
+ flag = (sc->data[cond2] != NULL);
+ }
+
+ if ((flag ^ (cond1 == MSC_FRIENDSTATUSOFF)) != 0)
+ (*fr) = bl;
return 0;
}
-static struct mob_data *mob_getfriendstatus(struct mob_data *md, int cond1, int cond2)
+/**
+ * Gets a random monster/character within a range of 8 cells around md.
+ * If md is summoned (no monster slave!) a character is picker, otherwise a monster.
+ *
+ * @param md The monster which tries to cast a skill.
+ * @param cond1 Whether to check for active or inactive status change. (MSC_FRIENDSTATUSON/MSC_FRIENDSTATUSOFF)
+ * @param cond2 The status change (SC_* flag) to check.
+ * @return A randomly picked monster/character within range.
+ *
+ **/
+static struct block_list *mob_getfriendstatus(struct mob_data *md, int cond1, int cond2)
{
- struct mob_data* fr = NULL;
nullpo_ret(md);
- map->foreachinrange(mob->getfriendstatus_sub, &md->bl, 8,BL_MOB, md,cond1,cond2,&fr);
+ int type = (md->special_state.ai != AI_NONE) ? BL_PC : BL_MOB;
+ struct block_list *fr = NULL;
+
+ map->foreachinrange(mob->getfriendstatus_sub, &md->bl, 8, type, md, cond1, cond2, &fr);
+
return fr;
}
-/*==========================================
- * Skill use judging
- *------------------------------------------*/
-static int mobskill_use(struct mob_data *md, int64 tick, int event)
+/**
+ * Checks if skill cast condition in fulfilled and executes the skill in case of success.
+ *
+ * @param md The monster which tries to cast a skill.
+ * @param tick The timestamp of skill execution.
+ * @param event The MSC_* flag which triggered the skill execution. (-1 for non-event skill conditions.)
+ * @return 0 on success, 1 on failure.
+ *
+ **/
+static int mob_skill_use(struct mob_data *md, int64 tick, int event)
{
- struct mob_skill *ms;
- struct block_list *fbl = NULL; //Friend bl, which can either be a BL_PC or BL_MOB depending on the situation. [Skotlex]
- struct block_list *bl;
- struct mob_data *fmd = NULL;
- int i,j,n;
-
nullpo_ret(md);
- nullpo_ret(ms = md->db->skill);
- if (!battle_config.mob_skill_rate || md->ud.skilltimer != INVALID_TIMER || !md->db->maxskill)
- return 0;
+ struct mob_skill *ms = md->db->skill;
+
+ nullpo_ret(ms);
+
+ if (battle_config.mob_skill_rate == 0 || md->ud.skilltimer != INVALID_TIMER || md->db->maxskill == 0)
+ return 1;
if (event == -1 && DIFF_TICK(md->ud.canact_tick, tick) > 0)
- return 0; //Skill act delay only affects non-event skills.
+ return 1; // Skill act delay only affects non-event skill conditions.
- //Pick a starting position and loop from that.
- i = (battle_config.mob_ai&0x100) ? rnd()%md->db->maxskill : 0;
- for (n = 0; n < md->db->maxskill; i++, n++) {
- int c2, flag = 0;
+ // Pick a starting position and loop from that.
+ int skill_idx = ((battle_config.mob_ai & 0x100) != 0) ? rnd() % md->db->maxskill : 0;
- if (i == md->db->maxskill)
- i = 0;
+ for (int i = 0; i < md->db->maxskill; skill_idx++, i++) {
+ if (skill_idx == md->db->maxskill)
+ skill_idx = 0;
- if (DIFF_TICK(tick, md->skilldelay[i]) < ms[i].delay)
+ if (DIFF_TICK(tick, md->skilldelay[skill_idx]) < ms[skill_idx].delay)
continue;
- c2 = ms[i].cond2;
+ enum MobSkillState state = ms[skill_idx].state;
- if (ms[i].state != md->state.skillstate) {
- if (md->state.skillstate != MSS_DEAD && (ms[i].state == MSS_ANY ||
- (ms[i].state == MSS_ANYTARGET && md->target_id && md->state.skillstate != MSS_LOOT)
- )) //ANYTARGET works with any state as long as there's a target. [Skotlex]
- ;
- else
+ if (state != md->state.skillstate) {
+ bool state_dead = (md->state.skillstate == MSS_DEAD);
+ bool any_target = (state == MSS_ANYTARGET && md->target_id != 0 && md->state.skillstate != MSS_LOOT);
+
+ // MSS_ANYTARGET works with any state as long as there's a target. [Skotlex]
+ if (state_dead || (state != MSS_ANY && !any_target))
continue;
}
- if (rnd() % 10000 > ms[i].permillage) //Lupus (max value = 10000)
+
+ if (rnd() % 10000 > ms[skill_idx].permillage)
continue;
- if (ms[i].cond1 == event)
- flag = 1; //Trigger skill.
- else if (ms[i].cond1 == MSC_SKILLUSED)
- flag = ((event & 0xffff) == MSC_SKILLUSED && ((event >> 16) == c2 || c2 == 0));
- else if(event == -1){
- //Avoid entering on defined events to avoid "hyper-active skill use" due to the overflow of calls to this function in battle.
- switch (ms[i].cond1)
- {
- case MSC_ALWAYS:
- flag = 1; break;
- case MSC_MYHPLTMAXRATE: // HP< maxhp%
- flag = get_percentage(md->status.hp, md->status.max_hp);
- flag = (flag <= c2);
- break;
- case MSC_MYHPINRATE:
- flag = get_percentage(md->status.hp, md->status.max_hp);
- flag = (flag >= c2 && flag <= ms[i].val[0]);
- break;
- case MSC_MYSTATUSON: // status[num] on
- case MSC_MYSTATUSOFF: // status[num] off
- if (!md->sc.count) {
- flag = 0;
- } else if (ms[i].cond2 == -1) {
- for (j = SC_COMMON_MIN; j <= SC_COMMON_MAX; j++)
- if ((flag = (md->sc.data[j]!=NULL)) != 0)
- break;
- } else {
- flag = (md->sc.data[ms[i].cond2]!=NULL);
+ int cast_cond = ms[skill_idx].cond1;
+ int cond_data = ms[skill_idx].cond2;
+ int flag = 0;
+ struct block_list *fbl = NULL; // Friend bl, which can either be a BL_PC or BL_MOB depending on the situation. [Skotlex]
+
+ if (cast_cond == event) {
+ flag = 1; // Trigger skill.
+ } else if (cast_cond == MSC_SKILLUSED) {
+ flag = ((event & 0xFFFF) == MSC_SKILLUSED && ((event >> 16) == cond_data || cond_data == 0));
+ } else if (event == -1) {
+ // Avoid entering on defined events to avoid "hyper-active skill use" due to the overflow of calls to this function in battle.
+ switch (cast_cond) {
+ case MSC_ALWAYS:
+ flag = 1;
+ break;
+ case MSC_MYHPLTMAXRATE: // HP <= x%
+ flag = get_percentage(md->status.hp, md->status.max_hp);
+ flag = (flag <= cond_data);
+ break;
+ case MSC_MYHPINRATE: // HP >= x% && HP <= y%
+ flag = get_percentage(md->status.hp, md->status.max_hp);
+ flag = (flag >= cond_data && flag <= ms[skill_idx].val[0]);
+ break;
+ case MSC_MYSTATUSON: // Status change x is active.
+ case MSC_MYSTATUSOFF: // Status change x is inactive.
+ if (cond_data == -1) { // Check for any of the common status alignments.
+ for (int j = SC_COMMON_MIN; j <= SC_COMMON_MAX; j++) {
+ if ((flag = (md->sc.data[j] != NULL)) != 0)
+ break;
}
- flag ^= (ms[i].cond1 == MSC_MYSTATUSOFF); break;
- case MSC_FRIENDHPLTMAXRATE: // friend HP < maxhp%
- flag = ((fbl = mob->getfriendhprate(md, 0, ms[i].cond2)) != NULL); break;
- case MSC_FRIENDHPINRATE:
- flag = ((fbl = mob->getfriendhprate(md, ms[i].cond2, ms[i].val[0])) != NULL); break;
- case MSC_FRIENDSTATUSON: // friend status[num] on
- case MSC_FRIENDSTATUSOFF: // friend status[num] off
- flag = ((fmd = mob->getfriendstatus(md, ms[i].cond1, ms[i].cond2)) != NULL); break;
- case MSC_SLAVELT: // slave < num
- flag = (mob->countslave(&md->bl) < c2 ); break;
- case MSC_ATTACKPCGT: // attack pc > num
- flag = (unit->counttargeted(&md->bl) > c2); break;
- case MSC_SLAVELE: // slave <= num
- flag = (mob->countslave(&md->bl) <= c2 ); break;
- case MSC_ATTACKPCGE: // attack pc >= num
- flag = (unit->counttargeted(&md->bl) >= c2); break;
- case MSC_AFTERSKILL:
- flag = (md->ud.skill_id == c2); break;
- case MSC_RUDEATTACKED:
- flag = (md->state.attacked_count >= RUDE_ATTACKED_COUNT);
- if (flag) md->state.attacked_count = 0; //Rude attacked count should be reset after the skill condition is met. Thanks to Komurka [Skotlex]
- break;
- case MSC_MASTERHPLTMAXRATE:
- flag = ((fbl = mob->getmasterhpltmaxrate(md, ms[i].cond2)) != NULL); break;
- case MSC_MASTERATTACKED:
- flag = (md->master_id > 0 && (fbl=map->id2bl(md->master_id)) != NULL && unit->counttargeted(fbl) > 0);
- break;
- case MSC_ALCHEMIST:
- flag = (md->state.alchemist);
- break;
+ } else {
+ flag = (md->sc.data[cond_data] != NULL);
+ }
+
+ flag ^= (cast_cond == MSC_MYSTATUSOFF);
+ break;
+ case MSC_FRIENDHPLTMAXRATE: // FriendHP <= x%
+ flag = ((fbl = mob->getfriendhprate(md, 0, cond_data)) != NULL);
+ break;
+ case MSC_FRIENDHPINRATE: // FriendHP >= x% && FriendHP <= y%
+ flag = ((fbl = mob->getfriendhprate(md, cond_data, ms[skill_idx].val[0])) != NULL);
+ break;
+ case MSC_FRIENDSTATUSON: // Friend's status change x is active.
+ case MSC_FRIENDSTATUSOFF: // Friend's status change x is inactive.
+ flag = ((fbl = mob->getfriendstatus(md, cast_cond, cond_data)) != NULL);
+ break;
+ case MSC_SLAVELT: // Monster has less than x active slaves.
+ flag = (mob->countslave(&md->bl) < cond_data);
+ break;
+ case MSC_ATTACKPCGT: // Monster is attacked by more than x units.
+ flag = (unit->counttargeted(&md->bl) > cond_data);
+ break;
+ case MSC_SLAVELE: // Monster has x or less active slaves.
+ flag = (mob->countslave(&md->bl) <= cond_data);
+ break;
+ case MSC_ATTACKPCGE: // Monster is attacked by x or more units.
+ flag = (unit->counttargeted(&md->bl) >= cond_data);
+ break;
+ case MSC_AFTERSKILL: // Monster used skill x, or any skill if x is 0.
+ flag = (md->ud.skill_id == cond_data || cond_data == 0);
+ break;
+ case MSC_RUDEATTACKED: // Monster was rude attacked RUDE_ATTACKED_COUNT or more times.
+ flag = (md->state.attacked_count >= RUDE_ATTACKED_COUNT);
+
+ // Rude attacked count should be reset after the skill condition is met. Thanks to Komurka [Skotlex]
+ if (flag)
+ md->state.attacked_count = 0;
+
+ break;
+ case MSC_MASTERHPLTMAXRATE: // MasterHP < x%
+ flag = ((fbl = mob->getmasterhpltmaxrate(md, cond_data)) != NULL);
+ break;
+ case MSC_MASTERATTACKED: // Monster's master is under attack.
+ flag = (md->master_id > 0 && (fbl = map->id2bl(md->master_id)) != NULL);
+ flag = (fbl != NULL && unit->counttargeted(fbl) > 0);
+ break;
+ case MSC_ALCHEMIST: // Monster was summoned by an Alchemist.
+ flag = (md->state.alchemist != 0);
+ break;
}
}
- if (!flag)
- continue; //Skill requisite failed to be fulfilled.
+ if (flag == 0) // Skill cast condition not fulfilled.
+ continue;
- //Execute skill
- if (skill->get_casttype(ms[i].skill_id) == CAST_GROUND) {//Ground skill.
- short x, y;
- switch (ms[i].target) {
- case MST_RANDOM: //Pick a random enemy within skill range.
- bl = battle->get_enemy(&md->bl, DEFAULT_ENEMY_TYPE(md),
- skill->get_range2(&md->bl, ms[i].skill_id, ms[i].skill_lv));
- break;
- case MST_TARGET:
- case MST_AROUND5:
- case MST_AROUND6:
- case MST_AROUND7:
- case MST_AROUND8:
- bl = map->id2bl(md->target_id);
- break;
- case MST_MASTER:
- bl = &md->bl;
- if (md->master_id)
- bl = map->id2bl(md->master_id);
- if (bl) //Otherwise, fall through.
- break;
- FALLTHROUGH
- case MST_FRIEND:
- bl = fbl?fbl:(fmd?&fmd->bl:&md->bl);
- break;
- default:
- bl = &md->bl;
+ // Execute skill.
+ if (skill->get_casttype(ms[skill_idx].skill_id) == CAST_GROUND) { // Ground skill.
+ int target_type = ms[skill_idx].target;
+ int skill_range = skill->get_range2(&md->bl, ms[skill_idx].skill_id, ms[skill_idx].skill_lv);
+ struct block_list *bl;
+
+ switch (target_type) {
+ case MST_RANDOM: // Pick a random enemy within skill range. Skill center is monster position.
+ bl = battle->get_enemy(&md->bl, DEFAULT_ENEMY_TYPE(md), skill_range);
+ break;
+ case MST_TARGET: // Monster's current target is within skill range. Skill center is monster position.
+ case MST_AROUND5: // Monster's current target is within skill range. Skill center is a random cell within a range of 1.
+ case MST_AROUND6: // Monster's current target is within skill range. Skill center is a random cell within a range of 2.
+ case MST_AROUND7: // Monster's current target is within skill range. Skill center is a random cell within a range of 3.
+ case MST_AROUND8: // Monster's current target is within skill range. Skill center is a random cell within a range of 4.
+ bl = map->id2bl(md->target_id);
+ break;
+ case MST_MASTER: // Monster's master is within skill range. Skill center is monster position.
+ // If monster has no master, use the monster as target,
+ bl = (md->master_id != 0) ? map->id2bl(md->master_id) : &md->bl;
+
+ if (bl != NULL)
break;
+
+ // If monster has a master but master wasn't found, try a friend.
+ FALLTHROUGH
+ case MST_FRIEND: // Monster's friend is within skill range. Skill center is monster position.
+ bl = (fbl != NULL) ? fbl : &md->bl;
+ break;
+ default: // Monster is within skill range. Skill center is monster position.
+ bl = &md->bl;
+ break;
}
- if (!bl) continue;
-
- x = bl->x;
- y = bl->y;
- // Look for an area to cast the spell around...
- if (ms[i].target >= MST_AROUND1 || ms[i].target >= MST_AROUND5) {
- j = ms[i].target >= MST_AROUND1?
- (ms[i].target-MST_AROUND1) +1:
- (ms[i].target-MST_AROUND5) +1;
- map->search_freecell(&md->bl, md->bl.m, &x, &y, j, j, 3);
+
+ if (bl == NULL) // No target found.
+ continue;
+
+ short x = bl->x;
+ short y = bl->y;
+
+ // Find a target cell.
+ if (target_type >= MST_AROUND5 && target_type <= MST_AROUND) {
+ int range = target_type - ((target_type >= MST_AROUND1) ? MST_AROUND1 : MST_AROUND5) + 1;
+ map->search_freecell(&md->bl, md->bl.m, &x, &y, range, range, 3);
}
- md->skill_idx = i;
+
+ md->skill_idx = skill_idx;
map->freeblock_lock();
- if( !battle->check_range(&md->bl,bl,skill->get_range2(&md->bl, ms[i].skill_id,ms[i].skill_lv))
- || !unit->skilluse_pos2(&md->bl, x, y,ms[i].skill_id, ms[i].skill_lv,ms[i].casttime, ms[i].cancel)
- ) {
+
+ uint16 sk_id = ms[skill_idx].skill_id;
+ uint16 sk_lv = ms[skill_idx].skill_lv;
+ int casttime = ms[skill_idx].casttime;
+ short cancel = ms[skill_idx].cancel;
+
+ if (!battle->check_range(&md->bl, bl, skill_range)
+ || unit->skilluse_pos2(&md->bl, x, y, sk_id, sk_lv, casttime, cancel) == 0) {
map->freeblock_unlock();
continue;
}
- } else {
- //Targeted skill
- switch (ms[i].target) {
- case MST_RANDOM: //Pick a random enemy within skill range.
- bl = battle->get_enemy(&md->bl, DEFAULT_ENEMY_TYPE(md),
- skill->get_range2(&md->bl, ms[i].skill_id, ms[i].skill_lv));
- break;
- case MST_TARGET:
- bl = map->id2bl(md->target_id);
- break;
- case MST_MASTER:
- bl = &md->bl;
- if (md->master_id)
- bl = map->id2bl(md->master_id);
- if (bl) //Otherwise, fall through.
- break;
- FALLTHROUGH
- case MST_FRIEND:
- if (fbl) {
- bl = fbl;
- break;
- } else if (fmd) {
- bl = &fmd->bl;
- break;
- } // else fall through
- FALLTHROUGH
- default:
- bl = &md->bl;
+ } else { // Targeted skill.
+ int skill_range = skill->get_range2(&md->bl, ms[skill_idx].skill_id, ms[skill_idx].skill_lv);
+ struct block_list *bl;
+
+ switch (ms[skill_idx].target) {
+ case MST_RANDOM: // Pick a random enemy within skill range.
+ bl = battle->get_enemy(&md->bl, DEFAULT_ENEMY_TYPE(md), skill_range);
+ break;
+ case MST_TARGET: // Monster's current target is within skill range.
+ bl = map->id2bl(md->target_id);
+ break;
+ case MST_MASTER: // Monster's master is within skill range.
+ // If monster has no master, use the monster as target,
+ bl = (md->master_id != 0) ? map->id2bl(md->master_id) : &md->bl;
+
+ if (bl != NULL)
break;
+
+ // If monster has a master but master wasn't found, try a friend.
+ FALLTHROUGH
+ case MST_FRIEND: // Monster's friend is within skill range.
+ bl = (fbl != NULL) ? fbl : &md->bl;
+ break;
+ default: // Monster is within skill range.
+ bl = &md->bl;
+ break;
}
- if (!bl) continue;
- md->skill_idx = i;
+ if (bl == NULL) // No target found.
+ continue;
+
+ md->skill_idx = skill_idx;
map->freeblock_lock();
- if( !battle->check_range(&md->bl,bl,skill->get_range2(&md->bl, ms[i].skill_id,ms[i].skill_lv))
- || !unit->skilluse_id2(&md->bl, bl->id,ms[i].skill_id, ms[i].skill_lv,ms[i].casttime, ms[i].cancel)
- ) {
+
+ uint16 sk_id = ms[skill_idx].skill_id;
+ uint16 sk_lv = ms[skill_idx].skill_lv;
+ int casttime = ms[skill_idx].casttime;
+ short cancel = ms[skill_idx].cancel;
+
+ if (!battle->check_range(&md->bl, bl, skill_range)
+ || unit->skilluse_id2(&md->bl, bl->id, sk_id, sk_lv, casttime, cancel) == 0) {
map->freeblock_unlock();
continue;
}
}
- //Skill used. Post-setups...
- if ( ms[ i ].msg_id ){ //Display color message [SnakeDrak]
- struct mob_chat *mc = mob->chat(ms[i].msg_id);
+
+ // Skill used.
+ if (ms[skill_idx].msg_id != 0) { // Display color message. [SnakeDrak]
char temp[CHAT_SIZE_MAX];
char name[NAME_LENGTH];
- snprintf(name, sizeof name,"%s", md->name);
- strtok(name, "#"); // discard extra name identifier if present [Daegaladh]
- safesnprintf(temp, sizeof temp,"%s : %s", name, mc->msg);
+ struct mob_chat *mc = mob->chat(ms[skill_idx].msg_id);
+
+ snprintf(name, sizeof(name), "%s", md->name);
+ strtok(name, "#"); // Discard extra name identifier if present. [Daegaladh]
+ safesnprintf(temp, sizeof(temp), "%s : %s", name, mc->msg);
clif->messagecolor(&md->bl, mc->color, temp);
}
- if(!(battle_config.mob_ai&0x200)) { //pass on delay to same skill.
- for (j = 0; j < md->db->maxskill; j++)
- if (md->db->skill[j].skill_id == ms[i].skill_id)
- md->skilldelay[j]=tick;
- } else
- md->skilldelay[i]=tick;
+
+ if ((battle_config.mob_ai & 0x200) == 0) { // Pass on delay to same skill.
+ for (int j = 0; j < md->db->maxskill; j++) {
+ if (md->db->skill[j].skill_id == ms[skill_idx].skill_id)
+ md->skilldelay[j] = tick;
+ }
+ } else {
+ md->skilldelay[skill_idx] = tick;
+ }
+
map->freeblock_unlock();
- return 1;
+ return 0;
}
- //No skill was used.
+
+ // No skill was used.
md->skill_idx = -1;
- return 0;
+ return 1;
}
+
/*==========================================
* Skill use event processing
*------------------------------------------*/
@@ -3663,7 +3740,7 @@ static int mobskill_event(struct mob_data *md, struct block_list *src, int64 tic
nullpo_ret(md);
nullpo_ret(src);
if(md->bl.prev == NULL || md->status.hp <= 0)
- return 0;
+ return 1;
if (md->special_state.ai == AI_SPHERE) {//LOne WOlf explained that ANYONE can trigger the marine countdown skill. [Skotlex]
md->state.alchemist = 1;
@@ -3682,8 +3759,10 @@ static int mobskill_event(struct mob_data *md, struct block_list *src, int64 tic
res = mob->skill_use(md, tick, MSC_CLOSEDATTACKED);
else if (flag&BF_LONG && !(flag&BF_MAGIC)) //Long-attacked should not include magic.
res = mob->skill_use(md, tick, MSC_LONGRANGEATTACKED);
+ else if ((flag & BF_MAGIC) != 0)
+ res = mob->skill_use(md, tick, MSC_MAGICATTACKED);
- if (!res)
+ if (res != 0)
//Restore previous target only if skill condition failed to trigger. [Skotlex]
md->target_id = target_id;
//Otherwise check if the target is an enemy, and unlock if needed.
@@ -3793,7 +3872,7 @@ static int mob_clone_spawn(struct map_session_data *sd, int16 m, int16 x, int16
continue;
/// Normal aggressive mob. Disable skills that cannot help fighting against players. (Those with flags UF_NOMOB and UF_NOPC are specific to always aid players!) [Skotlex]
- if (flag == 0 && skill->get_unit_id(skill_id, 0) != 0 &&
+ if (flag == 0 && skill->get_unit_id(skill_id, sd->status.skill[idx].lv, 0) != 0 &&
(skill->get_unit_flag(skill_id) & (UF_NOMOB | UF_NOPC)) > 0)
continue;
@@ -3826,7 +3905,7 @@ static int mob_clone_spawn(struct map_session_data *sd, int16 m, int16 x, int16
mob_skills[i].state = MSS_IDLE;
mob_skills[i].target = MST_AROUND2;
mob_skills[i].delay = 60000;
- } else if (skill->get_unit_target(skill_id) == BCT_ENEMY) { /// Target Enemy.
+ } else if (skill->get_unit_target(skill_id, sd->status.skill[idx].lv) == BCT_ENEMY) { /// Target Enemy.
mob_skills[i].state = MSS_ANYTARGET;
mob_skills[i].target = MST_TARGET;
mob_skills[i].cond1 = MSC_ALWAYS;
@@ -3907,8 +3986,8 @@ static int mob_clone_spawn(struct map_session_data *sd, int16 m, int16 x, int16
}
}
- mob_skills[i].permillage *= battle_config.mob_skill_rate / 100;
- mob_skills[i].delay *= battle_config.mob_skill_delay / 100;
+ mob_skills[i].permillage = mob_skills[i].permillage * battle_config.mob_skill_rate / 100;
+ mob_skills[i].delay = mob_skills[i].delay * battle_config.mob_skill_delay / 100;
db->maxskill = ++i;
}
@@ -5012,12 +5091,10 @@ static int mob_read_db_sub(struct config_setting_t *mobt, int n, const char *sou
md.status.def_ele = i32;
md.status.ele_lv = value;
} else if (!inherit) {
- ShowWarning("mob_read_db_sub: Missing element for monster ID %d.\n", md.mob_id);
md.status.def_ele = ELE_NEUTRAL;
md.status.ele_lv = 1;
}
} else if (!inherit) {
- ShowWarning("mob_read_db_sub: Missing element for monster ID %d.\n", md.mob_id);
md.status.def_ele = ELE_NEUTRAL;
md.status.ele_lv = 1;
}
@@ -5491,115 +5568,134 @@ static bool mob_skill_db_libconfig_sub(struct config_setting_t *it, int n)
return true;
}
+/**
+ * Reads a single monster skill from DB.
+ *
+ * @param it The libconfig settings block, which contains the skill data.
+ * @param n The skill data block's index within the parent monster block.
+ * @param mob_id The monster's ID.
+ * @return true on success, false on failure.
+ *
+ **/
static bool mob_skill_db_libconfig_sub_skill(struct config_setting_t *it, int n, int mob_id)
{
- int i, j, idx = 0;
- int i32;
- int skill_id = 0;
- int skill_idx = 0;
- bool clearskills = false;
- const char *name = config_setting_name(it);
- struct mob_skill *ms, gms;
-
nullpo_retr(false, it);
Assert_retr(false, mob_id <= 0 || mob->db(mob_id) != mob->dummy);
- if (!(skill_id = skill->name2id(name))) {
- ShowWarning("mob_skill_db_libconfig_sub_skill: Non existant skill id %d in monster %d, skipping.\n", skill_id, mob_id);
+ int skill_id = 0;
+ const char *name = config_setting_name(it);
+ const char *mob_str = (mob_id < 0) ? "global ID" : "monster";
+
+ if ((skill_id = skill->name2id(name)) == 0) {
+ ShowWarning("%s: Non existant skill %d in %s %d, skipping.\n", __func__, skill_id, mob_str, mob_id);
return false;
}
+ const char *skill_name = skill->get_name(skill_id);
+ bool clearskills = false;
+
// If ClearSkills flag is enabled clear all the previous skills.
- if (libconfig->setting_lookup_bool_real(it, "ClearSkills", &clearskills) && clearskills) {
- if (mob_id < 0) // Clearing skills globaly is not supported
+ if (libconfig->setting_lookup_bool_real(it, "ClearSkills", &clearskills) == CONFIG_TRUE && clearskills) {
+ if (mob_id < 0) {
+ ShowError("%s: Global skill clearing is not supported, skipping. (Global ID %d, skill %d (%s).)\n",
+ __func__, mob_id, skill_id, skill_name);
return false;
+ }
+
memset(mob->db_data[mob_id]->skill, 0, sizeof(struct mob_skill) * MAX_MOBSKILL);
mob->db_data[mob_id]->maxskill = 0;
return true;
}
- if (mob_id < 0) {
- // Prepare global skill. [Skotlex]
+ struct mob_skill *ms;
+
+ if (mob_id < 0) { // Prepare global skill. [Skotlex]
+ struct mob_skill gms;
memset(&gms, 0, sizeof (struct mob_skill));
ms = &gms;
} else {
+ int idx = 0;
+
ARR_FIND(0, MAX_MOBSKILL, idx, (ms = &mob->db_data[mob_id]->skill[idx])->skill_id == 0);
+
if (idx == MAX_MOBSKILL) {
- ShowError("mob_skill_db_libconfig_sub_skill: Too many skills for monster %d\n", mob_id);
+ ShowError("%s: Too many skills for monster %d, skipping.\n", __func__, mob_id);
return false;
}
+
+ mob->db_data[mob_id]->maxskill = idx + 1;
}
+
ms->skill_id = skill_id;
+ int i32 = MSS_ANY;
if (mob->lookup_const(it, "SkillState", &i32) && (i32 < MSS_ANY || i32 > MSS_ANYTARGET)) {
- ShowWarning("mob_skill_db_libconfig_sub_skill: Invalid skill state %d for skill id %d in monster %d, defaulting to MSS_ANY.\n", i32, skill_id, mob_id);
+ ShowWarning("%s: Invalid skill state %d for skill %d (%s) in %s %d, defaulting to MSS_ANY.\n",
+ __func__, i32, skill_id, skill_name, mob_str, mob_id);
i32 = MSS_ANY;
}
ms->state = i32;
- if (!libconfig->setting_lookup_int(it, "SkillLevel", &i32) || i32 <= 0)
- i32 = 1;
- ms->skill_lv = i32 > battle_config.mob_max_skilllvl ? battle_config.mob_max_skilllvl : i32; //we strip max skill level
+ int res = libconfig->setting_lookup_int(it, "SkillLevel", &i32);
+ ms->skill_lv = (res == CONFIG_FALSE) ? 1 : cap_value(i32, 1, battle_config.mob_max_skilllvl);
- //Apply battle_config modifiers to rate (permillage) and delay [Skotlex]
- if (libconfig->setting_lookup_int(it, "Rate", &i32))
- ms->permillage = i32;
+ res = libconfig->setting_lookup_int(it, "Rate", &i32);
+ ms->permillage = (res == CONFIG_FALSE) ? 1 : cap_value(i32, 1, 10000);
+ // Apply battle_config modifier to rate (permillage).
if (battle_config.mob_skill_rate != 100)
ms->permillage = ms->permillage * battle_config.mob_skill_rate / 100;
+
if (ms->permillage > 10000)
ms->permillage = 10000;
- else if (ms->permillage == 0 && battle_config.mob_skill_rate)
+ else if (ms->permillage == 0 && battle_config.mob_skill_rate != 0)
ms->permillage = 1;
- if (libconfig->setting_lookup_int(it, "CastTime", &i32) && i32 > 0)
- ms->casttime = i32;
+ res = libconfig->setting_lookup_int(it, "CastTime", &i32);
+ ms->casttime = (res == CONFIG_FALSE) ? 0 : cap_value(i32, 0, MOB_MAX_CASTTIME);
+
+ res = libconfig->setting_lookup_int(it, "Delay", &i32);
+ ms->delay = (res == CONFIG_FALSE) ? 0 : cap_value(i32, 0, MOB_MAX_DELAY);
- if (libconfig->setting_lookup_int(it, "Delay", &i32))
- ms->delay = i32;
+ // Apply battle_config modifier to delay.
if (battle_config.mob_skill_delay != 100)
ms->delay = ms->delay * battle_config.mob_skill_delay / 100;
- if (ms->delay < 0 || ms->delay > MOB_MAX_DELAY) //time overflow?
- ms->delay = MOB_MAX_DELAY;
- if (libconfig->setting_lookup_bool(it, "Cancelable", &i32))
- ms->cancel = (i32 == 0) ? 0 : 1;
+ ms->delay = min(ms->delay, MOB_MAX_DELAY);
+
+ res = libconfig->setting_lookup_bool(it, "Cancelable", &i32);
+ ms->cancel = (res == CONFIG_FALSE) ? 0 : cap_value(i32, 0, 1);
+ i32 = MST_TARGET;
if (mob->lookup_const(it, "SkillTarget", &i32) && (i32 < MST_TARGET || i32 > MST_AROUND)) {
- ShowWarning("mob_skill_db_libconfig_sub_skill: Invalid skill target %d for skill id %d in monster %d, defaulting to MST_TARGET.\n", i32, skill_id, mob_id);
- ms->target = MST_TARGET;
+ ShowWarning("%s: Invalid skill target %d for skill %d (%s) in %s %d, defaulting to MST_TARGET.\n",
+ __func__, i32, skill_id, skill_name, mob_str, mob_id);
+ i32 = MST_TARGET;
}
ms->target = i32;
- //Check that the target condition is right for the skill type. [Skotlex]
- skill_idx = skill->get_index(skill_id);
- if (skill->get_casttype2(skill_idx) == CAST_GROUND) {//Ground skill.
- if (ms->target > MST_AROUND) {
- ShowWarning("mob_skill_db_libconfig_sub_skill: Wrong mob skill target for ground skill %d (%s) for %s.\n",
- ms->skill_id, skill->dbs->db[skill_idx].name,
- mob_id < 0 ? "all mobs" : mob->db_data[mob_id]->sprite);
- ms->target = MST_TARGET;
- }
- } else if (ms->target > MST_MASTER) {
- ShowWarning("mob_skill_db_libconfig_sub_skill: Wrong mob skill target 'around' for non-ground skill %d (%s) for %s.\n",
- ms->skill_id, skill->dbs->db[skill_idx].name,
- mob_id < 0 ? "all mobs" : mob->db_data[mob_id]->sprite);
+ // Check the target condition for non-ground skills. (Ground skills can use every target.)
+ if (skill->get_casttype2(skill->get_index(skill_id)) != CAST_GROUND && ms->target > MST_MASTER) {
+ ShowWarning("%s: Wrong skill target %d for non-ground skill %d (%s) in %s %d, defaulting to MST_TARGET.\n",
+ __func__, ms->target, skill_id, skill_name, mob_str, mob_id);
ms->target = MST_TARGET;
}
- if (mob->lookup_const(it, "CastCondition", &i32) && (i32 < MSC_ALWAYS || i32 > MSC_SPAWN)) {
- ShowWarning("mob_skill_db_libconfig_sub_skill: Invalid skill condition %d for skill id %d in monster %d, defaulting to MSC_ALWAYS.\n", i32, skill_id, mob_id);
- ms->cond1 = MSC_ALWAYS;
+ i32 = MSC_ALWAYS;
+ if (mob->lookup_const(it, "CastCondition", &i32) && (i32 < MSC_ALWAYS || i32 > MSC_MAGICATTACKED)) {
+ ShowWarning("%s: Invalid skill condition %d for skill id %d (%s) in %s %d, defaulting to MSC_ALWAYS.\n",
+ __func__, i32, skill_id, skill_name, mob_str, mob_id);
+ i32 = MSC_ALWAYS;
}
ms->cond1 = i32;
- if (mob->lookup_const(it, "ConditionData", &i32))
- ms->cond2 = i32;
+ ms->cond2 = !mob->lookup_const(it, "ConditionData", &i32) ? 0 : cap_value(i32, SHRT_MIN, SHRT_MAX);
- for (i = 0; i < 5; i++) {
+ for (int i = 0; i < 5; i++) {
char valname[16];
sprintf(valname, "val%1d", i);
- if (libconfig->setting_lookup_int(it, valname, &i32))
+
+ if (libconfig->setting_lookup_int(it, valname, &i32) == CONFIG_TRUE)
ms->val[i] = i32;
}
@@ -5610,60 +5706,64 @@ static bool mob_skill_db_libconfig_sub_skill(struct config_setting_t *it, int n,
if (mob_id > 0 && (uint32)ms->val[1] == mob->db(mob_id)->status.mode) {
ms->val[1] = MD_NONE;
- ms->val[4] = 1; //request to return mode to normal.
+ ms->val[4] = 1; // Request to return mode to normal.
}
}
if (ms->skill_id == NPC_EMOTION_ON && mob_id > 0 && ms->val[1] != MD_NONE) {
- //Adds a mode to the mob.
- //Remove aggressive mode when the new mob type is passive.
- if (!(ms->val[1] & MD_AGGRESSIVE))
+ // Add a mode to the mob and remove aggressive mode if the new mode is passive.
+ if ((ms->val[1] & MD_AGGRESSIVE) == 0)
ms->val[3] |= MD_AGGRESSIVE;
- ms->val[2] |= (uint32)ms->val[1]; //Add the new mode.
- ms->val[1] = MD_NONE; //Do not "set" it.
+
+ ms->val[2] |= (uint32)ms->val[1]; // Add the new mode.
+ ms->val[1] = MD_NONE; // Do not "set" it.
}
- if (libconfig->setting_lookup_int(it, "Emotion", &i32))
- ms->emotion = i32;
- else
- ms->emotion = -1;
+ res = libconfig->setting_lookup_int(it, "Emotion", &i32);
+ ms->emotion = (res == CONFIG_FALSE) ? -1 : cap_value(i32, -1, SHRT_MAX);
- if (libconfig->setting_lookup_int(it, "ChatMsgID", &i32) && i32 > 0 && i32 <= MAX_MOB_CHAT) {
- if (mob->chat_db[i32] == NULL) {
- ShowWarning("mob_skill_db_libconfig_sub_skill: Invalid msg id %d for skill id %d in monster %d, ignoring.\n", i32, skill_id, mob_id);
+ if (libconfig->setting_lookup_int(it, "ChatMsgID", &i32) == CONFIG_TRUE) {
+ if (i32 <= 0 || i32 > MAX_MOB_CHAT || mob->chat_db[i32] == NULL) {
+ ShowWarning("%s: Invalid message ID %d for skill %d (%s) in %s %d, ignoring.\n",
+ __func__, i32, skill_id, skill_name, mob_str, mob_id);
} else {
ms->msg_id = i32;
}
}
- if (mob_id < 0) {
- // Set this skill to ALL mobs. [Skotlex]
- mob_id *= -1;
- for (i = 1; i < MAX_MOB_DB; i++) {
+ if (mob_id < 0) { // Global skill assignment.
+ mob_id = -mob_id;
+
+ for (int i = 1; i < MAX_MOB_DB; i++) {
if (mob->db_data[i] == NULL)
continue;
- if (mob->db_data[i]->status.mode & MD_BOSS) {
- if (!(mob_id & 2)) //Skill not for bosses
+
+ if ((mob->db_data[i]->status.mode & MD_BOSS) != 0) {
+ if ((mob_id & 2) == 0) // Skill not for boss monsters.
continue;
} else {
- if (!(mob_id & 1)) //Skill not for normal enemies.
+ if ((mob_id & 1) == 0) // Skill not for normal monsters.
continue;
}
- ARR_FIND(0, MAX_MOBSKILL, j, mob->db_data[i]->skill[j].skill_id == 0);
- if (j == MAX_MOBSKILL)
+
+ int idx;
+
+ ARR_FIND(0, MAX_MOBSKILL, idx, mob->db_data[i]->skill[idx].skill_id == 0);
+
+ if (idx == MAX_MOBSKILL) {
+ ShowError("%s: Too many skills for monster %d in global ID %d, skipping.\n",
+ __func__, i, -mob_id);
continue;
+ }
- memcpy(&mob->db_data[i]->skill[j], ms, sizeof(struct mob_skill));
- mob->db_data[i]->maxskill = j + 1;
+ memcpy(&mob->db_data[i]->skill[idx], ms, sizeof(struct mob_skill));
+ mob->db_data[i]->maxskill = idx + 1;
}
- } else { //Skill set on a single mob.
- mob->db_data[mob_id]->maxskill = idx + 1;
}
return true;
}
-
/*==========================================
* mob_skill_db.txt reading
*------------------------------------------*/
@@ -6059,7 +6159,7 @@ void mob_defaults(void)
mob->getmasterhpltmaxrate = mob_getmasterhpltmaxrate;
mob->getfriendstatus_sub = mob_getfriendstatus_sub;
mob->getfriendstatus = mob_getfriendstatus;
- mob->skill_use = mobskill_use;
+ mob->skill_use = mob_skill_use;
mob->skill_event = mobskill_event;
mob->is_clone = mob_is_clone;
mob->clone_spawn = mob_clone_spawn;
diff --git a/src/map/mob.h b/src/map/mob.h
index 8839809f2..59b288fcc 100644
--- a/src/map/mob.h
+++ b/src/map/mob.h
@@ -35,7 +35,7 @@ struct hplugin_data_store;
// Change this to increase the table size in your mob_db to accommodate a larger mob database.
// Be sure to note that IDs 4001 to 4048 are reserved for advanced/baby/expanded classes.
// Notice that the last 1000 entries are used for player clones, so always set this to desired value +1000
-#define MAX_MOB_DB 5000
+#define MAX_MOB_DB 22000
//The number of drops all mobs have and the max drop-slot that the steal skill will attempt to steal from.
#define MAX_MOB_DROP 10
@@ -321,6 +321,14 @@ enum {
MSC_MASTERATTACKED,
MSC_ALCHEMIST,
MSC_SPAWN,
+ MSC_MAGICATTACKED,
+};
+
+/** Special monster(-name) constants used to assign skills to a group of monsters. **/
+enum mob_group {
+ ALL_MOBS_NONBOSS = -1,
+ ALL_MOBS_BOSS = -2,
+ ALL_MOBS = -3,
};
/**
@@ -566,7 +574,7 @@ struct mob_interface {
struct block_list* (*getfriendhprate) (struct mob_data *md, int min_rate, int max_rate);
struct block_list* (*getmasterhpltmaxrate) (struct mob_data *md, int rate);
int (*getfriendstatus_sub) (struct block_list *bl, va_list ap);
- struct mob_data* (*getfriendstatus) (struct mob_data *md, int cond1, int cond2);
+ struct block_list *(*getfriendstatus) (struct mob_data *md, int cond1, int cond2);
int (*skill_use) (struct mob_data *md, int64 tick, int event);
int (*skill_event) (struct mob_data *md, struct block_list *src, int64 tick, int flag);
int (*is_clone) (int class_);
diff --git a/src/map/npc.c b/src/map/npc.c
index e66888a74..7a3fa9c3f 100644
--- a/src/map/npc.c
+++ b/src/map/npc.c
@@ -389,7 +389,10 @@ static int npc_event_export(struct npc_data *nd, int i)
Assert_ret(i >= 0 && i < nd->u.scr.label_list_num);
lname = nd->u.scr.label_list[i].name;
pos = nd->u.scr.label_list[i].pos;
- if ((lname[0] == 'O' || lname[0] == 'o') && (lname[1] == 'N' || lname[1] == 'n')) {
+
+ if ((nd->u.scr.label_list[i].flags & LABEL_IS_EXTERN) != 0
+ && ((nd->u.scr.label_list[i].flags & LABEL_IS_USERFUNC) == 0
+ || script->config.functions_as_events)) {
struct event_data *ev;
struct linkdb_node **label_linkdb = NULL;
char buf[EVENT_NAME_LENGTH];
@@ -1799,6 +1802,7 @@ static void npc_expanded_barter_fromsql(void)
) {
SqlStmt_ShowDebug(stmt);
SQL->StmtFree(stmt);
+ StrBuf->Destroy(&buf);
return;
}
@@ -2711,43 +2715,47 @@ static int npc_selllist_sub(struct map_session_data *sd, struct itemlist *item_l
char card_slot[NAME_LENGTH];
char opt_index_str[NAME_LENGTH];
char opt_value_str[NAME_LENGTH];
- int i, j;
+ char opt_param_str[NAME_LENGTH];
+ int i = 0;
+ int j = 0;
int key_nameid = 0;
int key_amount = 0;
int key_refine = 0;
- int key_attribute = 0;
+ int key_attribute = ATTR_NONE;
int key_identify = 0;
int key_card[MAX_SLOTS];
int key_opt_idx[MAX_ITEM_OPTIONS];
int key_opt_value[MAX_ITEM_OPTIONS];
+ int key_opt_param[MAX_ITEM_OPTIONS];
nullpo_ret(sd);
nullpo_ret(item_list);
nullpo_ret(nd);
// discard old contents
- script->cleararray_pc(sd, "@sold_nameid", (void*)0);
- script->cleararray_pc(sd, "@sold_quantity", (void*)0);
- script->cleararray_pc(sd, "@sold_refine", (void*)0);
- script->cleararray_pc(sd, "@sold_attribute", (void*)0);
- script->cleararray_pc(sd, "@sold_identify", (void*)0);
-
- for( j = 0; j < MAX_SLOTS; j++ )
- {// clear each of the card slot entries
+ script->cleararray_pc(sd, "@sold_nameid", (void *)0);
+ script->cleararray_pc(sd, "@sold_quantity", (void *)0);
+ script->cleararray_pc(sd, "@sold_refine", (void *)0);
+ script->cleararray_pc(sd, "@sold_attribute", (void *)0);
+ script->cleararray_pc(sd, "@sold_identify", (void *)0);
+
+ for (j = 0; j < MAX_SLOTS; j++) { // clear each of the card slot entries
key_card[j] = 0;
snprintf(card_slot, sizeof(card_slot), "@sold_card%d", j + 1);
- script->cleararray_pc(sd, card_slot, (void*)0);
+ script->cleararray_pc(sd, card_slot, (void *)0);
}
for (j = 0; j < MAX_ITEM_OPTIONS; j++) { // Clear Each item option entry
key_opt_idx[j] = 0;
key_opt_value[j] = 0;
+ key_opt_param[j] = 0;
- snprintf(opt_index_str, sizeof(opt_index_str), "@slot_opt_idx%d", j + 1);
- script->cleararray_pc(sd, opt_index_str, (void*)0);
-
- snprintf(opt_value_str, sizeof(opt_value_str), "@slot_opt_val%d", j + 1);
- script->cleararray_pc(sd, opt_value_str, (void*)0);
+ snprintf(opt_index_str, sizeof(opt_index_str), "@sold_opt_idx%d", j + 1);
+ script->cleararray_pc(sd, opt_index_str, (void *)0);
+ snprintf(opt_value_str, sizeof(opt_value_str), "@sold_opt_val%d", j + 1);
+ script->cleararray_pc(sd, opt_value_str, (void *)0);
+ snprintf(opt_param_str, sizeof(opt_param_str), "@sold_opt_param%d", j + 1);
+ script->cleararray_pc(sd, opt_param_str, (void *)0);
}
// save list of to be sold items
@@ -2760,32 +2768,31 @@ static int npc_selllist_sub(struct map_session_data *sd, struct itemlist *item_l
intptr_t attribute = item->attribute;
intptr_t identify = item->identify;
- script->setarray_pc(sd, "@sold_nameid", i, (void*)nameid, &key_nameid);
- script->setarray_pc(sd, "@sold_quantity", i, (void*)amount, &key_amount);
-
// process item based information into the arrays
- script->setarray_pc(sd, "@sold_refine", i, (void*)refine, &key_refine);
- script->setarray_pc(sd, "@sold_attribute", i, (void*)attribute, &key_attribute);
- script->setarray_pc(sd, "@sold_identify", i, (void*)identify, &key_identify);
+ script->setarray_pc(sd, "@sold_nameid", i, (void *)nameid, &key_nameid);
+ script->setarray_pc(sd, "@sold_quantity", i, (void *)amount, &key_amount);
+ script->setarray_pc(sd, "@sold_refine", i, (void *)refine, &key_refine);
+ script->setarray_pc(sd, "@sold_attribute", i, (void *)attribute, &key_attribute);
+ script->setarray_pc(sd, "@sold_identify", i, (void *)identify, &key_identify);
for (j = 0; j < MAX_SLOTS; j++) {
intptr_t card = item->card[j];
- // store each of the cards/special info from the item in the array
snprintf(card_slot, sizeof(card_slot), "@sold_card%d", j + 1);
- script->setarray_pc(sd, card_slot, i, (void*)card, &key_card[j]);
+ script->setarray_pc(sd, card_slot, i, (void *)card, &key_card[j]);
}
for (j = 0; j < MAX_ITEM_OPTIONS; j++) {
intptr_t opt_idx = item->option[j].index;
intptr_t opt_value = item->option[j].value;
+ intptr_t opt_param = item->option[j].param;
- snprintf(opt_index_str, sizeof(opt_index_str), "@slot_opt_idx%d", j + 1);
- script->setarray_pc(sd, opt_index_str, i, (void*)opt_idx, &key_opt_idx[j]);
-
- snprintf(opt_value_str, sizeof(opt_value_str), "@slot_opt_val%d", j + 1);
- script->setarray_pc(sd, opt_value_str, i, (void*)opt_value, &key_opt_value[j]);
+ snprintf(opt_index_str, sizeof(opt_index_str), "@sold_opt_idx%d", j + 1);
+ script->setarray_pc(sd, opt_index_str, i, (void *)opt_idx, &key_opt_idx[j]);
+ snprintf(opt_value_str, sizeof(opt_value_str), "@sold_opt_val%d", j + 1);
+ script->setarray_pc(sd, opt_value_str, i, (void *)opt_value, &key_opt_value[j]);
+ snprintf(opt_param_str, sizeof(opt_param_str), "@sold_opt_param%d", j + 1);
+ script->setarray_pc(sd, opt_param_str, i, (void *)opt_param, &key_opt_param[j]);
}
-
}
// invoke event
@@ -2794,104 +2801,102 @@ static int npc_selllist_sub(struct map_session_data *sd, struct itemlist *item_l
return 0;
}
-/// Player item selling to npc shop.
-///
-/// @param item_list 'n' pairs <index,amount>
-/// @return result code for clif->parse_NpcSellListSend
+/**
+ * Processes a character's request to sell items to a NPC shop.
+ *
+ * @param sd The character who wants to sell the items.
+ * @param item_list The list of items and respective amounts which should be sold.
+ * @return 1 on failure, 0 on success.
+ *
+ **/
static int npc_selllist(struct map_session_data *sd, struct itemlist *item_list)
{
- int64 z;
- int i,skill_t, skill_idx = skill->get_index(MC_OVERCHARGE);
- struct npc_data *nd;
- bool duplicates[MAX_INVENTORY] = { 0 };
-
nullpo_retr(1, sd);
nullpo_retr(1, item_list);
- if( ( nd = npc->checknear(sd, map->id2bl(sd->npc_shopid)) ) == NULL ) {
+ struct npc_data *nd = npc->checknear(sd, map->id2bl(sd->npc_shopid));
+
+ if (nd == NULL)
return 1;
- }
- if( nd->subtype != SHOP ) {
- if (!(nd->subtype == SCRIPT && nd->u.scr.shop && (nd->u.scr.shop->type == NST_ZENY || nd->u.scr.shop->type == NST_MARKET)))
+ if (nd->subtype != SHOP) {
+ if (nd->subtype != SCRIPT || nd->u.scr.shop == NULL || (nd->u.scr.shop->type != NST_ZENY && nd->u.scr.shop->type != NST_MARKET))
return 1;
}
- z = 0;
-
if (sd->status.zeny >= MAX_ZENY && nd->master_nd == NULL)
return 1;
- // verify the sell list
- for (i = 0; i < VECTOR_LENGTH(*item_list); i++) {
+ bool duplicates[MAX_INVENTORY] = { false };
+ int64 z = 0;
+
+ // Verify the sell list.
+ for (int i = 0; i < VECTOR_LENGTH(*item_list); i++) {
struct itemlist_entry *entry = &VECTOR_INDEX(*item_list, i);
- int nameid, value, idx = entry->id;
+ int idx = entry->id;
- if (idx >= sd->status.inventorySize || idx < 0 || entry->amount < 0) {
+ if (idx >= sd->status.inventorySize || idx < 0 || entry->amount < 0)
return 1;
- }
- if (duplicates[idx]) {
- // Sanity check. The client sends each inventory index at most once [Haru]
+ if (duplicates[idx]) // Sanity check. The client sends each inventory index at most once. [Haru]
return 1;
- }
+
duplicates[idx] = true;
- nameid = sd->status.inventory[idx].nameid;
+ int nameid = sd->status.inventory[idx].nameid;
- if (!nameid || !sd->inventory_data[idx] || sd->status.inventory[idx].amount < entry->amount) {
+ if (nameid == 0 || sd->inventory_data[idx] == NULL || sd->status.inventory[idx].amount < entry->amount)
return 1;
- }
- if (nd->master_nd) {
- // Script-controlled shops decide by themselves, what can be sold and at what price.
+ if (nd->master_nd != NULL) // Script-controlled shops decide by themselves, what can be sold and at what price.
continue;
- }
- value = pc->modifysellvalue(sd, sd->inventory_data[idx]->value_sell);
+ int value = pc->modifysellvalue(sd, sd->inventory_data[idx]->value_sell);
z += (int64)value * entry->amount;
}
- if( nd->master_nd ) { // Script-controlled shops
+ if (nd->master_nd != NULL) // Script-controlled shops.
return npc->selllist_sub(sd, item_list, nd->master_nd);
- }
- // delete items
- for (i = 0; i < VECTOR_LENGTH(*item_list); i++) {
+ if (z + sd->status.zeny > MAX_ZENY)
+ return 1;
+
+ // Delete items.
+ for (int i = 0; i < VECTOR_LENGTH(*item_list); i++) {
struct itemlist_entry *entry = &VECTOR_INDEX(*item_list, i);
int idx = entry->id;
if (sd->inventory_data[idx]->type == IT_PETEGG && sd->status.inventory[idx].card[0] == CARD0_PET) {
- if (pet->search_petDB_index(sd->status.inventory[idx].nameid, PET_EGG) >= 0) {
+ if (pet->search_petDB_index(sd->status.inventory[idx].nameid, PET_EGG) >= 0)
intif->delete_petdata(MakeDWord(sd->status.inventory[idx].card[1], sd->status.inventory[idx].card[2]));
- }
}
- // Achievements [Smokexyz/Hercules]
+ // Achievements. [Smokexyz/Hercules]
achievement->validate_item_sell(sd, sd->status.inventory[idx].nameid, entry->amount);
pc->delitem(sd, idx, entry->amount, 0, DELITEM_SOLD, LOG_TYPE_NPC);
-
}
- if (z + sd->status.zeny > MAX_ZENY && nd->master_nd == NULL)
- return 1;
-
if (z > MAX_ZENY)
z = MAX_ZENY;
pc->getzeny(sd, (int)z, LOG_TYPE_NPC, NULL);
- // custom merchant shop exp bonus
- if( battle_config.shop_exp > 0 && z > 0 && ( skill_t = pc->checkskill2(sd,skill_idx) ) > 0) {
- if( sd->status.skill[skill_idx].flag >= SKILL_FLAG_REPLACED_LV_0 )
+ int skill_t;
+ int skill_idx = skill->get_index(MC_OVERCHARGE);
+
+ // Custom merchant shop exp bonus.
+ if (battle_config.shop_exp > 0 && z > 0 && (skill_t = pc->checkskill2(sd, skill_idx)) > 0) {
+ if (sd->status.skill[skill_idx].flag >= SKILL_FLAG_REPLACED_LV_0)
skill_t = sd->status.skill[skill_idx].flag - SKILL_FLAG_REPLACED_LV_0;
- if( skill_t > 0 ) {
+ if (skill_t > 0) {
z = apply_percentrate64(z, skill_t * battle_config.shop_exp, 10000);
+
if (z < 1)
z = 1;
+
pc->gainexp(sd, NULL, 0, (int)z, false);
}
}
@@ -3053,11 +3058,11 @@ static int npc_unload(struct npc_data *nd, bool single, bool unload_mobs)
aFree(nd->u.shop.shop_item); /// src check for duplicate shops. [Orcao]
} else if (nd->subtype == SCRIPT) {
char evname[EVENT_NAME_LENGTH];
-
+
snprintf(evname, ARRAYLENGTH(evname), "%s::OnNPCUnload", nd->exname);
struct event_data *ev = strdb_get(npc->ev_db, evname);
-
+
if (ev != NULL)
script->run_npc(nd->u.scr.script, ev->pos, 0, nd->bl.id); /// Run OnNPCUnload.
@@ -3391,7 +3396,7 @@ static bool npc_viewisid(const char *viewid)
* @param class_ The NPC view class.
* @return A pointer to the created NPC data (ownership passed to the caller).
*/
-static struct npc_data *npc_create_npc(enum npc_subtype subtype, int m, int x, int y, uint8 dir, int class_)
+static struct npc_data *npc_create_npc(enum npc_subtype subtype, int m, int x, int y, enum unit_dir dir, int class_)
{
struct npc_data *nd;
@@ -3664,6 +3669,7 @@ static void npc_convertlabel_db(struct npc_label_list *label_list, const char *f
for( i = 0; i < script->label_count; i++ ) {
const char* lname = script->get_str(script->labels[i].key);
int lpos = script->labels[i].pos;
+ enum script_label_flags flags = script->labels[i].flags;
struct npc_label_list* label;
const char *p;
size_t len;
@@ -3685,6 +3691,7 @@ static void npc_convertlabel_db(struct npc_label_list *label_list, const char *f
safestrncpy(label->name, lname, sizeof(label->name));
label->pos = lpos;
+ label->flags = flags;
}
}
@@ -5098,7 +5105,7 @@ static const char *npc_parse_mapflag(const char *w1, const char *w2, const char
else if (modifier[0] == '\0') {
ShowWarning("npc_parse_mapflag: Missing 5th param for 'adjust_unit_duration' flag! removing flag from %s in file '%s', line '%d'.\n", map->list[m].name, filepath, strline(buffer,start-buffer));
if (retval) *retval = EXIT_FAILURE;
- } else if( !( skill_id = skill->name2id(skill_name) ) || !skill->get_unit_id( skill->name2id(skill_name), 0) ) {
+ } else if ((skill_id = skill->name2id(skill_name)) == 0 || skill->get_unit_id(skill->name2id(skill_name), 1, 0) == 0) {
ShowWarning("npc_parse_mapflag: Unknown skill (%s) for 'adjust_unit_duration' flag! removing flag from %s in file '%s', line '%d'.\n",skill_name, map->list[m].name, filepath, strline(buffer,start-buffer));
if (retval) *retval = EXIT_FAILURE;
} else if ( atoi(modifier) < 1 || atoi(modifier) > USHRT_MAX ) {
@@ -5235,6 +5242,8 @@ static const char *npc_parse_mapflag(const char *w1, const char *w2, const char
map->list[m].flag.nostorage = (state) ? cap_value(atoi(w4), 1, 3) : 0;
} else if (!strcmpi(w3, "nogstorage")) {
map->list[m].flag.nogstorage = (state) ? cap_value(atoi(w4), 1, 3) : 0;
+ } else if (strcmpi(w3, "nopet") == 0) {
+ map->list[m].flag.nopet = (state != 0) ? 1 : 0;
} else {
npc->parse_unknown_mapflag(mapname, w3, w4, start, buffer, filepath, retval);
}
@@ -5605,7 +5614,7 @@ static int npc_reload(void)
npc->npc_last_npd = NULL;
npc->npc_last_path = NULL;
npc->npc_last_ref = NULL;
-
+
const int npc_new_min = npc->npc_id;
struct s_mapiterator *iter = mapit_geteachiddb();
@@ -5722,8 +5731,10 @@ static bool npc_unloadfile(const char *filepath, bool unload_mobs)
dbi_destroy(iter);
- if (found) /// Refresh event cache.
+ if (found) { /// Refresh event cache.
+ npc->motd = npc->name2id("HerculesMOTD");
npc->read_event_script();
+ }
return found;
}
diff --git a/src/map/npc.h b/src/map/npc.h
index 65c9796d9..16d7a984b 100644
--- a/src/map/npc.h
+++ b/src/map/npc.h
@@ -56,9 +56,15 @@ enum npc_shop_types {
struct npc_timerevent_list {
int timer,pos;
};
+
+/** list of labels within a NPC (used internally by the label db) */
struct npc_label_list {
+ /** label name */
char name[NAME_LENGTH];
+ /** start point within the script */
int pos;
+ /** optional label flags */
+ enum script_label_flags flags;
};
struct npc_barter_currency {
@@ -95,7 +101,7 @@ struct npc_data {
int chat_id;
int touching_id;
int64 next_walktime;
- uint8 dir;
+ enum unit_dir dir;
uint8 area_size;
int clan_id;
@@ -281,7 +287,7 @@ struct npc_interface {
void (*parsename) (struct npc_data *nd, const char *name, const char *start, const char *buffer, const char *filepath);
int (*parseview) (const char *w4, const char *start, const char *buffer, const char *filepath);
bool (*viewisid) (const char *viewid);
- struct npc_data *(*create_npc) (enum npc_subtype subtype, int m, int x, int y, uint8 dir, int class_);
+ struct npc_data *(*create_npc) (enum npc_subtype subtype, int m, int x, int y, enum unit_dir dir, int class_);
struct npc_data* (*add_warp) (char *name, short from_mapid, short from_x, short from_y, short xs, short ys, unsigned short to_mapindex, short to_x, short to_y);
const char *(*parse_warp) (const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int *retval);
const char *(*parse_shop) (const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int *retval);
diff --git a/src/map/npc_chat.c b/src/map/npc_chat.c
index 0ca84cff4..0df323e96 100644
--- a/src/map/npc_chat.c
+++ b/src/map/npc_chat.c
@@ -394,7 +394,8 @@ static int npc_chat_sub(struct block_list *bl, va_list ap)
// save out the matched strings
for (i = 0; i < r; i++)
{
- char var[15], val[255];
+ char var[SCRIPT_VARNAME_LENGTH + 1];
+ char val[SCRIPT_STRING_VAR_LENGTH + 1];
snprintf(var, sizeof(var), "$@p%i$", i);
libpcre->copy_substring(msg, offsets, r, i, val, sizeof(val));
script->set_var(sd, var, val);
diff --git a/src/map/packets.h b/src/map/packets.h
index 1e6dc71bc..e30acbdf7 100644
--- a/src/map/packets.h
+++ b/src/map/packets.h
@@ -1824,6 +1824,11 @@ packet(0x96e,clif->ackmergeitems);
packet(0x0aa4, clif->pRefineryUIClose);
#endif
+#if PACKETVER_MAIN_NUM >= 20170111 || PACKETVER_RE_NUM >= 20170111 || defined(PACKETVER_ZERO)
+ packet(0x0ab5, clif->pLapineUpgrade_close);
+ packet(0x0ab6, clif->pLapineUpgrade_makeItem);
+#endif
+
// 2017-02-28aRagexeRE
#if PACKETVER >= 20170228
// new packets
diff --git a/src/map/packets_keys_main.h b/src/map/packets_keys_main.h
index a72d9bf5f..ef8d39fb7 100644
--- a/src/map/packets_keys_main.h
+++ b/src/map/packets_keys_main.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2020 Hercules Dev Team
- * Copyright (C) 2018-2020 Andrei Karas (4144)
+ * Copyright (C) 2013-2020 Hercules Dev Team
+ * Copyright (C) 2018-2020 Andrei Karas (4144)
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -37,7 +37,7 @@
packetKeys(0x49357d72,0x22c370a1,0x5f836591);
#endif
-// 2010-11-23aRagexeRE, 2010-11-24aRagexeRE, 2010-11-24bRagexeRE, 2010-11-25aRagexeRE, 2010-11-26aRagexeRE, 2010-11-30aRagexeRE, 2010-12-07aRagexeRE, 2010-12-14aRagexeRE, 2010-12-21aRagexeRE, 2010-12-23aRagexeRE, 2010-12-28aRagexeRE, 2011-01-04aRagexeRE, 2011-01-05aRagexeRE, 2011-01-11aRagexeRE, 2011-01-18aRagexeRE, 2011-01-25aRagexeRE, 2011-01-26aRagexeRE, 2011-01-26bRagexeRE, 2011-01-31aRagexeRE, 2011-01-31bRagexeRE, 2011-01-31cRagexeRE, 2011-02-08aRagexeRE, 2011-02-15aRagexeRE, 2011-02-22aRagexeRE, 2011-02-23aRagexeRE, 2011-02-23bRagexeRE, 2011-02-24aRagexeRE, 2011-02-25aRagexeRE, 2011-02-28aRagexeRE, 2011-03-08aRagexeRE, 2011-03-09aRagexeRE, 2011-03-09bRagexeRE, 2011-03-09cRagexeRE, 2011-03-09dRagexeRE, 2011-03-15aRagexeRE, 2011-03-22aRagexeRE, 2011-03-29aRagexeRE, 2011-03-30aRagexeRE, 2011-03-30cRagexeRE, 2011-04-05aRagexeRE, 2011-04-12aRagexeRE, 2011-04-19aRagexeRE, 2011-04-20aRagexeRE, 2011-04-26aRagexeRE, 2011-04-27aRagexeRE, 2011-05-03aRagexeRE, 2011-05-11aRagexeRE, 2011-05-17bRagexeRE, 2011-05-24aRagexeRE, 2011-05-26aRagexeRE, 2011-05-31aRagexeRE, 2011-06-07aRagexeRE, 2011-06-08aRagexeRE, 2011-06-08bRagexeRE, 2011-06-08cRagexeRE, 2011-06-09aRagexeRE, 2011-06-14bRagexeRE, 2011-06-22aRagexeRE, 2011-06-28aRagexeRE, 2011-07-06aRagexeRE, 2011-07-13aRagexeRE, 2011-07-13bRagexeRE, 2011-07-13cRagexeRE, 2011-07-19aRagexeRE, 2011-07-26aRagexeRE, 2011-08-03aRagexeRE, 2011-08-03bRagexeRE, 2011-08-10aRagexeRE, 2013-12-23aRagexeRE, 2014-05-08aRagexe, 2014-05-08aRagexeRE, 2014-06-11eRagexe, 2015-02-25hRagexe, 2018-03-15aRagexe, 2018-03-21aRagexe, 2018-03-21aRagexeRE, 2018-03-28bRagexe, 2018-03-28bRagexeRE, 2018-04-04bRagexe, 2018-04-04cRagexeRE, 2018-04-18aRagexe, 2018-04-18bRagexeRE, 2018-04-25cRagexe, 2018-04-25cRagexeRE, 2018-05-02bRagexe, 2018-05-02bRagexeRE, 2018-05-02dRagexeRE, 2018-05-09aRagexe, 2018-05-16cRagexe, 2018-05-16cRagexeRE, 2018-05-23aRagexe, 2018-05-23aRagexeRE, 2018-05-30aRagexe, 2018-05-30bRagexeRE, 2018-05-30cRagexeRE, 2018-06-05bRagexe, 2018-06-05bRagexeRE, 2018-06-12aRagexeRE, 2018-06-12bRagexeRE, 2018-06-20cRagexe, 2018-06-20dRagexeRE, 2018-06-20eRagexe, 2018-06-20eRagexeRE, 2018-06-21aRagexe, 2018-06-21aRagexeRE, 2018-07-04aRagexe, 2018-07-04aRagexeRE, 2018-07-11aRagexeRE, 2018-07-18bRagexe, 2018-07-18bRagexeRE, 2018-07-18bRagexeRE1, 2018-07-18cRagexe, 2018-07-18cRagexeRE, 2018-08-01cRagexe, 2018-08-01cRagexeRE, 2018-08-08bRagexe, 2018-08-08bRagexeRE, 2018-08-22cRagexe, 2018-08-22cRagexeRE, 2018-08-29aRagexe, 2018-08-29aRagexeRE, 2018-08-29bRagexeRE, 2018-08-31aRagexe, 2018-09-12dRagexe, 2018-09-12dRagexeRE, 2018-09-19aRagexe, 2018-09-19aRagexeRE, 2018-10-02aRagexe, 2018-10-02aRagexeRE, 2018-10-02bRagexe, 2018-10-02bRagexeRE, 2018-10-17_02aRagexe, 2018-10-17_02aRagexeRE, 2018-10-17_03aRagexe, 2018-10-17_03aRagexeRE, 2018-10-17bRagexe, 2018-10-17bRagexeRE, 2018-10-24bRagexe, 2018-10-31aRagexe, 2018-10-31bRagexe, 2018-10-31cRagexeRE, 2018-11-07aRagexe, 2018-11-07aRagexeRE, 2018-11-14cRagexe, 2018-11-14cRagexeRE, 2018-11-14dRagexe, 2018-11-14dRagexeRE, 2018-11-21bRagexe, 2018-11-21cRagexeRE, 2018-11-28aRagexe, 2018-11-28aRagexeRE, 2018-11-28bRagexe, 2018-11-28cRagexe, 2018-12-05aRagexe, 2018-12-05bRagexeRE, 2018-12-12aRagexe, 2018-12-12aRagexeRE, 2018-12-12bRagexe, 2018-12-12bRagexeRE, 2018-12-19bRagexe, 2018-12-19bRagexeRE, 2018-12-26aRagexe, 2018-12-26aRagexeRE, 2019-01-09aRagexe, 2019-01-09bRagexeRE, 2019-01-16bRagexe, 2019-01-16bRagexeRE, 2019-01-16cRagexe, 2019-01-16cRagexeRE, 2019-01-23dRagexe, 2019-01-23dRagexeRE, 2019-02-13IRagexeRE, 2019-02-13bRagexe, 2019-02-13eRagexe, 2019-02-20aRagexeRE, 2019-02-27aRagexe, 2019-02-27bRagexeRE, 2019-02-28aRagexe, 2019-02-28aRagexeRE, 2019-03-06bRagexe, 2019-03-06bRagexeRE, 2019-03-06cRagexe, 2019-03-06cRagexeRE, 2019-03-13aRagexe, 2019-03-20aRagexe, 2019-03-20aRagexeRE, 2019-03-22aRagexe, 2019-03-22aRagexeRE, 2019-03-27bRagexe, 2019-03-27bRagexeRE, 2019-04-03aRagexe, 2019-04-03bRagexeRE, 2019-04-03cRagexeRE, 2019-04-17aRagexe, 2019-04-17cRagexeRE, 2019-04-18aRagexe, 2019-04-18aRagexeRE, 2019-05-08cRagexe, 2019-05-08dRagexeRE, 2019-05-08eRagexeRE, 2019-05-22bRagexe, 2019-05-22bRagexeRE, 2019-05-22cRagexe, 2019-05-22cRagexeRE, 2019-05-23aRagexe, 2019-05-29aRagexe, 2019-05-29bRagexeRE, 2019-05-29cRagexe, 2019-05-29cRagexeRE, 2019-05-30aRagexe, 2019-05-30aRagexeRE, 2019-06-05JRagexeRE, 2019-06-05KRagexe, 2019-06-05LRagexeRE, 2019-06-05fRagexe, 2019-06-05hRagexeRE, 2019-06-19bRagexe, 2019-06-19cRagexeRE, 2019-06-19eRagexe, 2019-06-19hRagexe, 2019-06-26bRagexeRE, 2019-07-03aRagexe, 2019-07-03bRagexeRE, 2019-07-17aRagexe, 2019-07-17cRagexeRE, 2019-07-17dRagexe, 2019-07-17dRagexeRE, 2019-07-24aRagexe, 2019-07-24bRagexeRE, 2019-07-31bRagexe, 2019-07-31bRagexeRE, 2019-08-02aRagexe, 2019-08-02aRagexeRE, 2019-08-07aRagexe, 2019-08-07dRagexeRE, 2019-08-21aRagexe, 2019-08-21cRagexeRE, 2019-08-21dRagexeRE, 2019-08-28aRagexe, 2019-08-28aRagexeRE, 2019-09-04aRagexe, 2019-09-04bRagexe, 2019-09-04bRagexeRE, 2019-09-18bRagexe, 2019-09-18cRagexeRE, 2019-09-25aRagexe, 2019-09-25aRagexeRE, 2019-09-25bRagexe, 2019-09-25bRagexeRE, 2019-10-02bRagexeRE, 2019-10-02cRagexe, 2019-10-02dRagexe, 2019-10-02dRagexeRE, 2019-10-02dRagexeRE_2, 2019-10-16fRagexe, 2019-10-16fRagexeRE, 2019-10-16gRagexe, 2019-10-16gRagexeRE, 2019-10-18aRagexe, 2019-10-23aRagexe, 2019-10-23aRagexeRE, 2019-10-30bRagexeRE, 2019-10-30cRagexe, 2019-11-06aRagexe, 2019-11-06bRagexeRE, 2019-11-07aRagexe, 2019-11-07aRagexeRE, 2019-11-13cRagexe, 2019-11-13eRagexe, 2019-11-13eRagexeRE, 2019-11-20aRagexe, 2019-11-20cRagexeRE, 2019-11-20dRagexe, 2019-11-27aRagexe, 2019-11-27aRagexeRE, 2019-11-27bRagexe, 2019-12-04aRagexe, 2019-12-04aRagexeRE, 2019-12-04bRagexe, 2019-12-04bRagexeRE, 2019-12-04cRagexeRE, 2019-12-11aRagexe, 2019-12-11fRagexeRE, 2019-12-18bRagexe, 2019-12-18bRagexeRE, 2019-12-24aRagexe, 2019-12-24aRagexeRE, 2019-12-24bRagexe, 2019-12-24bRagexeRE, 2020-01-08aRagexe, 2020-01-08bRagexeRE, 2020-01-22cRagexe, 2020-01-22cRagexeRE, 2020-01-29bRagexe, 2020-01-30aRagexe, 2020-02-05aRagexe, 2020-02-05aRagexeRE, 2020-02-06aRagexe
+// 2010-11-23aRagexeRE, 2010-11-24aRagexeRE, 2010-11-24bRagexeRE, 2010-11-25aRagexeRE, 2010-11-26aRagexeRE, 2010-11-30aRagexeRE, 2010-12-07aRagexeRE, 2010-12-14aRagexeRE, 2010-12-21aRagexeRE, 2010-12-23aRagexeRE, 2010-12-28aRagexeRE, 2011-01-04aRagexeRE, 2011-01-05aRagexeRE, 2011-01-11aRagexeRE, 2011-01-18aRagexeRE, 2011-01-25aRagexeRE, 2011-01-26aRagexeRE, 2011-01-26bRagexeRE, 2011-01-31aRagexeRE, 2011-01-31bRagexeRE, 2011-01-31cRagexeRE, 2011-02-08aRagexeRE, 2011-02-15aRagexeRE, 2011-02-22aRagexeRE, 2011-02-23aRagexeRE, 2011-02-23bRagexeRE, 2011-02-24aRagexeRE, 2011-02-25aRagexeRE, 2011-02-28aRagexeRE, 2011-03-08aRagexeRE, 2011-03-09aRagexeRE, 2011-03-09bRagexeRE, 2011-03-09cRagexeRE, 2011-03-09dRagexeRE, 2011-03-15aRagexeRE, 2011-03-22aRagexeRE, 2011-03-29aRagexeRE, 2011-03-30aRagexeRE, 2011-03-30cRagexeRE, 2011-04-05aRagexeRE, 2011-04-12aRagexeRE, 2011-04-19aRagexeRE, 2011-04-20aRagexeRE, 2011-04-26aRagexeRE, 2011-04-27aRagexeRE, 2011-05-03aRagexeRE, 2011-05-11aRagexeRE, 2011-05-17bRagexeRE, 2011-05-24aRagexeRE, 2011-05-26aRagexeRE, 2011-05-31aRagexeRE, 2011-06-07aRagexeRE, 2011-06-08aRagexeRE, 2011-06-08bRagexeRE, 2011-06-08cRagexeRE, 2011-06-09aRagexeRE, 2011-06-14bRagexeRE, 2011-06-22aRagexeRE, 2011-06-28aRagexeRE, 2011-07-06aRagexeRE, 2011-07-13aRagexeRE, 2011-07-13bRagexeRE, 2011-07-13cRagexeRE, 2011-07-19aRagexeRE, 2011-07-26aRagexeRE, 2011-08-03aRagexeRE, 2011-08-03bRagexeRE, 2011-08-10aRagexeRE, 2013-12-23aRagexeRE, 2014-05-08aRagexe, 2014-05-08aRagexeRE, 2014-06-11eRagexe, 2015-02-25hRagexe, 2018-03-15aRagexe, 2018-03-21aRagexe, 2018-03-21aRagexeRE, 2018-03-28bRagexe, 2018-03-28bRagexeRE, 2018-04-04bRagexe, 2018-04-04cRagexeRE, 2018-04-18aRagexe, 2018-04-18bRagexeRE, 2018-04-25cRagexe, 2018-04-25cRagexeRE, 2018-05-02bRagexe, 2018-05-02bRagexeRE, 2018-05-02dRagexeRE, 2018-05-09aRagexe, 2018-05-16cRagexe, 2018-05-16cRagexeRE, 2018-05-23aRagexe, 2018-05-23aRagexeRE, 2018-05-30aRagexe, 2018-05-30bRagexeRE, 2018-05-30cRagexeRE, 2018-06-05bRagexe, 2018-06-05bRagexeRE, 2018-06-12aRagexeRE, 2018-06-12bRagexeRE, 2018-06-20cRagexe, 2018-06-20dRagexeRE, 2018-06-20eRagexe, 2018-06-20eRagexeRE, 2018-06-21aRagexe, 2018-06-21aRagexeRE, 2018-07-04aRagexe, 2018-07-04aRagexeRE, 2018-07-11aRagexeRE, 2018-07-18bRagexe, 2018-07-18bRagexeRE, 2018-07-18bRagexeRE1, 2018-07-18cRagexe, 2018-07-18cRagexeRE, 2018-08-01cRagexe, 2018-08-01cRagexeRE, 2018-08-08bRagexe, 2018-08-08bRagexeRE, 2018-08-22cRagexe, 2018-08-22cRagexeRE, 2018-08-29aRagexe, 2018-08-29aRagexeRE, 2018-08-29bRagexeRE, 2018-08-31aRagexe, 2018-09-12dRagexe, 2018-09-12dRagexeRE, 2018-09-19aRagexe, 2018-09-19aRagexeRE, 2018-10-02aRagexe, 2018-10-02aRagexeRE, 2018-10-02bRagexe, 2018-10-02bRagexeRE, 2018-10-17_02aRagexe, 2018-10-17_02aRagexeRE, 2018-10-17_03aRagexe, 2018-10-17_03aRagexeRE, 2018-10-17bRagexe, 2018-10-17bRagexeRE, 2018-10-24bRagexe, 2018-10-31aRagexe, 2018-10-31bRagexe, 2018-10-31cRagexeRE, 2018-11-07aRagexe, 2018-11-07aRagexeRE, 2018-11-14cRagexe, 2018-11-14cRagexeRE, 2018-11-14dRagexe, 2018-11-14dRagexeRE, 2018-11-21bRagexe, 2018-11-21cRagexeRE, 2018-11-28aRagexe, 2018-11-28aRagexeRE, 2018-11-28bRagexe, 2018-11-28cRagexe, 2018-12-05aRagexe, 2018-12-05bRagexeRE, 2018-12-12aRagexe, 2018-12-12aRagexeRE, 2018-12-12bRagexe, 2018-12-12bRagexeRE, 2018-12-19bRagexe, 2018-12-19bRagexeRE, 2018-12-26aRagexe, 2018-12-26aRagexeRE, 2019-01-09aRagexe, 2019-01-09bRagexeRE, 2019-01-16bRagexe, 2019-01-16bRagexeRE, 2019-01-16cRagexe, 2019-01-16cRagexeRE, 2019-01-23dRagexe, 2019-01-23dRagexeRE, 2019-02-13IRagexeRE, 2019-02-13bRagexe, 2019-02-13eRagexe, 2019-02-20aRagexeRE, 2019-02-27aRagexe, 2019-02-27bRagexeRE, 2019-02-28aRagexe, 2019-02-28aRagexeRE, 2019-03-06bRagexe, 2019-03-06bRagexeRE, 2019-03-06cRagexe, 2019-03-06cRagexeRE, 2019-03-13aRagexe, 2019-03-20aRagexe, 2019-03-20aRagexeRE, 2019-03-22aRagexe, 2019-03-22aRagexeRE, 2019-03-27bRagexe, 2019-03-27bRagexeRE, 2019-04-03aRagexe, 2019-04-03bRagexeRE, 2019-04-03cRagexeRE, 2019-04-17aRagexe, 2019-04-17cRagexeRE, 2019-04-18aRagexe, 2019-04-18aRagexeRE, 2019-05-08cRagexe, 2019-05-08dRagexeRE, 2019-05-08eRagexeRE, 2019-05-22bRagexe, 2019-05-22bRagexeRE, 2019-05-22cRagexe, 2019-05-22cRagexeRE, 2019-05-23aRagexe, 2019-05-29aRagexe, 2019-05-29bRagexeRE, 2019-05-29cRagexe, 2019-05-29cRagexeRE, 2019-05-30aRagexe, 2019-05-30aRagexeRE, 2019-06-05JRagexeRE, 2019-06-05KRagexe, 2019-06-05LRagexeRE, 2019-06-05fRagexe, 2019-06-05hRagexeRE, 2019-06-19bRagexe, 2019-06-19cRagexeRE, 2019-06-19eRagexe, 2019-06-19hRagexe, 2019-06-26bRagexeRE, 2019-07-03aRagexe, 2019-07-03bRagexeRE, 2019-07-17aRagexe, 2019-07-17cRagexeRE, 2019-07-17dRagexe, 2019-07-17dRagexeRE, 2019-07-24aRagexe, 2019-07-24bRagexeRE, 2019-07-31bRagexe, 2019-07-31bRagexeRE, 2019-08-02aRagexe, 2019-08-02aRagexeRE, 2019-08-07aRagexe, 2019-08-07dRagexeRE, 2019-08-21aRagexe, 2019-08-21cRagexeRE, 2019-08-21dRagexeRE, 2019-08-28aRagexe, 2019-08-28aRagexeRE, 2019-09-04aRagexe, 2019-09-04bRagexe, 2019-09-04bRagexeRE, 2019-09-18bRagexe, 2019-09-18cRagexeRE, 2019-09-25aRagexe, 2019-09-25aRagexeRE, 2019-09-25bRagexe, 2019-09-25bRagexeRE, 2019-10-02bRagexeRE, 2019-10-02cRagexe, 2019-10-02dRagexe, 2019-10-02dRagexeRE, 2019-10-02dRagexeRE_2, 2019-10-16fRagexe, 2019-10-16fRagexeRE, 2019-10-16gRagexe, 2019-10-16gRagexeRE, 2019-10-18aRagexe, 2019-10-23aRagexe, 2019-10-23aRagexeRE, 2019-10-30bRagexeRE, 2019-10-30cRagexe, 2019-11-06aRagexe, 2019-11-06bRagexeRE, 2019-11-07aRagexe, 2019-11-07aRagexeRE, 2019-11-13cRagexe, 2019-11-13eRagexe, 2019-11-13eRagexeRE, 2019-11-20aRagexe, 2019-11-20cRagexeRE, 2019-11-20dRagexe, 2019-11-27aRagexe, 2019-11-27aRagexeRE, 2019-11-27bRagexe, 2019-12-04aRagexe, 2019-12-04aRagexeRE, 2019-12-04bRagexe, 2019-12-04bRagexeRE, 2019-12-04cRagexeRE, 2019-12-11aRagexe, 2019-12-11fRagexeRE, 2019-12-18bRagexe, 2019-12-18bRagexeRE, 2019-12-24aRagexe, 2019-12-24aRagexeRE, 2019-12-24bRagexe, 2019-12-24bRagexeRE, 2020-01-08aRagexe, 2020-01-08bRagexeRE, 2020-01-22cRagexe, 2020-01-22cRagexeRE, 2020-01-29bRagexe, 2020-01-30aRagexe, 2020-02-05aRagexe, 2020-02-05aRagexeRE, 2020-02-06aRagexe, 2020-02-12aRagexe, 2020-02-12aRagexeRE, 2020-02-19dRagexe, 2020-02-19eRagexeRE, 2020-03-04aRagexe, 2020-03-04aRagexeRE, 2020-03-18bRagexe, 2020-04-01bRagexe, 2020-04-14_6aRagexe, 2020-04-14eRagexe, 2020-05-06aRagexe, 2020-05-20bRagexe, 2020-06-03aRagexe, 2020-06-17aRagexe, 2020-07-01bRagexe, 2020-07-01cRagexe, 2020-07-09_sakaRagexeRE, 2020-07-15bRagexe
#if PACKETVER == 20101123 || \
PACKETVER == 20101124 || \
PACKETVER == 20101125 || \
@@ -186,7 +186,20 @@
PACKETVER == 20200129 || \
PACKETVER == 20200130 || \
PACKETVER == 20200205 || \
- PACKETVER >= 20200206
+ PACKETVER == 20200206 || \
+ PACKETVER == 20200212 || \
+ PACKETVER == 20200219 || \
+ PACKETVER == 20200304 || \
+ PACKETVER == 20200318 || \
+ PACKETVER == 20200401 || \
+ PACKETVER == 20200414 || \
+ PACKETVER == 20200506 || \
+ PACKETVER == 20200520 || \
+ PACKETVER == 20200603 || \
+ PACKETVER == 20200617 || \
+ PACKETVER == 20200701 || \
+ PACKETVER == 20200709 || \
+ PACKETVER >= 20200715
packetKeys(0x00000000,0x00000000,0x00000000);
#endif
diff --git a/src/map/packets_keys_zero.h b/src/map/packets_keys_zero.h
index 90d226c92..1aa370b56 100644
--- a/src/map/packets_keys_zero.h
+++ b/src/map/packets_keys_zero.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2020 Hercules Dev Team
- * Copyright (C) 2018-2020 Andrei Karas (4144)
+ * Copyright (C) 2013-2020 Hercules Dev Team
+ * Copyright (C) 2018-2020 Andrei Karas (4144)
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -30,7 +30,7 @@
/* This file is autogenerated, please do not commit manual changes */
-// 2017-10-18aRagexe_zero, 2017-10-19aRagexe_zero, 2017-10-23aRagexe_zero, 2017-10-23bRagexe_zero, 2017-10-23cRagexe_zero, 2017-10-24aRagexe_2_zero, 2017-10-24aRagexe_zero, 2017-10-25bRagexe_zero, 2017-10-27aRagexe_zero, 2017-10-27bRagexe_zero, 2017-10-30aRagexe_zero, 2017-10-31aRagexe_zero, 2017-11-09aRagexe_zero, 2017-11-13aRagexe_zero, 2017-11-13bRagexe_zero, 2018-03-15aRagexe_zero, 2018-03-21aRagexe_zero, 2018-03-21bRagexe_zero, 2018-03-28_1aRagexe_zero, 2018-03-28cRagexe_zero, 2018-04-11aRagexe_zero, 2018-04-25_3aRagexe_zero, 2018-05-09_3aRagexe_zero, 2018-05-23aRagexe_zero, 2018-06-05bRagexe_zero, 2018-06-05cRagexe_zero, 2018-06-27aRagexe_zero, 2018-07-03aRagexe_zero, 2018-07-11_2aRagexe_zero, 2018-07-25_2aRagexe_zero, 2018-08-01aRagexe_zero, 2018-08-08_2aRagexe_zero, 2018-08-22aRagexe_zero, 2018-08-29aRagexe_zero, 2018-09-05aRagexe_zero, 2018-09-12aRagexe_zero, 2018-09-19aRagexe_zero, 2018-09-28aRagexe_zero, 2018-10-10_2aRagexe_zero, 2018-10-24_2aRagexe_zero, 2018-11-14aRagexe_zero, 2018-11-20aRagexe_zero, 2018-11-28aRagexe_zero, 2018-12-12aRagexe_zero, 2018-12-19aRagexe_zero, 2018-12-26_2aRagexe_zero, 2019-01-16_2aRagexe_zero, 2019-01-17_1aRagexe_zero, 2019-01-30_2aRagexe_zero, 2019-02-13aRagexe_zero, 2019-02-20aRagexe_zero, 2019-02-27aRagexe_zero, 2019-03-13aRagexe_zero, 2019-03-27_2aRagexe_zero, 2019-03-27_3aRagexe_zero, 2019-04-03aRagexe_zero, 2019-04-10bRagexe_zero, 2019-04-24aRagexe_zero, 2019-05-02aRagexe_zero, 2019-05-08_2aRagexe_zero, 2019-05-08aRagexe_zero, 2019-05-15aRagexe_zero, 2019-05-29aRagexe_zero, 2019-05-30aRagexe_zero, 2019-06-05_2aRagexe_zero, 2019-06-26_2aRagexe_zero, 2019-06-26_3aRagexe_zero, 2019-07-09aRagexe_zero, 2019-07-10_3aRagexe_zero, 2019-07-17aRagexe_zero, 2019-07-24aRagexe_zero, 2019-08-14_3aRagexe_zero, 2019-08-28_2aRagexe_zero, 2019-08-28_3aRagexe_zero, 2019-09-11aRagexe_zero, 2019-09-18_2aRagexe_zero, 2019-09-18aRagexe_zero, 2019-09-25_3aRagexe_zero, 2019-09-25_5aRagexe_zero, 2019-10-08_2aRagexe_zero, 2019-10-23_2aRagexe_zero, 2019-11-06aRagexe_zero, 2019-11-13aRagexe_zero, 2019-11-27_2aRagexe_zero, 2019-11-27aRagexe_zero, 2019-12-04aRagexe_zero, 2019-12-11_2aRagexe_zero, 2019-12-24_4aRagexe_zero, 2019-12-24_5aRagexe_zero, 2020-01-15_2aRagexe_zero, 2020-01-15aRagexe_zero, 2020-01-29_2aRagexe_zero, 2020-01-29aRagexe_zero
+// 2017-10-18aRagexe_zero, 2017-10-19aRagexe_zero, 2017-10-23aRagexe_zero, 2017-10-23bRagexe_zero, 2017-10-23cRagexe_zero, 2017-10-24aRagexe_2_zero, 2017-10-24aRagexe_zero, 2017-10-25bRagexe_zero, 2017-10-27aRagexe_zero, 2017-10-27bRagexe_zero, 2017-10-30aRagexe_zero, 2017-10-31aRagexe_zero, 2017-11-09aRagexe_zero, 2017-11-13aRagexe_zero, 2017-11-13bRagexe_zero, 2018-03-15aRagexe_zero, 2018-03-21aRagexe_zero, 2018-03-21bRagexe_zero, 2018-03-28_1aRagexe_zero, 2018-03-28cRagexe_zero, 2018-04-11aRagexe_zero, 2018-04-25_3aRagexe_zero, 2018-05-09_3aRagexe_zero, 2018-05-23aRagexe_zero, 2018-06-05bRagexe_zero, 2018-06-05cRagexe_zero, 2018-06-27aRagexe_zero, 2018-07-03aRagexe_zero, 2018-07-11_2aRagexe_zero, 2018-07-25_2aRagexe_zero, 2018-08-01aRagexe_zero, 2018-08-08_2aRagexe_zero, 2018-08-22aRagexe_zero, 2018-08-29aRagexe_zero, 2018-09-05aRagexe_zero, 2018-09-12aRagexe_zero, 2018-09-19aRagexe_zero, 2018-09-28aRagexe_zero, 2018-10-10_2aRagexe_zero, 2018-10-24_2aRagexe_zero, 2018-11-14aRagexe_zero, 2018-11-20aRagexe_zero, 2018-11-28aRagexe_zero, 2018-12-12aRagexe_zero, 2018-12-19aRagexe_zero, 2018-12-26_2aRagexe_zero, 2019-01-16_2aRagexe_zero, 2019-01-17_1aRagexe_zero, 2019-01-30_2aRagexe_zero, 2019-02-13aRagexe_zero, 2019-02-20aRagexe_zero, 2019-02-27aRagexe_zero, 2019-03-13aRagexe_zero, 2019-03-27_2aRagexe_zero, 2019-03-27_3aRagexe_zero, 2019-04-03aRagexe_zero, 2019-04-10bRagexe_zero, 2019-04-24aRagexe_zero, 2019-05-02aRagexe_zero, 2019-05-08_2aRagexe_zero, 2019-05-08aRagexe_zero, 2019-05-15aRagexe_zero, 2019-05-29aRagexe_zero, 2019-05-30aRagexe_zero, 2019-06-05_2aRagexe_zero, 2019-06-26_2aRagexe_zero, 2019-06-26_3aRagexe_zero, 2019-07-09aRagexe_zero, 2019-07-10_3aRagexe_zero, 2019-07-17aRagexe_zero, 2019-07-24aRagexe_zero, 2019-08-14_3aRagexe_zero, 2019-08-28_2aRagexe_zero, 2019-08-28_3aRagexe_zero, 2019-09-11aRagexe_zero, 2019-09-18_2aRagexe_zero, 2019-09-18aRagexe_zero, 2019-09-25_3aRagexe_zero, 2019-09-25_5aRagexe_zero, 2019-10-08_2aRagexe_zero, 2019-10-23_2aRagexe_zero, 2019-11-06aRagexe_zero, 2019-11-13aRagexe_zero, 2019-11-27_2aRagexe_zero, 2019-11-27aRagexe_zero, 2019-12-04aRagexe_zero, 2019-12-11_2aRagexe_zero, 2019-12-24_4aRagexe_zero, 2019-12-24_5aRagexe_zero, 2020-01-15_2aRagexe_zero, 2020-01-15aRagexe_zero, 2020-01-29_2aRagexe_zero, 2020-01-29aRagexe_zero, 2020-02-12aRagexe_zero, 2020-02-26aRagexe_zero, 2020-02-26bRagexe_zero, 2020-03-04aRagexe_zero, 2020-03-18_2aRagexe_zero, 2020-04-01_2aRagexe_zero, 2020-04-14bRagexe_zero, 2020-05-06aRagexe_zero, 2020-05-20_5aRagexe_zero, 2020-06-03_2aRagexe_zero, 2020-06-17aRagexe_zero, 2020-07-01_2aRagexe_zero, 2020-07-01aRagexe_zero
#if PACKETVER == 20171018 || \
PACKETVER == 20171019 || \
PACKETVER == 20171023 || \
@@ -105,7 +105,18 @@
PACKETVER == 20191211 || \
PACKETVER == 20191224 || \
PACKETVER == 20200115 || \
- PACKETVER >= 20200129
+ PACKETVER == 20200129 || \
+ PACKETVER == 20200212 || \
+ PACKETVER == 20200226 || \
+ PACKETVER == 20200304 || \
+ PACKETVER == 20200318 || \
+ PACKETVER == 20200401 || \
+ PACKETVER == 20200414 || \
+ PACKETVER == 20200506 || \
+ PACKETVER == 20200520 || \
+ PACKETVER == 20200603 || \
+ PACKETVER == 20200617 || \
+ PACKETVER >= 20200701
packetKeys(0x00000000,0x00000000,0x00000000);
#endif
diff --git a/src/map/packets_shuffle_main.h b/src/map/packets_shuffle_main.h
index 2d7f1d6ec..fc28a12a9 100644
--- a/src/map/packets_shuffle_main.h
+++ b/src/map/packets_shuffle_main.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2020 Hercules Dev Team
- * Copyright (C) 2018-2020 Andrei Karas (4144)
+ * Copyright (C) 2013-2020 Hercules Dev Team
+ * Copyright (C) 2018-2020 Andrei Karas (4144)
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -40,3312 +40,3312 @@
// 2012-07-10aRagexe, 2012-07-12aRagexe
#if PACKETVER == 20120710 || \
PACKETVER == 20120712
- packet(0x0202,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x02c4,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0362,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0365,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0367,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0436,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x07e4,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0811,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x085b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0877,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0878,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x087f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x088d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0893,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0899,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08a3,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x08a6,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x08a8,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x08aa,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x092d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0936,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0948,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x094b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x094e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0953,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0956,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0958,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0960,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0202,clif->pSolveCharName,2);
+ packet(0x02c4,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0362,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0365,clif->pFriendsListAdd,2);
+ packet(0x0367,clif->pMoveToKafra,2,4);
+ packet(0x0436,clif->pActionRequest,2,6);
+ packet(0x07e4,clif->pTickSend,2);
+ packet(0x0811,clif->pReqClickBuyingStore,2);
+ packet(0x085b,clif->pUseSkillToId,2,4,6);
+ packet(0x0877,clif->pGetCharNameRequest,2);
+ packet(0x0878,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x087f,clif->pWalkToXY,2);
+ packet(0x088d,clif->pChangeDir,2,4);
+ packet(0x0893,clif->pStoragePassword,0);
+ packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0899,clif->pTakeItem,2);
+ packet(0x08a3,clif->pDropItem,2,4);
+ packet(0x08a6,clif->pItemListWindowSelected,2,4,8);
+ packet(0x08a8,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x08aa,clif->pMoveFromKafra,2,4);
+ packet(0x092d,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0936,clif->pDull/*,XXX*/);
+ packet(0x0948,clif->pReqCloseBuyingStore,0);
+ packet(0x094b,clif->pHomMenu,2,4);
+ packet(0x094e,clif->pPartyInvite2,2);
+ packet(0x0953,clif->pDull/*,XXX*/);
+ packet(0x0956,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0958,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0960,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
#endif
// 2012-07-16aRagexe
#if PACKETVER == 20120716
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x089f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x089f,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2012-07-24aRagexe
#if PACKETVER == 20120724
- packet(0x035f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0815,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0835,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0865,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0866,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0872,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0877,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x087c,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0887,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0888,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x088e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x08a1,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x08a9,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x08ab,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x091c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x091f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0928,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0929,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x092b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0935,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0938,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x093c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0945,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0957,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0959,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0963,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0965,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0966,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x035f,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pReqClickBuyingStore,2);
+ packet(0x0815,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0835,clif->pPartyInvite2,2);
+ packet(0x0865,clif->pReqCloseBuyingStore,0);
+ packet(0x0866,clif->pDull/*,XXX*/);
+ packet(0x0872,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0877,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x087c,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0887,clif->pChangeDir,2,4);
+ packet(0x0888,clif->pHomMenu,2,4);
+ packet(0x088e,clif->pUseSkillToId,2,4,6);
+ packet(0x08a1,clif->pGetCharNameRequest,2);
+ packet(0x08a9,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x08ab,clif->pTakeItem,2);
+ packet(0x091c,clif->pWalkToXY,2);
+ packet(0x091f,clif->pTickSend,2);
+ packet(0x0928,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0929,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x092b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0935,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0938,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x093c,clif->pMoveToKafra,2,4);
+ packet(0x0945,clif->pActionRequest,2,6);
+ packet(0x0957,clif->pStoragePassword,0);
+ packet(0x0959,clif->pFriendsListAdd,2);
+ packet(0x0963,clif->pDropItem,2,4);
+ packet(0x0965,clif->pSolveCharName,2);
+ packet(0x0966,clif->pMoveFromKafra,2,4);
#endif
// 2012-08-01aRagexe, 2012-08-01bRagexe
#if PACKETVER == 20120801
- packet(0x0360,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0438,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x085d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x086a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x086b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x086f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0873,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0875,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x087b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x088b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0890,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0895,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x089c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x089d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x089f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x08a2,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x08aa,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08ab,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0917,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x091d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x092a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x092e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0930,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0934,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x093c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0941,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0946,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x094e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0964,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0360,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0438,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x085d,clif->pSolveCharName,2);
+ packet(0x086a,clif->pItemListWindowSelected,2,4,8);
+ packet(0x086b,clif->pGetCharNameRequest,2);
+ packet(0x086f,clif->pReqCloseBuyingStore,0);
+ packet(0x0873,clif->pUseSkillToId,2,4,6);
+ packet(0x0875,clif->pTakeItem,2);
+ packet(0x087b,clif->pSearchStoreInfoNextPage,0);
+ packet(0x088b,clif->pHomMenu,2,4);
+ packet(0x0890,clif->pActionRequest,2,6);
+ packet(0x0895,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x089c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x089d,clif->pDropItem,2,4);
+ packet(0x089f,clif->pWalkToXY,2);
+ packet(0x08a2,clif->pFriendsListAdd,2);
+ packet(0x08aa,clif->pChangeDir,2,4);
+ packet(0x08ab,clif->pMoveFromKafra,2,4);
+ packet(0x0917,clif->pStoragePassword,0);
+ packet(0x091d,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x092a,clif->pDull/*,XXX*/);
+ packet(0x092e,clif->pReqClickBuyingStore,2);
+ packet(0x0930,clif->pTickSend,2);
+ packet(0x0934,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x093c,clif->pPartyInvite2,2);
+ packet(0x0941,clif->pMoveToKafra,2,4);
+ packet(0x0946,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x094e,clif->pDull/*,XXX*/);
+ packet(0x0964,clif->pSearchStoreInfoListItemClick,2,6,10);
#endif
// 2012-08-08aRagexe, 2012-08-08bRagexe, 2012-08-08cRagexe
#if PACKETVER == 20120808
- packet(0x0202,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x088f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x093d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0940,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0366,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pFriendsListAdd,2);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085f,clif->pStoragePassword,0);
+ packet(0x088f,clif->pChangeDir,2,4);
+ packet(0x093d,clif->pHomMenu,2,4);
+ packet(0x0940,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2012-08-14aRagexe, 2012-08-14bRagexe
#if PACKETVER == 20120814
- packet(0x0281,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0361,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0365,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0366,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0438,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x07ec,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0815,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0838,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x085e,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0861,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0862,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0865,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0868,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x086f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0875,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x087f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0882,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x088b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x088d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0895,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x08a8,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x091f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0920,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0929,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0932,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0934,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0941,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0967,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0969,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0281,clif->pHomMenu,2,4);
+ packet(0x0361,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0365,clif->pSolveCharName,2);
+ packet(0x0366,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0438,clif->pTickSend,2);
+ packet(0x07ec,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0815,clif->pDropItem,2,4);
+ packet(0x0838,clif->pReqCloseBuyingStore,0);
+ packet(0x085e,clif->pMoveToKafra,2,4);
+ packet(0x0861,clif->pReqClickBuyingStore,2);
+ packet(0x0862,clif->pTakeItem,2);
+ packet(0x0865,clif->pMoveFromKafra,2,4);
+ packet(0x0868,clif->pActionRequest,2,6);
+ packet(0x086f,clif->pStoragePassword,0);
+ packet(0x0875,clif->pWalkToXY,2);
+ packet(0x087f,clif->pPartyInvite2,2);
+ packet(0x0882,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x088b,clif->pFriendsListAdd,2);
+ packet(0x088d,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0895,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x08a8,clif->pDull/*,XXX*/);
+ packet(0x091f,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0920,clif->pGetCharNameRequest,2);
+ packet(0x0929,clif->pDull/*,XXX*/);
+ packet(0x0932,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0934,clif->pUseSkillToId,2,4,6);
+ packet(0x0941,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0967,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0969,clif->pChangeDir,2,4);
#endif
// 2012-08-22aRagexe, 2012-08-22bRagexe, 2012-08-22cRagexe
#if PACKETVER == 20120822
- packet(0x0365,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0437,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x085a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x085c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x085d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x086b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x086e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0872,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x087c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x087d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0885,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x088a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0899,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x089f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x08a5,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x08ab,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0917,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0924,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0927,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0935,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0937,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0940,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0943,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x094d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x094e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0953,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0955,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0958,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x095b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0365,clif->pFriendsListAdd,2);
+ packet(0x0437,clif->pTakeItem,2);
+ packet(0x085a,clif->pWalkToXY,2);
+ packet(0x085c,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x085d,clif->pUseSkillToId,2,4,6);
+ packet(0x086b,clif->pSolveCharName,2);
+ packet(0x086e,clif->pChangeDir,2,4);
+ packet(0x0872,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x087c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x087d,clif->pTickSend,2);
+ packet(0x0885,clif->pDull/*,XXX*/);
+ packet(0x088a,clif->pMoveToKafra,2,4);
+ packet(0x0899,clif->pPartyInvite2,2);
+ packet(0x089f,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x08a5,clif->pDull/*,XXX*/);
+ packet(0x08ab,clif->pActionRequest,2,6);
+ packet(0x0917,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0924,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0927,clif->pGetCharNameRequest,2);
+ packet(0x0935,clif->pHomMenu,2,4);
+ packet(0x0937,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0940,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0943,clif->pMoveFromKafra,2,4);
+ packet(0x094d,clif->pStoragePassword,0);
+ packet(0x094e,clif->pDropItem,2,4);
+ packet(0x0953,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0955,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0958,clif->pReqCloseBuyingStore,0);
+ packet(0x095b,clif->pReqClickBuyingStore,2);
#endif
// 2012-08-30aRagexe
#if PACKETVER == 20120830
- packet(0x022d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0364,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0802,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0838,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0861,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0872,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0887,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0888,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0890,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x091d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0926,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0934,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0945,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x094b,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0964,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x022d,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0364,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pPartyInvite2,2);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0802,clif->pStoragePassword,0);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pMoveToKafra,2,4);
+ packet(0x0838,clif->pHomMenu,2,4);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0861,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0872,clif->pFriendsListAdd,2);
+ packet(0x0887,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0888,clif->pDull/*,XXX*/);
+ packet(0x0890,clif->pDull/*,XXX*/);
+ packet(0x091d,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0926,clif->pMoveFromKafra,2,4);
+ packet(0x0934,clif->pChangeDir,2,4);
+ packet(0x0945,clif->pDropItem,2,4);
+ packet(0x094b,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0964,clif->pTakeItem,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2012-09-05aRagexe
#if PACKETVER == 20120905
- packet(0x022d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0365,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0817,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x085a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x085d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x086f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0876,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0877,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0878,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x087a,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x087b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x087e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0887,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0895,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0897,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08a0,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x08a6,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0917,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0918,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x091a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0927,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x093c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0944,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0945,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0950,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0954,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0959,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0960,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0967,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x022d,clif->pMoveToKafra,2,4);
+ packet(0x0365,clif->pDull/*,XXX*/);
+ packet(0x0817,clif->pStoragePassword,0);
+ packet(0x085a,clif->pSearchStoreInfoNextPage,0);
+ packet(0x085d,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x086f,clif->pSolveCharName,2);
+ packet(0x0876,clif->pHomMenu,2,4);
+ packet(0x0877,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0878,clif->pWalkToXY,2);
+ packet(0x087a,clif->pUseSkillToId,2,4,6);
+ packet(0x087b,clif->pTickSend,2);
+ packet(0x087e,clif->pMoveFromKafra,2,4);
+ packet(0x0887,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0895,clif->pChangeDir,2,4);
+ packet(0x0897,clif->pTakeItem,2);
+ packet(0x08a0,clif->pDull/*,XXX*/);
+ packet(0x08a6,clif->pFriendsListAdd,2);
+ packet(0x0917,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0918,clif->pItemListWindowSelected,2,4,8);
+ packet(0x091a,clif->pGetCharNameRequest,2);
+ packet(0x0927,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x093c,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0944,clif->pPartyInvite2,2);
+ packet(0x0945,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0950,clif->pDropItem,2,4);
+ packet(0x0954,clif->pReqCloseBuyingStore,0);
+ packet(0x0959,clif->pReqClickBuyingStore,2);
+ packet(0x0960,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0967,clif->pActionRequest,2,6);
#endif
// 2012-09-11aRagexe
#if PACKETVER == 20120911
- packet(0x0438,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0819,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0868,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x086f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0876,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0877,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0879,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x087a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x088a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x088f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x08a4,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x08a5,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x08a6,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x08a7,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x08ad,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0930,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0935,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x093e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0948,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0949,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x094b,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0958,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0959,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0962,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0963,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0966,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0968,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x096a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0438,clif->pTickSend,2);
+ packet(0x0819,clif->pMoveFromKafra,2,4);
+ packet(0x0868,clif->pTakeItem,2);
+ packet(0x086f,clif->pWalkToXY,2);
+ packet(0x0876,clif->pHomMenu,2,4);
+ packet(0x0877,clif->pPartyInvite2,2);
+ packet(0x0879,clif->pReqClickBuyingStore,2);
+ packet(0x087a,clif->pDull/*,XXX*/);
+ packet(0x088a,clif->pGetCharNameRequest,2);
+ packet(0x088f,clif->pFriendsListAdd,2);
+ packet(0x08a4,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x08a5,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x08a6,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x08a7,clif->pDropItem,2,4);
+ packet(0x08ad,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0930,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0935,clif->pReqCloseBuyingStore,0);
+ packet(0x093e,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0948,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0949,clif->pDull/*,XXX*/);
+ packet(0x094b,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0958,clif->pUseSkillToId,2,4,6);
+ packet(0x0959,clif->pActionRequest,2,6);
+ packet(0x0962,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0963,clif->pSolveCharName,2);
+ packet(0x0966,clif->pMoveToKafra,2,4);
+ packet(0x0968,clif->pChangeDir,2,4);
+ packet(0x096a,clif->pStoragePassword,0);
#endif
// 2012-09-19aRagexe
#if PACKETVER == 20120919
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0956,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0956,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2012-09-25aRagexe, 2012-09-26aRagexe
#if PACKETVER == 20120925 || \
PACKETVER == 20120926
- packet(0x07e4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0815,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0819,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0835,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0838,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x085d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0869,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0873,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x087a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x087e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0887,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x088a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x088d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x088f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x089d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x08a4,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x091c,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x091e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0923,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0927,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0932,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0942,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0948,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0950,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0956,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0957,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0958,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x095e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0963,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x07e4,clif->pDull/*,XXX*/);
+ packet(0x0815,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0819,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0835,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0838,clif->pGetCharNameRequest,2);
+ packet(0x085d,clif->pHomMenu,2,4);
+ packet(0x0869,clif->pMoveToKafra,2,4);
+ packet(0x0873,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x087a,clif->pDropItem,2,4);
+ packet(0x087e,clif->pFriendsListAdd,2);
+ packet(0x0887,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x088a,clif->pPartyInvite2,2);
+ packet(0x088d,clif->pUseSkillToId,2,4,6);
+ packet(0x088f,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x089d,clif->pItemListWindowSelected,2,4,8);
+ packet(0x08a4,clif->pActionRequest,2,6);
+ packet(0x091c,clif->pSearchStoreInfoNextPage,0);
+ packet(0x091e,clif->pReqCloseBuyingStore,0);
+ packet(0x0923,clif->pTakeItem,2);
+ packet(0x0927,clif->pReqClickBuyingStore,2);
+ packet(0x0932,clif->pTickSend,2);
+ packet(0x0942,clif->pStoragePassword,0);
+ packet(0x0948,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0950,clif->pWalkToXY,2);
+ packet(0x0956,clif->pDull/*,XXX*/);
+ packet(0x0957,clif->pChangeDir,2,4);
+ packet(0x0958,clif->pSolveCharName,2);
+ packet(0x095e,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0963,clif->pMoveFromKafra,2,4);
#endif
// 2012-10-10aRagexe, 2012-10-10bRagexe
#if PACKETVER == 20121010
- packet(0x0202,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0817,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x085a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0869,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x086c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0874,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x087d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0883,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0888,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x088f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0891,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0896,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0898,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08a1,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x08a6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x08a9,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0925,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0934,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x093c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0942,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0946,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0947,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x094c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0957,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0958,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0959,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x095c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0964,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0969,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0202,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0817,clif->pGetCharNameRequest,2);
+ packet(0x085a,clif->pReqCloseBuyingStore,0);
+ packet(0x0869,clif->pTakeItem,2);
+ packet(0x086c,clif->pDull/*,XXX*/);
+ packet(0x0874,clif->pMoveFromKafra,2,4);
+ packet(0x087d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0883,clif->pWalkToXY,2);
+ packet(0x0888,clif->pDull/*,XXX*/);
+ packet(0x088f,clif->pPartyInvite2,2);
+ packet(0x0891,clif->pUseSkillToId,2,4,6);
+ packet(0x0896,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0898,clif->pStoragePassword,0);
+ packet(0x08a1,clif->pActionRequest,2,6);
+ packet(0x08a6,clif->pSolveCharName,2);
+ packet(0x08a9,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0925,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0934,clif->pTickSend,2);
+ packet(0x093c,clif->pMoveToKafra,2,4);
+ packet(0x0942,clif->pReqClickBuyingStore,2);
+ packet(0x0946,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0947,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x094c,clif->pDropItem,2,4);
+ packet(0x0957,clif->pChangeDir,2,4);
+ packet(0x0958,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0959,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x095c,clif->pHomMenu,2,4);
+ packet(0x0964,clif->pFriendsListAdd,2);
+ packet(0x0969,clif->pPartyBookingRegisterReq,2,4,6);
#endif
// 2012-10-17aRagexe, 2012-10-17bRagexe
#if PACKETVER == 20121017
- packet(0x023b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0365,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0868,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x086b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0887,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0888,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0897,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x089a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x08a6,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0918,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0920,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0960,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0962,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0965,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x023b,clif->pPartyInvite2,2);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0365,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pMoveFromKafra,2,4);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0868,clif->pDull/*,XXX*/);
+ packet(0x086b,clif->pDropItem,2,4);
+ packet(0x0887,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0888,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0897,clif->pMoveToKafra,2,4);
+ packet(0x089a,clif->pFriendsListAdd,2);
+ packet(0x08a6,clif->pChangeDir,2,4);
+ packet(0x0918,clif->pStoragePassword,0);
+ packet(0x0920,clif->pDull/*,XXX*/);
+ packet(0x0960,clif->pHomMenu,2,4);
+ packet(0x0962,clif->pTakeItem,2);
+ packet(0x0965,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2012-10-24aRagexe
#if PACKETVER == 20121024
- packet(0x0436,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0437,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0438,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0817,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0838,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x085a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0868,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0872,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0875,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x087a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x087b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x087e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0882,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0888,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0889,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x088a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x089c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x08a9,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x08aa,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0931,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0938,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x093a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0942,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0947,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0954,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0955,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x095d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x095e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0965,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0436,clif->pWalkToXY,2);
+ packet(0x0437,clif->pUseSkillToId,2,4,6);
+ packet(0x0438,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0817,clif->pActionRequest,2,6);
+ packet(0x0838,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x085a,clif->pMoveFromKafra,2,4);
+ packet(0x0868,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0872,clif->pGetCharNameRequest,2);
+ packet(0x0875,clif->pDull/*,XXX*/);
+ packet(0x087a,clif->pMoveToKafra,2,4);
+ packet(0x087b,clif->pItemListWindowSelected,2,4,8);
+ packet(0x087e,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0882,clif->pStoragePassword,0);
+ packet(0x0888,clif->pHomMenu,2,4);
+ packet(0x0889,clif->pDropItem,2,4);
+ packet(0x088a,clif->pReqClickBuyingStore,2);
+ packet(0x089c,clif->pPartyInvite2,2);
+ packet(0x08a9,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x08aa,clif->pChangeDir,2,4);
+ packet(0x0931,clif->pTakeItem,2);
+ packet(0x0938,clif->pReqCloseBuyingStore,0);
+ packet(0x093a,clif->pDull/*,XXX*/);
+ packet(0x0942,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0947,clif->pTickSend,2);
+ packet(0x0954,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0955,clif->pSearchStoreInfoNextPage,0);
+ packet(0x095d,clif->pFriendsListAdd,2);
+ packet(0x095e,clif->pSolveCharName,2);
+ packet(0x0965,clif->pWantToConnection,2,6,10,14,18);
#endif
// 2012-10-31aRagexe
#if PACKETVER == 20121031
- packet(0x022d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0871,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0877,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0898,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x092b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x022d,clif->pTickSend,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pHomMenu,2,4);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085a,clif->pFriendsListAdd,2);
+ packet(0x0871,clif->pChangeDir,2,4);
+ packet(0x0877,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0898,clif->pStoragePassword,0);
+ packet(0x092b,clif->pDull/*,XXX*/);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2012-11-07aRagexe
#if PACKETVER == 20121107
- packet(0x0360,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0361,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0365,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x085c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0861,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0865,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x086c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x086d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0871,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0873,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0878,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x087f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x088f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0890,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0891,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0896,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x089a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x089b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x08a2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x08ad,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0922,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0934,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x093b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0945,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x094d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0960,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0963,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0966,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x096a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0360,clif->pTakeItem,2);
+ packet(0x0361,clif->pStoragePassword,0);
+ packet(0x0365,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x085c,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0861,clif->pTickSend,2);
+ packet(0x0865,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x086c,clif->pHomMenu,2,4);
+ packet(0x086d,clif->pSolveCharName,2);
+ packet(0x0871,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0873,clif->pMoveToKafra,2,4);
+ packet(0x0878,clif->pPartyInvite2,2);
+ packet(0x087f,clif->pChangeDir,2,4);
+ packet(0x088f,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0890,clif->pUseSkillToId,2,4,6);
+ packet(0x0891,clif->pMoveFromKafra,2,4);
+ packet(0x0896,clif->pReqClickBuyingStore,2);
+ packet(0x089a,clif->pActionRequest,2,6);
+ packet(0x089b,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x08a2,clif->pReqCloseBuyingStore,0);
+ packet(0x08ad,clif->pGetCharNameRequest,2);
+ packet(0x0922,clif->pDull/*,XXX*/);
+ packet(0x0934,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x093b,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0945,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x094d,clif->pWalkToXY,2);
+ packet(0x0960,clif->pDropItem,2,4);
+ packet(0x0963,clif->pDull/*,XXX*/);
+ packet(0x0966,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x096a,clif->pFriendsListAdd,2);
#endif
// 2012-11-14aRagexe
#if PACKETVER == 20121114
- packet(0x0364,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0365,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0437,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0815,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0838,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0862,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0876,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0879,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0881,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0898,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0899,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x08a9,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x08aa,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x08ab,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x091a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0930,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0935,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0938,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x093b,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x093c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0941,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0944,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0949,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x094a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x094b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x094f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x095c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0965,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x096a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pStoragePassword,0);
+ packet(0x0365,clif->pHomMenu,2,4);
+ packet(0x0437,clif->pDropItem,2,4);
+ packet(0x0815,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0838,clif->pPartyInvite2,2);
+ packet(0x0862,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0876,clif->pSolveCharName,2);
+ packet(0x0879,clif->pGetCharNameRequest,2);
+ packet(0x0881,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0898,clif->pActionRequest,2,6);
+ packet(0x0899,clif->pWalkToXY,2);
+ packet(0x08a9,clif->pTickSend,2);
+ packet(0x08aa,clif->pReqCloseBuyingStore,0);
+ packet(0x08ab,clif->pChangeDir,2,4);
+ packet(0x091a,clif->pMoveFromKafra,2,4);
+ packet(0x0930,clif->pDull/*,XXX*/);
+ packet(0x0935,clif->pUseSkillToId,2,4,6);
+ packet(0x0938,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x093b,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x093c,clif->pMoveToKafra,2,4);
+ packet(0x0941,clif->pFriendsListAdd,2);
+ packet(0x0944,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0949,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x094a,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x094b,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x094f,clif->pReqClickBuyingStore,2);
+ packet(0x095c,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0965,clif->pTakeItem,2);
+ packet(0x096a,clif->pDull/*,XXX*/);
#endif
// 2012-11-21aRagexe
#if PACKETVER == 20121121
- packet(0x0202,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0362,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0437,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0863,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x086a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x086c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x086d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x086f,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0872,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0875,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x087e,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0880,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0892,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0899,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x089a,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x08a7,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x08aa,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x091a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0921,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0927,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0929,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0938,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0946,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x094d,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0950,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0952,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0954,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0957,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0958,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0202,clif->pUseSkillToId,2,4,6);
+ packet(0x0362,clif->pReqCloseBuyingStore,0);
+ packet(0x0437,clif->pTakeItem,2);
+ packet(0x0863,clif->pItemListWindowSelected,2,4,8);
+ packet(0x086a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x086c,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x086d,clif->pSolveCharName,2);
+ packet(0x086f,clif->pMoveFromKafra,2,4);
+ packet(0x0872,clif->pGetCharNameRequest,2);
+ packet(0x0875,clif->pMoveToKafra,2,4);
+ packet(0x087e,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0880,clif->pChangeDir,2,4);
+ packet(0x0892,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0899,clif->pFriendsListAdd,2);
+ packet(0x089a,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x08a7,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x08aa,clif->pActionRequest,2,6);
+ packet(0x091a,clif->pTickSend,2);
+ packet(0x0921,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0927,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0929,clif->pDull/*,XXX*/);
+ packet(0x0938,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0946,clif->pWalkToXY,2);
+ packet(0x094d,clif->pDull/*,XXX*/);
+ packet(0x0950,clif->pHomMenu,2,4);
+ packet(0x0952,clif->pDropItem,2,4);
+ packet(0x0954,clif->pStoragePassword,0);
+ packet(0x0957,clif->pPartyInvite2,2);
+ packet(0x0958,clif->pReqClickBuyingStore,2);
#endif
// 2012-11-28aRagexe
#if PACKETVER == 20121128
- packet(0x0362,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0363,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x07ec,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0802,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0861,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0867,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x086c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x086e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0872,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0888,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x088b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0894,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0895,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08a8,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x08ad,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x091b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x091c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x091e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x091f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0921,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0922,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x092f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0931,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0945,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0947,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0950,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0953,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0954,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0960,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0362,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0363,clif->pFriendsListAdd,2);
+ packet(0x07ec,clif->pPartyInvite2,2);
+ packet(0x0802,clif->pStoragePassword,0);
+ packet(0x0861,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0867,clif->pTickSend,2);
+ packet(0x086c,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x086e,clif->pDull/*,XXX*/);
+ packet(0x0872,clif->pUseSkillToId,2,4,6);
+ packet(0x0888,clif->pChangeDir,2,4);
+ packet(0x088b,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0894,clif->pDull/*,XXX*/);
+ packet(0x0895,clif->pTakeItem,2);
+ packet(0x08a8,clif->pItemListWindowSelected,2,4,8);
+ packet(0x08ad,clif->pWalkToXY,2);
+ packet(0x091b,clif->pSolveCharName,2);
+ packet(0x091c,clif->pGetCharNameRequest,2);
+ packet(0x091e,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x091f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0921,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0922,clif->pMoveFromKafra,2,4);
+ packet(0x092f,clif->pReqClickBuyingStore,2);
+ packet(0x0931,clif->pActionRequest,2,6);
+ packet(0x0945,clif->pHomMenu,2,4);
+ packet(0x0947,clif->pReqCloseBuyingStore,0);
+ packet(0x0950,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0953,clif->pDropItem,2,4);
+ packet(0x0954,clif->pMoveToKafra,2,4);
+ packet(0x0960,clif->pReqTradeBuyingStore,2,4,8,12);
#endif
// 2012-12-05aRagexe, 2012-12-05bRagexe
#if PACKETVER == 20121205
- packet(0x035f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0360,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0815,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0863,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0864,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x086c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0870,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0873,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0875,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0878,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0888,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0889,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x088b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x089a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x089d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x08ad,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x091a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x091c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0921,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x093a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x093e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x093f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0946,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x094b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0954,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0959,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0966,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0968,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x035f,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0360,clif->pWalkToXY,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0815,clif->pTakeItem,2);
+ packet(0x0863,clif->pTickSend,2);
+ packet(0x0864,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x086c,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0870,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0873,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0875,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0878,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0888,clif->pStoragePassword,0);
+ packet(0x0889,clif->pDropItem,2,4);
+ packet(0x088b,clif->pDull/*,XXX*/);
+ packet(0x089a,clif->pFriendsListAdd,2);
+ packet(0x089d,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x08ad,clif->pSolveCharName,2);
+ packet(0x091a,clif->pReqCloseBuyingStore,0);
+ packet(0x091c,clif->pMoveFromKafra,2,4);
+ packet(0x0921,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x093a,clif->pReqClickBuyingStore,2);
+ packet(0x093e,clif->pDull/*,XXX*/);
+ packet(0x093f,clif->pUseSkillToId,2,4,6);
+ packet(0x0946,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x094b,clif->pGetCharNameRequest,2);
+ packet(0x0954,clif->pActionRequest,2,6);
+ packet(0x0959,clif->pPartyInvite2,2);
+ packet(0x0966,clif->pMoveToKafra,2,4);
+ packet(0x0968,clif->pChangeDir,2,4);
#endif
// 2012-12-12aRagexe, 2012-12-12bRagexe
#if PACKETVER == 20121212
- packet(0x0362,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0368,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0369,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0436,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0438,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0817,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x085c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0877,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x087d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x087f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0893,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0895,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x08a3,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x08a7,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x08a9,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08aa,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x08ac,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0917,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x091a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0920,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0932,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0947,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0951,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0953,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0957,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x095b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0965,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0966,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0362,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0368,clif->pFriendsListAdd,2);
+ packet(0x0369,clif->pPartyInvite2,2);
+ packet(0x0436,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0438,clif->pReqCloseBuyingStore,0);
+ packet(0x0817,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x085c,clif->pActionRequest,2,6);
+ packet(0x0877,clif->pTickSend,2);
+ packet(0x087d,clif->pUseSkillToId,2,4,6);
+ packet(0x087f,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0893,clif->pSolveCharName,2);
+ packet(0x0895,clif->pReqClickBuyingStore,2);
+ packet(0x08a3,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x08a7,clif->pWalkToXY,2);
+ packet(0x08a9,clif->pStoragePassword,0);
+ packet(0x08aa,clif->pDull/*,XXX*/);
+ packet(0x08ac,clif->pDropItem,2,4);
+ packet(0x0917,clif->pMoveFromKafra,2,4);
+ packet(0x091a,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0920,clif->pChangeDir,2,4);
+ packet(0x0932,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0947,clif->pHomMenu,2,4);
+ packet(0x0951,clif->pDull/*,XXX*/);
+ packet(0x0953,clif->pTakeItem,2);
+ packet(0x0957,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x095b,clif->pMoveToKafra,2,4);
+ packet(0x0965,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0966,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2012-12-18aRagexe, 2012-12-18bRagexe
#if PACKETVER == 20121218
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0363,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0867,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0872,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x087a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x087b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0886,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0889,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0890,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x091a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x091c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0935,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0946,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0957,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pUseSkillToId,2,4,6);
+ packet(0x0363,clif->pTakeItem,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pDropItem,2,4);
+ packet(0x0867,clif->pHomMenu,2,4);
+ packet(0x0872,clif->pDull/*,XXX*/);
+ packet(0x087a,clif->pChangeDir,2,4);
+ packet(0x087b,clif->pPartyInvite2,2);
+ packet(0x0886,clif->pMoveToKafra,2,4);
+ packet(0x0889,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0890,clif->pDull/*,XXX*/);
+ packet(0x091a,clif->pMoveFromKafra,2,4);
+ packet(0x091c,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0935,clif->pFriendsListAdd,2);
+ packet(0x0946,clif->pStoragePassword,0);
+ packet(0x0957,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2012-12-27aRagexe
#if PACKETVER == 20121227
- packet(0x0202,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x02c4,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0361,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0368,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0437,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0860,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0870,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0872,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x087a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0886,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0888,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x088e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0890,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0894,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0896,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x08a6,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08aa,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0917,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x091f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0920,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0932,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0933,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0940,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0943,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0947,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0953,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0958,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x095d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0962,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0202,clif->pHomMenu,2,4);
+ packet(0x02c4,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0361,clif->pStoragePassword,0);
+ packet(0x0368,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0437,clif->pDropItem,2,4);
+ packet(0x0860,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0870,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0872,clif->pReqClickBuyingStore,2);
+ packet(0x087a,clif->pActionRequest,2,6);
+ packet(0x0886,clif->pMoveFromKafra,2,4);
+ packet(0x0888,clif->pTickSend,2);
+ packet(0x088e,clif->pChangeDir,2,4);
+ packet(0x0890,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0894,clif->pFriendsListAdd,2);
+ packet(0x0896,clif->pSolveCharName,2);
+ packet(0x08a6,clif->pTakeItem,2);
+ packet(0x08aa,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0917,clif->pReqCloseBuyingStore,0);
+ packet(0x091f,clif->pDull/*,XXX*/);
+ packet(0x0920,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0932,clif->pWalkToXY,2);
+ packet(0x0933,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0940,clif->pUseSkillToId,2,4,6);
+ packet(0x0943,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0947,clif->pGetCharNameRequest,2);
+ packet(0x0953,clif->pDull/*,XXX*/);
+ packet(0x0958,clif->pMoveToKafra,2,4);
+ packet(0x095d,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0962,clif->pPartyInvite2,2);
#endif
// 2013-01-03aRagexe, 2013-01-07aRagexe
#if PACKETVER == 20130103 || \
PACKETVER == 20130107
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0940,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pDull/*,XXX*/);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pStoragePassword,0);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0940,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-01-09aRagexe
#if PACKETVER == 20130109
- packet(0x0281,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0365,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0368,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0838,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0866,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0886,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0888,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x088a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x088e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0891,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0892,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x08a2,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x08aa,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x08ac,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0918,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x091b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0922,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0927,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0928,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0930,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0931,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0938,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x093e,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x094f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0950,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0951,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0955,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x095e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0281,clif->pGetCharNameRequest,2);
+ packet(0x0365,clif->pDull/*,XXX*/);
+ packet(0x0368,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0437,clif->pActionRequest,2,6);
+ packet(0x0838,clif->pMoveFromKafra,2,4);
+ packet(0x0866,clif->pWalkToXY,2);
+ packet(0x0886,clif->pMoveToKafra,2,4);
+ packet(0x0888,clif->pChangeDir,2,4);
+ packet(0x088a,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x088e,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0891,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0892,clif->pUseSkillToId,2,4,6);
+ packet(0x08a2,clif->pSolveCharName,2);
+ packet(0x08aa,clif->pDull/*,XXX*/);
+ packet(0x08ac,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0918,clif->pFriendsListAdd,2);
+ packet(0x091b,clif->pDropItem,2,4);
+ packet(0x0922,clif->pReqClickBuyingStore,2);
+ packet(0x0927,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0928,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0930,clif->pHomMenu,2,4);
+ packet(0x0931,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0938,clif->pPartyInvite2,2);
+ packet(0x093e,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x094f,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0950,clif->pStoragePassword,0);
+ packet(0x0951,clif->pTickSend,2);
+ packet(0x0955,clif->pReqCloseBuyingStore,0);
+ packet(0x095e,clif->pTakeItem,2);
#endif
// 2013-01-15bRagexe, 2013-01-16aRagexe, 2013-01-16bRagexe
#if PACKETVER == 20130115 || \
PACKETVER == 20130116
- packet(0x0361,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x07ec,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0817,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x085e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0861,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0863,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x086b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0870,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0871,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0877,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0879,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x087c,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0888,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x088b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0894,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0895,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x08a0,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x08a4,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x08ac,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0918,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0928,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x092d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x092e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0939,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0946,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x094b,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x094c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x094e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x095a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0361,clif->pDull/*,XXX*/);
+ packet(0x07ec,clif->pDull/*,XXX*/);
+ packet(0x0817,clif->pWalkToXY,2);
+ packet(0x085e,clif->pReqCloseBuyingStore,0);
+ packet(0x0861,clif->pMoveFromKafra,2,4);
+ packet(0x0863,clif->pActionRequest,2,6);
+ packet(0x086b,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0870,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0871,clif->pFriendsListAdd,2);
+ packet(0x0877,clif->pReqClickBuyingStore,2);
+ packet(0x0879,clif->pChangeDir,2,4);
+ packet(0x087c,clif->pSolveCharName,2);
+ packet(0x0888,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x088b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0894,clif->pHomMenu,2,4);
+ packet(0x0895,clif->pTickSend,2);
+ packet(0x08a0,clif->pPartyInvite2,2);
+ packet(0x08a4,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x08ac,clif->pMoveToKafra,2,4);
+ packet(0x0918,clif->pUseSkillToId,2,4,6);
+ packet(0x0928,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x092d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x092e,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0939,clif->pGetCharNameRequest,2);
+ packet(0x0946,clif->pItemListWindowSelected,2,4,8);
+ packet(0x094b,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x094c,clif->pTakeItem,2);
+ packet(0x094e,clif->pDropItem,2,4);
+ packet(0x095a,clif->pStoragePassword,0);
#endif
// 2013-01-21aRagexe
#if PACKETVER == 20130121
- packet(0x023b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x035f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07ec,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0802,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0815,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0817,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x085d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x086c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0874,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0884,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0893,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x091f,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0940,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x094f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0956,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x095b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0963,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0969,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x023b,clif->pReqCloseBuyingStore,0);
+ packet(0x035f,clif->pDull/*,XXX*/);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07ec,clif->pTickSend,2);
+ packet(0x0802,clif->pActionRequest,2,6);
+ packet(0x0815,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0817,clif->pStoragePassword,0);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085a,clif->pDull/*,XXX*/);
+ packet(0x085d,clif->pHomMenu,2,4);
+ packet(0x086c,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0874,clif->pMoveToKafra,2,4);
+ packet(0x0884,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0893,clif->pFriendsListAdd,2);
+ packet(0x091f,clif->pTakeItem,2);
+ packet(0x0940,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x094f,clif->pDropItem,2,4);
+ packet(0x0956,clif->pChangeDir,2,4);
+ packet(0x095b,clif->pPartyInvite2,2);
+ packet(0x0963,clif->pMoveFromKafra,2,4);
+ packet(0x0969,clif->pItemListWindowSelected,2,4,8);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-01-30aRagexe
#if PACKETVER == 20130130
- packet(0x035f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0362,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0367,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0368,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0437,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x085f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0862,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x086b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x087d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x087f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0885,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0886,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0887,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0889,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x089a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x089f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x08a0,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x08a4,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x08a9,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x091a,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0920,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0924,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x093a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x093d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0956,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0957,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x095b,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x095c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x095d,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x035f,clif->pMoveToKafra,2,4);
+ packet(0x0362,clif->pHomMenu,2,4);
+ packet(0x0367,clif->pGetCharNameRequest,2);
+ packet(0x0368,clif->pChangeDir,2,4);
+ packet(0x0437,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x085f,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0862,clif->pReqCloseBuyingStore,0);
+ packet(0x086b,clif->pDull/*,XXX*/);
+ packet(0x087d,clif->pWalkToXY,2);
+ packet(0x087f,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0885,clif->pActionRequest,2,6);
+ packet(0x0886,clif->pTakeItem,2);
+ packet(0x0887,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0889,clif->pTickSend,2);
+ packet(0x089a,clif->pPartyInvite2,2);
+ packet(0x089f,clif->pDropItem,2,4);
+ packet(0x08a0,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x08a4,clif->pUseSkillToId,2,4,6);
+ packet(0x08a9,clif->pDull/*,XXX*/);
+ packet(0x091a,clif->pSolveCharName,2);
+ packet(0x0920,clif->pFriendsListAdd,2);
+ packet(0x0924,clif->pReqClickBuyingStore,2);
+ packet(0x093a,clif->pStoragePassword,0);
+ packet(0x093d,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0956,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0957,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x095b,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x095c,clif->pMoveFromKafra,2,4);
+ packet(0x095d,clif->pSearchStoreInfoNextPage,0);
#endif
// 2013-02-06aRagexe
#if PACKETVER == 20130206
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0811,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0876,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0883,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0885,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0899,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x08a0,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08ac,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0920,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0925,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x093a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x093c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0950,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pStoragePassword,0);
+ packet(0x0811,clif->pTakeItem,2);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085d,clif->pMoveFromKafra,2,4);
+ packet(0x0876,clif->pDull/*,XXX*/);
+ packet(0x0883,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0885,clif->pMoveToKafra,2,4);
+ packet(0x0899,clif->pItemListWindowSelected,2,4,8);
+ packet(0x08a0,clif->pChangeDir,2,4);
+ packet(0x08ac,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0920,clif->pPartyInvite2,2);
+ packet(0x0925,clif->pDropItem,2,4);
+ packet(0x093a,clif->pHomMenu,2,4);
+ packet(0x093c,clif->pFriendsListAdd,2);
+ packet(0x0950,clif->pDull/*,XXX*/);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-02-15aRagexe, 2013-02-15bRagexe
#if PACKETVER == 20130215
- packet(0x023b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0366,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0802,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0869,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x086f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0886,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x089e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x089f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x08ad,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0923,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0941,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0956,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x095d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0962,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x023b,clif->pReqClickBuyingStore,2);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pStoragePassword,0);
+ packet(0x0366,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0802,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0869,clif->pMoveToKafra,2,4);
+ packet(0x086f,clif->pDull/*,XXX*/);
+ packet(0x0886,clif->pDropItem,2,4);
+ packet(0x089e,clif->pItemListWindowSelected,2,4,8);
+ packet(0x089f,clif->pDull/*,XXX*/);
+ packet(0x08ad,clif->pTakeItem,2);
+ packet(0x0923,clif->pHomMenu,2,4);
+ packet(0x0941,clif->pFriendsListAdd,2);
+ packet(0x0956,clif->pPartyInvite2,2);
+ packet(0x095d,clif->pChangeDir,2,4);
+ packet(0x0962,clif->pMoveFromKafra,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-02-20aRagexe
#if PACKETVER == 20130220
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x094b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x094b,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-02-27aRagexe
#if PACKETVER == 20130227
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x035f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0360,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0811,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0815,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0817,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x085a,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0863,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0867,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0869,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x086e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x087b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0893,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0898,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08a0,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x08a1,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x091b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x091f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0924,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x092b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x092f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0936,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0946,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0951,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x095b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x095e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x095f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0967,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x035f,clif->pHomMenu,2,4);
+ packet(0x0360,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0811,clif->pTickSend,2);
+ packet(0x0815,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0817,clif->pReqClickBuyingStore,2);
+ packet(0x085a,clif->pUseSkillToId,2,4,6);
+ packet(0x0863,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0867,clif->pTakeItem,2);
+ packet(0x0869,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x086e,clif->pDull/*,XXX*/);
+ packet(0x087b,clif->pPartyInvite2,2);
+ packet(0x0893,clif->pMoveFromKafra,2,4);
+ packet(0x0898,clif->pChangeDir,2,4);
+ packet(0x08a0,clif->pReqCloseBuyingStore,0);
+ packet(0x08a1,clif->pDull/*,XXX*/);
+ packet(0x091b,clif->pGetCharNameRequest,2);
+ packet(0x091f,clif->pDropItem,2,4);
+ packet(0x0924,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x092b,clif->pItemListWindowSelected,2,4,8);
+ packet(0x092f,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0936,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0946,clif->pMoveToKafra,2,4);
+ packet(0x0951,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x095b,clif->pSolveCharName,2);
+ packet(0x095e,clif->pStoragePassword,0);
+ packet(0x095f,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0967,clif->pActionRequest,2,6);
#endif
// 2013-03-06aRagexe
#if PACKETVER == 20130306
- packet(0x022d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0367,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0368,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0802,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0817,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x085b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x085c,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0860,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x086d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0881,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0890,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0898,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x089f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x08a4,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x08ac,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0917,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x091e,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0926,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0934,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0936,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0943,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0944,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0945,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0946,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x094a,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x094e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0951,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0960,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0962,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x022d,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0367,clif->pSolveCharName,2);
+ packet(0x0368,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0802,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0817,clif->pHomMenu,2,4);
+ packet(0x085b,clif->pWalkToXY,2);
+ packet(0x085c,clif->pReqClickBuyingStore,2);
+ packet(0x0860,clif->pChangeDir,2,4);
+ packet(0x086d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0881,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0890,clif->pDull/*,XXX*/);
+ packet(0x0898,clif->pActionRequest,2,6);
+ packet(0x089f,clif->pTickSend,2);
+ packet(0x08a4,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x08ac,clif->pDull/*,XXX*/);
+ packet(0x0917,clif->pMoveFromKafra,2,4);
+ packet(0x091e,clif->pMoveToKafra,2,4);
+ packet(0x0926,clif->pStoragePassword,0);
+ packet(0x0934,clif->pFriendsListAdd,2);
+ packet(0x0936,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0943,clif->pUseSkillToId,2,4,6);
+ packet(0x0944,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0945,clif->pReqCloseBuyingStore,0);
+ packet(0x0946,clif->pPartyInvite2,2);
+ packet(0x094a,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x094e,clif->pGetCharNameRequest,2);
+ packet(0x0951,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0960,clif->pDropItem,2,4);
+ packet(0x0962,clif->pTakeItem,2);
#endif
// 2013-03-13aRagexe
#if PACKETVER == 20130313
- packet(0x0202,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0887,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0920,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x092d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0947,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pPartyInvite2,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pFriendsListAdd,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0887,clif->pChangeDir,2,4);
+ packet(0x0920,clif->pStoragePassword,0);
+ packet(0x092d,clif->pHomMenu,2,4);
+ packet(0x0947,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-03-20dRagexe, 2013-03-20eRagexe
#if PACKETVER == 20130320
- packet(0x035f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0363,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0365,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0438,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x085a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x085d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0868,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x086d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x086f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0874,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0881,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0886,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0888,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x088e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0890,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0897,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0898,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x089b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x08ac,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0922,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x092e,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0933,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0938,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x093f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0947,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x094c,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x094e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0959,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x095a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x035f,clif->pReqClickBuyingStore,2);
+ packet(0x0363,clif->pTickSend,2);
+ packet(0x0365,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0438,clif->pDropItem,2,4);
+ packet(0x085a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x085d,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0868,clif->pItemListWindowSelected,2,4,8);
+ packet(0x086d,clif->pPartyInvite2,2);
+ packet(0x086f,clif->pFriendsListAdd,2);
+ packet(0x0874,clif->pMoveFromKafra,2,4);
+ packet(0x0881,clif->pWalkToXY,2);
+ packet(0x0886,clif->pReqCloseBuyingStore,0);
+ packet(0x0888,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x088e,clif->pActionRequest,2,6);
+ packet(0x0890,clif->pDull/*,XXX*/);
+ packet(0x0897,clif->pChangeDir,2,4);
+ packet(0x0898,clif->pGetCharNameRequest,2);
+ packet(0x089b,clif->pUseSkillToId,2,4,6);
+ packet(0x08ac,clif->pMoveToKafra,2,4);
+ packet(0x0922,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x092e,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0933,clif->pTakeItem,2);
+ packet(0x0938,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x093f,clif->pHomMenu,2,4);
+ packet(0x0947,clif->pStoragePassword,0);
+ packet(0x094c,clif->pSolveCharName,2);
+ packet(0x094e,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0959,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x095a,clif->pDull/*,XXX*/);
#endif
// 2013-03-27bRagexe
#if PACKETVER == 20130327
- packet(0x02c4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x07ec,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0835,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x086d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0873,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0878,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x087a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0885,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x088f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0891,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0893,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0899,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08a1,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x08a2,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x091f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x092b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x092d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x092e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x092f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0933,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0938,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0939,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x094a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x094b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x094f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0955,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0960,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0961,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0967,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x02c4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x07ec,clif->pReqClickBuyingStore,2);
+ packet(0x0835,clif->pHomMenu,2,4);
+ packet(0x086d,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0873,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0878,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x087a,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0885,clif->pDropItem,2,4);
+ packet(0x088f,clif->pUseSkillToId,2,4,6);
+ packet(0x0891,clif->pMoveToKafra,2,4);
+ packet(0x0893,clif->pReqCloseBuyingStore,0);
+ packet(0x0899,clif->pTakeItem,2);
+ packet(0x08a1,clif->pGetCharNameRequest,2);
+ packet(0x08a2,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x091f,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x092b,clif->pWalkToXY,2);
+ packet(0x092d,clif->pPartyInvite2,2);
+ packet(0x092e,clif->pDull/*,XXX*/);
+ packet(0x092f,clif->pDull/*,XXX*/);
+ packet(0x0933,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0938,clif->pMoveFromKafra,2,4);
+ packet(0x0939,clif->pTickSend,2);
+ packet(0x094a,clif->pChangeDir,2,4);
+ packet(0x094b,clif->pStoragePassword,0);
+ packet(0x094f,clif->pFriendsListAdd,2);
+ packet(0x0955,clif->pActionRequest,2,6);
+ packet(0x0960,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0961,clif->pSolveCharName,2);
+ packet(0x0967,clif->pItemListWindowSelected,2,4,8);
#endif
// 2013-04-03aRagexe
#if PACKETVER == 20130403
- packet(0x023b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0884,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x08a5,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0926,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0942,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0950,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x023b,clif->pReqClickBuyingStore,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pStoragePassword,0);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0884,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x08a5,clif->pDull/*,XXX*/);
+ packet(0x0926,clif->pHomMenu,2,4);
+ packet(0x0942,clif->pChangeDir,2,4);
+ packet(0x0950,clif->pFriendsListAdd,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-04-10aRagexe
#if PACKETVER == 20130410
- packet(0x0367,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0437,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0860,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0865,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x086c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0879,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x087c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x087d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0881,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x088c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x088d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0890,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0891,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x089c,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x089e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x08a0,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x08a4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x08a7,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0917,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x091d,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0933,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0939,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x093d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0944,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0945,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0955,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0960,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0967,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x096a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0367,clif->pReqClickBuyingStore,2);
+ packet(0x0437,clif->pTakeItem,2);
+ packet(0x0860,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0865,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x086c,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0879,clif->pMoveToKafra,2,4);
+ packet(0x087c,clif->pWalkToXY,2);
+ packet(0x087d,clif->pGetCharNameRequest,2);
+ packet(0x0881,clif->pReqCloseBuyingStore,0);
+ packet(0x088c,clif->pStoragePassword,0);
+ packet(0x088d,clif->pHomMenu,2,4);
+ packet(0x0890,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0891,clif->pDull/*,XXX*/);
+ packet(0x089c,clif->pSolveCharName,2);
+ packet(0x089e,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x08a0,clif->pTickSend,2);
+ packet(0x08a4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x08a7,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0917,clif->pPartyInvite2,2);
+ packet(0x091d,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0933,clif->pUseSkillToId,2,4,6);
+ packet(0x0939,clif->pActionRequest,2,6);
+ packet(0x093d,clif->pMoveFromKafra,2,4);
+ packet(0x0944,clif->pDull/*,XXX*/);
+ packet(0x0945,clif->pChangeDir,2,4);
+ packet(0x0955,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0960,clif->pFriendsListAdd,2);
+ packet(0x0967,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x096a,clif->pDropItem,2,4);
#endif
// 2013-04-17aRagexe
#if PACKETVER == 20130417
- packet(0x0202,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x086b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0875,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0929,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0962,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0969,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x096a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0202,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pFriendsListAdd,2);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x086b,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0875,clif->pStoragePassword,0);
+ packet(0x0929,clif->pChangeDir,2,4);
+ packet(0x0962,clif->pHomMenu,2,4);
+ packet(0x0969,clif->pGetCharNameRequest,2);
+ packet(0x096a,clif->pDull/*,XXX*/);
#endif
// 2013-04-24aRagexe
#if PACKETVER == 20130424
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0969,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0969,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-05-02aRagexe, 2013-05-02bRagexe
#if PACKETVER == 20130502
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x07ec,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0867,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0870,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0874,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0875,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0877,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x087c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0888,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0889,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x08a1,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x08a3,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0961,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0967,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pStoragePassword,0);
+ packet(0x07ec,clif->pChangeDir,2,4);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085a,clif->pDull/*,XXX*/);
+ packet(0x0867,clif->pHomMenu,2,4);
+ packet(0x0870,clif->pPartyInvite2,2);
+ packet(0x0874,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0875,clif->pFriendsListAdd,2);
+ packet(0x0877,clif->pMoveToKafra,2,4);
+ packet(0x087c,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0888,clif->pGetCharNameRequest,2);
+ packet(0x0889,clif->pDull/*,XXX*/);
+ packet(0x08a1,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x08a3,clif->pDropItem,2,4);
+ packet(0x0961,clif->pMoveFromKafra,2,4);
+ packet(0x0967,clif->pTakeItem,2);
#endif
// 2013-05-08bRagexe, 2013-05-08cRagexe, 2013-05-08dRagexe, 2013-05-08eRagexe, 2013-05-08fRagexe
#if PACKETVER == 20130508
- packet(0x022d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0868,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0878,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x088b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0893,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0895,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0897,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x08ab,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x092d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0944,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x094d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0957,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x095c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x022d,clif->pMoveToKafra,2,4);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pFriendsListAdd,2);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0868,clif->pStoragePassword,0);
+ packet(0x0878,clif->pItemListWindowSelected,2,4,8);
+ packet(0x088b,clif->pTakeItem,2);
+ packet(0x0893,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0895,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0897,clif->pDull/*,XXX*/);
+ packet(0x08ab,clif->pPartyInvite2,2);
+ packet(0x092d,clif->pDropItem,2,4);
+ packet(0x0944,clif->pDull/*,XXX*/);
+ packet(0x094d,clif->pHomMenu,2,4);
+ packet(0x0957,clif->pMoveFromKafra,2,4);
+ packet(0x095c,clif->pChangeDir,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-05-15aRagexe
#if PACKETVER == 20130515
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0862,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0887,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08a1,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08aa,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x08ac,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x092d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0931,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x093e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0943,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0944,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0947,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0962,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0963,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pChangeDir,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0862,clif->pDull/*,XXX*/);
+ packet(0x0887,clif->pMoveToKafra,2,4);
+ packet(0x08a1,clif->pTakeItem,2);
+ packet(0x08aa,clif->pDull/*,XXX*/);
+ packet(0x08ac,clif->pMoveFromKafra,2,4);
+ packet(0x092d,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0931,clif->pHomMenu,2,4);
+ packet(0x093e,clif->pStoragePassword,0);
+ packet(0x0943,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0944,clif->pDropItem,2,4);
+ packet(0x0947,clif->pPartyInvite2,2);
+ packet(0x0962,clif->pFriendsListAdd,2);
+ packet(0x0963,clif->pItemListWindowSelected,2,4,8);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-05-22aRagexe
#if PACKETVER == 20130522
- packet(0x0360,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0362,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0368,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x07ec,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0811,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x086a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x086e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0874,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x087e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x088e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x089b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x089c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x08a2,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x08a3,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08a6,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x08a9,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x08aa,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x08ac,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0925,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0926,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x093e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0950,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0952,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x095b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x095c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x095e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0964,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0965,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0360,clif->pWalkToXY,2);
+ packet(0x0362,clif->pFriendsListAdd,2);
+ packet(0x0368,clif->pReqClickBuyingStore,2);
+ packet(0x0369,clif->pSolveCharName,2);
+ packet(0x07ec,clif->pTickSend,2);
+ packet(0x0811,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x086a,clif->pItemListWindowSelected,2,4,8);
+ packet(0x086e,clif->pReqCloseBuyingStore,0);
+ packet(0x0874,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x087e,clif->pMoveFromKafra,2,4);
+ packet(0x088e,clif->pStoragePassword,0);
+ packet(0x089b,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x089c,clif->pDropItem,2,4);
+ packet(0x08a2,clif->pActionRequest,2,6);
+ packet(0x08a3,clif->pMoveToKafra,2,4);
+ packet(0x08a6,clif->pGetCharNameRequest,2);
+ packet(0x08a9,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x08aa,clif->pSearchStoreInfoNextPage,0);
+ packet(0x08ac,clif->pDull/*,XXX*/);
+ packet(0x0925,clif->pChangeDir,2,4);
+ packet(0x0926,clif->pHomMenu,2,4);
+ packet(0x093e,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0950,clif->pPartyInvite2,2);
+ packet(0x0952,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x095b,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x095c,clif->pUseSkillToId,2,4,6);
+ packet(0x095e,clif->pTakeItem,2);
+ packet(0x0964,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0965,clif->pDull/*,XXX*/);
#endif
// 2013-05-29aRagexe
#if PACKETVER == 20130529
- packet(0x023b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0438,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085a,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x085e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0863,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0869,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0874,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0876,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0877,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0888,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x088e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0890,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0892,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0895,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0897,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x08a7,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x08a8,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0917,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0918,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0919,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0936,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0937,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0938,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0941,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0951,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0956,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0957,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0958,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0964,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x023b,clif->pHomMenu,2,4);
+ packet(0x0438,clif->pUseSkillToId,2,4,6);
+ packet(0x085a,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x085e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0863,clif->pGetCharNameRequest,2);
+ packet(0x0869,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0874,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0876,clif->pWalkToXY,2);
+ packet(0x0877,clif->pFriendsListAdd,2);
+ packet(0x0888,clif->pDull/*,XXX*/);
+ packet(0x088e,clif->pDull/*,XXX*/);
+ packet(0x0890,clif->pActionRequest,2,6);
+ packet(0x0892,clif->pReqClickBuyingStore,2);
+ packet(0x0895,clif->pTakeItem,2);
+ packet(0x0897,clif->pTickSend,2);
+ packet(0x08a7,clif->pDropItem,2,4);
+ packet(0x08a8,clif->pPartyInvite2,2);
+ packet(0x0917,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0918,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0919,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0936,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0937,clif->pSolveCharName,2);
+ packet(0x0938,clif->pMoveToKafra,2,4);
+ packet(0x0941,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0951,clif->pChangeDir,2,4);
+ packet(0x0956,clif->pStoragePassword,0);
+ packet(0x0957,clif->pMoveFromKafra,2,4);
+ packet(0x0958,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0964,clif->pReqCloseBuyingStore,0);
#endif
// 2013-06-05aRagexe, 2013-06-05bRagexe
#if PACKETVER == 20130605
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0883,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0883,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-06-12aRagexe, 2013-06-12bRagexe, 2013-06-12cRagexe, 2013-06-12dRagexe, 2013-06-12eRagexe
#if PACKETVER == 20130612
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x087e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0919,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x093a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0940,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0964,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x087e,clif->pChangeDir,2,4);
+ packet(0x0919,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x093a,clif->pHomMenu,2,4);
+ packet(0x0940,clif->pFriendsListAdd,2);
+ packet(0x0964,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-06-18#1aRagexe
#if PACKETVER == 20130618
- packet(0x0281,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x02c4,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0363,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x085a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0862,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0864,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0878,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x087a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0885,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0887,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0889,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x088e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0890,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0891,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x08a6,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08a7,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0917,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0930,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0932,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0936,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0942,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0944,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0945,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x094f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0951,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0953,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x095b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0962,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x096a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0281,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x02c4,clif->pHomMenu,2,4);
+ packet(0x0363,clif->pSearchStoreInfoNextPage,0);
+ packet(0x085a,clif->pReqCloseBuyingStore,0);
+ packet(0x0862,clif->pReqClickBuyingStore,2);
+ packet(0x0864,clif->pStoragePassword,0);
+ packet(0x0878,clif->pDull/*,XXX*/);
+ packet(0x087a,clif->pDull/*,XXX*/);
+ packet(0x0885,clif->pMoveToKafra,2,4);
+ packet(0x0887,clif->pPartyInvite2,2);
+ packet(0x0889,clif->pActionRequest,2,6);
+ packet(0x088e,clif->pWalkToXY,2);
+ packet(0x0890,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0891,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x08a6,clif->pChangeDir,2,4);
+ packet(0x08a7,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0917,clif->pDropItem,2,4);
+ packet(0x0930,clif->pTickSend,2);
+ packet(0x0932,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0936,clif->pMoveFromKafra,2,4);
+ packet(0x0942,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0944,clif->pGetCharNameRequest,2);
+ packet(0x0945,clif->pSolveCharName,2);
+ packet(0x094f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0951,clif->pUseSkillToId,2,4,6);
+ packet(0x0953,clif->pFriendsListAdd,2);
+ packet(0x095b,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0962,clif->pTakeItem,2);
+ packet(0x096a,clif->pUseSkillToPos,2,4,6,8);
#endif
// 2013-06-26_3cRagexe, 2013-06-26bRagexe
#if PACKETVER == 20130626
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0365,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0860,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x088b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x088c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x088f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0894,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0895,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x08a5,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x08ab,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0921,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0930,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x094d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0952,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0960,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0365,clif->pReqCloseBuyingStore,0);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pMoveFromKafra,2,4);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0860,clif->pDull/*,XXX*/);
+ packet(0x088b,clif->pTakeItem,2);
+ packet(0x088c,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x088f,clif->pDull/*,XXX*/);
+ packet(0x0894,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0895,clif->pPartyInvite2,2);
+ packet(0x08a5,clif->pItemListWindowSelected,2,4,8);
+ packet(0x08ab,clif->pFriendsListAdd,2);
+ packet(0x0921,clif->pMoveToKafra,2,4);
+ packet(0x0930,clif->pStoragePassword,0);
+ packet(0x094d,clif->pChangeDir,2,4);
+ packet(0x0952,clif->pDropItem,2,4);
+ packet(0x0960,clif->pHomMenu,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-07-03aRagexe
#if PACKETVER == 20130703
- packet(0x0202,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0873,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0930,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x094a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pReqClickBuyingStore,2);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pFriendsListAdd,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0873,clif->pStoragePassword,0);
+ packet(0x0930,clif->pChangeDir,2,4);
+ packet(0x094a,clif->pHomMenu,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-07-10bRagexe
#if PACKETVER == 20130710
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0880,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0880,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-07-17cRagexe
#if PACKETVER == 20130717
- packet(0x02c4,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0819,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x083c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0862,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0863,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x086b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x086c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0882,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x088a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x088c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0897,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0898,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x089b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08a6,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x08a9,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08aa,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0917,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0918,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x091d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x091e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x092f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x093b,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0956,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0958,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x095b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0960,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0967,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x096a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x02c4,clif->pTickSend,2);
+ packet(0x0819,clif->pSearchStoreInfoNextPage,0);
+ packet(0x083c,clif->pWalkToXY,2);
+ packet(0x0862,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0863,clif->pFriendsListAdd,2);
+ packet(0x086b,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x086c,clif->pDull/*,XXX*/);
+ packet(0x0882,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x088a,clif->pHomMenu,2,4);
+ packet(0x088c,clif->pChangeDir,2,4);
+ packet(0x0897,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0898,clif->pReqClickBuyingStore,2);
+ packet(0x089b,clif->pMoveToKafra,2,4);
+ packet(0x08a6,clif->pDull/*,XXX*/);
+ packet(0x08a9,clif->pTakeItem,2);
+ packet(0x08aa,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0917,clif->pDropItem,2,4);
+ packet(0x0918,clif->pActionRequest,2,6);
+ packet(0x091d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x091e,clif->pUseSkillToId,2,4,6);
+ packet(0x092f,clif->pPartyInvite2,2);
+ packet(0x093b,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0956,clif->pMoveFromKafra,2,4);
+ packet(0x0958,clif->pGetCharNameRequest,2);
+ packet(0x095b,clif->pStoragePassword,0);
+ packet(0x0960,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0967,clif->pSolveCharName,2);
+ packet(0x096a,clif->pReqCloseBuyingStore,0);
#endif
// 2013-07-24eRagexe
#if PACKETVER == 20130724
- packet(0x023b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0437,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x085a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x085e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0860,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0867,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x086a,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0874,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0876,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0890,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0891,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0893,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x089c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x08ab,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0921,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0924,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0927,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x092b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x092e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x094a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0953,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0954,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0956,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0958,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x095c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x095d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0965,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0966,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x023b,clif->pReqCloseBuyingStore,0);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0437,clif->pDull/*,XXX*/);
+ packet(0x085a,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x085e,clif->pMoveFromKafra,2,4);
+ packet(0x0860,clif->pStoragePassword,0);
+ packet(0x0867,clif->pGetCharNameRequest,2);
+ packet(0x086a,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0874,clif->pHomMenu,2,4);
+ packet(0x0876,clif->pActionRequest,2,6);
+ packet(0x0890,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0891,clif->pDropItem,2,4);
+ packet(0x0893,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x089c,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x08ab,clif->pDull/*,XXX*/);
+ packet(0x0921,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0924,clif->pReqClickBuyingStore,2);
+ packet(0x0927,clif->pPartyInvite2,2);
+ packet(0x092b,clif->pFriendsListAdd,2);
+ packet(0x092e,clif->pItemListWindowSelected,2,4,8);
+ packet(0x094a,clif->pTakeItem,2);
+ packet(0x0953,clif->pWalkToXY,2);
+ packet(0x0954,clif->pSolveCharName,2);
+ packet(0x0956,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0958,clif->pUseSkillToId,2,4,6);
+ packet(0x095c,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x095d,clif->pMoveToKafra,2,4);
+ packet(0x0965,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0966,clif->pChangeDir,2,4);
#endif
// 2013-07-31cRagexe
#if PACKETVER == 20130731
- packet(0x022d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0366,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0863,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0865,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0878,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x087e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0884,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0889,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x088b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0894,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0895,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0923,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0925,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x092b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x092d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0935,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0941,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x094c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0956,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0957,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0958,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x095b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x095d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x095f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0962,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x022d,clif->pFriendsListAdd,2);
+ packet(0x0366,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pChangeDir,2,4);
+ packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0863,clif->pReqClickBuyingStore,2);
+ packet(0x0865,clif->pUseSkillToId,2,4,6);
+ packet(0x0878,clif->pActionRequest,2,6);
+ packet(0x087e,clif->pReqCloseBuyingStore,0);
+ packet(0x0884,clif->pStoragePassword,0);
+ packet(0x0889,clif->pDull/*,XXX*/);
+ packet(0x088b,clif->pGetCharNameRequest,2);
+ packet(0x0894,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0895,clif->pDull/*,XXX*/);
+ packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0923,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0925,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x092b,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x092d,clif->pHomMenu,2,4);
+ packet(0x0935,clif->pTakeItem,2);
+ packet(0x0941,clif->pMoveToKafra,2,4);
+ packet(0x094c,clif->pMoveFromKafra,2,4);
+ packet(0x0956,clif->pPartyInvite2,2);
+ packet(0x0957,clif->pSolveCharName,2);
+ packet(0x0958,clif->pItemListWindowSelected,2,4,8);
+ packet(0x095b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x095d,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x095f,clif->pTickSend,2);
+ packet(0x0962,clif->pDropItem,2,4);
#endif
// 2013-08-07aRagexe
#if PACKETVER == 20130807
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0887,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0887,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-08-14aRagexe
#if PACKETVER == 20130814
- packet(0x0202,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0281,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0368,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0815,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0835,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0868,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0873,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0874,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0885,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0887,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0889,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x088a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x088c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0895,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0896,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x08a4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0923,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0926,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0927,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0936,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0937,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x093a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0941,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0947,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x094e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0958,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0959,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x095f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0962,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0202,clif->pMoveToKafra,2,4);
+ packet(0x0281,clif->pFriendsListAdd,2);
+ packet(0x0368,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0815,clif->pDull/*,XXX*/);
+ packet(0x0835,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0868,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0873,clif->pMoveFromKafra,2,4);
+ packet(0x0874,clif->pActionRequest,2,6);
+ packet(0x0885,clif->pStoragePassword,0);
+ packet(0x0887,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0889,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x088a,clif->pTickSend,2);
+ packet(0x088c,clif->pChangeDir,2,4);
+ packet(0x0895,clif->pReqClickBuyingStore,2);
+ packet(0x0896,clif->pDull/*,XXX*/);
+ packet(0x08a4,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0923,clif->pSolveCharName,2);
+ packet(0x0926,clif->pTakeItem,2);
+ packet(0x0927,clif->pPartyInvite2,2);
+ packet(0x0936,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0937,clif->pGetCharNameRequest,2);
+ packet(0x093a,clif->pWalkToXY,2);
+ packet(0x0941,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0947,clif->pUseSkillToId,2,4,6);
+ packet(0x094e,clif->pReqCloseBuyingStore,0);
+ packet(0x0958,clif->pHomMenu,2,4);
+ packet(0x0959,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x095f,clif->pDropItem,2,4);
+ packet(0x0962,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
#endif
// 2013-08-21bRagexe
#if PACKETVER == 20130821
- packet(0x0202,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0360,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0437,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0438,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x07ec,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0815,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0862,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0863,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x086e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0879,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0881,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x088d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x088f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0892,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x08a6,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x08ad,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x091d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0923,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x092d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x093e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0947,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0954,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x095e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0962,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0964,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0967,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0969,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0202,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0360,clif->pStoragePassword,0);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0437,clif->pMoveToKafra,2,4);
+ packet(0x0438,clif->pDull/*,XXX*/);
+ packet(0x07ec,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0815,clif->pWalkToXY,2);
+ packet(0x0862,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0863,clif->pActionRequest,2,6);
+ packet(0x086e,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0879,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0881,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x088d,clif->pTickSend,2);
+ packet(0x088f,clif->pFriendsListAdd,2);
+ packet(0x0892,clif->pReqClickBuyingStore,2);
+ packet(0x08a6,clif->pReqCloseBuyingStore,0);
+ packet(0x08ad,clif->pDull/*,XXX*/);
+ packet(0x091d,clif->pChangeDir,2,4);
+ packet(0x0923,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x092d,clif->pGetCharNameRequest,2);
+ packet(0x093e,clif->pMoveFromKafra,2,4);
+ packet(0x0947,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0954,clif->pUseSkillToId,2,4,6);
+ packet(0x095e,clif->pSolveCharName,2);
+ packet(0x0962,clif->pTakeItem,2);
+ packet(0x0964,clif->pDropItem,2,4);
+ packet(0x0967,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0969,clif->pPartyInvite2,2);
#endif
// 2013-08-28bRagexe, 2013-08-28cRagexe
#if PACKETVER == 20130828
- packet(0x023b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0361,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0364,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x07ec,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0817,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0873,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x087e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0889,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0893,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x089e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x089f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08a3,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x08ac,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0917,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0919,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x091e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0923,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0924,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0928,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0929,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0930,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0944,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0946,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x094a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x094c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x094f,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x095d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0966,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x096a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0361,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0364,clif->pDull/*,XXX*/);
+ packet(0x07ec,clif->pReqClickBuyingStore,2);
+ packet(0x0817,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0873,clif->pSearchStoreInfoNextPage,0);
+ packet(0x087e,clif->pDropItem,2,4);
+ packet(0x0889,clif->pHomMenu,2,4);
+ packet(0x0893,clif->pStoragePassword,0);
+ packet(0x089e,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x089f,clif->pChangeDir,2,4);
+ packet(0x08a3,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x08ac,clif->pGetCharNameRequest,2);
+ packet(0x0917,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0919,clif->pReqCloseBuyingStore,0);
+ packet(0x091e,clif->pTakeItem,2);
+ packet(0x0923,clif->pUseSkillToId,2,4,6);
+ packet(0x0924,clif->pTickSend,2);
+ packet(0x0928,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0929,clif->pMoveFromKafra,2,4);
+ packet(0x0930,clif->pSolveCharName,2);
+ packet(0x0944,clif->pFriendsListAdd,2);
+ packet(0x0946,clif->pDull/*,XXX*/);
+ packet(0x094a,clif->pPartyInvite2,2);
+ packet(0x094c,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x094f,clif->pActionRequest,2,6);
+ packet(0x095d,clif->pWalkToXY,2);
+ packet(0x0966,clif->pMoveToKafra,2,4);
+ packet(0x096a,clif->pWantToConnection,2,6,10,14,18);
#endif
// 2013-09-04aRagexe
#if PACKETVER == 20130904
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0838,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0937,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x093a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0940,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0956,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pChangeDir,2,4);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0838,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0937,clif->pFriendsListAdd,2);
+ packet(0x093a,clif->pHomMenu,2,4);
+ packet(0x0940,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0956,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-09-11aRagexe, 2013-09-11bRagexe
#if PACKETVER == 20130911
- packet(0x035f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0364,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0868,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x086b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x086d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x087b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0889,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0891,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x08a4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x091e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x093a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0940,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0948,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0967,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x096a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x035f,clif->pReqClickBuyingStore,2);
+ packet(0x0364,clif->pGetCharNameRequest,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085c,clif->pPartyInvite2,2);
+ packet(0x0868,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x086b,clif->pStoragePassword,0);
+ packet(0x086d,clif->pMoveFromKafra,2,4);
+ packet(0x087b,clif->pDull/*,XXX*/);
+ packet(0x0889,clif->pTakeItem,2);
+ packet(0x0891,clif->pHomMenu,2,4);
+ packet(0x08a4,clif->pItemListWindowSelected,2,4,8);
+ packet(0x091e,clif->pChangeDir,2,4);
+ packet(0x093a,clif->pDull/*,XXX*/);
+ packet(0x0940,clif->pTickSend,2);
+ packet(0x0948,clif->pFriendsListAdd,2);
+ packet(0x0967,clif->pDropItem,2,4);
+ packet(0x096a,clif->pMoveToKafra,2,4);
#endif
// 2013-09-17aRagexe
#if PACKETVER == 20130917
- packet(0x035f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0811,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0838,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x083c,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0863,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0868,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x086e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x086f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x087a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x087e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x088a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0895,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x089b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x089d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x08a0,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08a2,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x08a8,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0918,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x091c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x091e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0921,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0923,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0934,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x094c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x094e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0957,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0959,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x095b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x096a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x035f,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0811,clif->pActionRequest,2,6);
+ packet(0x0838,clif->pReqClickBuyingStore,2);
+ packet(0x083c,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0863,clif->pMoveFromKafra,2,4);
+ packet(0x0868,clif->pPartyInvite2,2);
+ packet(0x086e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x086f,clif->pTickSend,2);
+ packet(0x087a,clif->pTakeItem,2);
+ packet(0x087e,clif->pUseSkillToId,2,4,6);
+ packet(0x088a,clif->pStoragePassword,0);
+ packet(0x0895,clif->pSolveCharName,2);
+ packet(0x089b,clif->pReqCloseBuyingStore,0);
+ packet(0x089d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x08a0,clif->pMoveToKafra,2,4);
+ packet(0x08a2,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x08a8,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0918,clif->pChangeDir,2,4);
+ packet(0x091c,clif->pDropItem,2,4);
+ packet(0x091e,clif->pDull/*,XXX*/);
+ packet(0x0921,clif->pGetCharNameRequest,2);
+ packet(0x0923,clif->pHomMenu,2,4);
+ packet(0x0934,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x094c,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x094e,clif->pDull/*,XXX*/);
+ packet(0x0957,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0959,clif->pItemListWindowSelected,2,4,8);
+ packet(0x095b,clif->pWalkToXY,2);
+ packet(0x096a,clif->pFriendsListAdd,2);
#endif
// 2013-09-25aRagexe, 2013-09-25bRagexe, 2013-09-25cRagexe
#if PACKETVER == 20130925
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x086d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x086e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0875,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0876,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x087d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0885,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0887,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x088f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0890,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0940,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0958,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x095a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x095b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x095c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0969,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x086d,clif->pStoragePassword,0);
+ packet(0x086e,clif->pPartyInvite2,2);
+ packet(0x0875,clif->pHomMenu,2,4);
+ packet(0x0876,clif->pMoveFromKafra,2,4);
+ packet(0x087d,clif->pDropItem,2,4);
+ packet(0x0885,clif->pChangeDir,2,4);
+ packet(0x0887,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x088f,clif->pFriendsListAdd,2);
+ packet(0x0890,clif->pDull/*,XXX*/);
+ packet(0x0940,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0958,clif->pTakeItem,2);
+ packet(0x095a,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x095b,clif->pItemListWindowSelected,2,4,8);
+ packet(0x095c,clif->pMoveToKafra,2,4);
+ packet(0x0969,clif->pDull/*,XXX*/);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-10-02aRagexe
#if PACKETVER == 20131002
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0940,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pStoragePassword,0);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pTickSend,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0940,clif->pWalkToXY,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-10-08aRagexe
#if PACKETVER == 20131008
- packet(0x0202,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0362,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x07e4,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x083c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x085d,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x085e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0863,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x086c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x086d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0883,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0884,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0885,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0896,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x089c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08a9,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0917,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x091c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0923,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0927,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0932,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0934,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0936,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x093c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0947,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0952,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0954,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0956,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x095d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0969,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0202,clif->pGetCharNameRequest,2);
+ packet(0x0362,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x07e4,clif->pActionRequest,2,6);
+ packet(0x083c,clif->pReqCloseBuyingStore,0);
+ packet(0x085d,clif->pDull/*,XXX*/);
+ packet(0x085e,clif->pWalkToXY,2);
+ packet(0x0863,clif->pPartyInvite2,2);
+ packet(0x086c,clif->pItemListWindowSelected,2,4,8);
+ packet(0x086d,clif->pSolveCharName,2);
+ packet(0x0883,clif->pMoveToKafra,2,4);
+ packet(0x0884,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0885,clif->pDull/*,XXX*/);
+ packet(0x0896,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x089c,clif->pChangeDir,2,4);
+ packet(0x08a9,clif->pUseSkillToId,2,4,6);
+ packet(0x0917,clif->pMoveFromKafra,2,4);
+ packet(0x091c,clif->pTakeItem,2);
+ packet(0x0923,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0927,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0932,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0934,clif->pTickSend,2);
+ packet(0x0936,clif->pReqClickBuyingStore,2);
+ packet(0x093c,clif->pHomMenu,2,4);
+ packet(0x0947,clif->pStoragePassword,0);
+ packet(0x0952,clif->pDropItem,2,4);
+ packet(0x0954,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0956,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x095d,clif->pFriendsListAdd,2);
+ packet(0x0969,clif->pReqOpenBuyingStore,2,4,8,9,89);
#endif
// 2013-10-16aRagexe, 2013-10-16bRagexe
#if PACKETVER == 20131016
- packet(0x022d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0281,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0361,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0364,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0366,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x07ec,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0802,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x085a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x085d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0863,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0864,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0867,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x086c,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0870,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0875,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0887,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0888,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x088b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0890,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0894,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x091a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x091e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x091f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0927,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0946,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x094e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x095e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0962,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0966,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pMoveToKafra,2,4);
+ packet(0x0281,clif->pPartyInvite2,2);
+ packet(0x0361,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0364,clif->pDropItem,2,4);
+ packet(0x0366,clif->pReqClickBuyingStore,2);
+ packet(0x07ec,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0802,clif->pDull/*,XXX*/);
+ packet(0x085a,clif->pDull/*,XXX*/);
+ packet(0x085d,clif->pGetCharNameRequest,2);
+ packet(0x0863,clif->pUseSkillToId,2,4,6);
+ packet(0x0864,clif->pStoragePassword,0);
+ packet(0x0867,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x086c,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0870,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0875,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0887,clif->pTakeItem,2);
+ packet(0x0888,clif->pHomMenu,2,4);
+ packet(0x088b,clif->pFriendsListAdd,2);
+ packet(0x0890,clif->pSolveCharName,2);
+ packet(0x0894,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x091a,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x091e,clif->pMoveFromKafra,2,4);
+ packet(0x091f,clif->pWalkToXY,2);
+ packet(0x0927,clif->pTickSend,2);
+ packet(0x0946,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x094e,clif->pReqCloseBuyingStore,0);
+ packet(0x095e,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0962,clif->pActionRequest,2,6);
+ packet(0x0966,clif->pChangeDir,2,4);
#endif
// 2013-10-23aRagexe
#if PACKETVER == 20131023
- packet(0x0366,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0438,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0819,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0835,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x085b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0862,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x086e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0872,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0876,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x087f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0885,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x088a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x088b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x088f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08a7,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x08ab,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08ac,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0919,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x091d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0923,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0924,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0935,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0937,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0944,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x094a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0951,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0954,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x095b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0366,clif->pReqCloseBuyingStore,0);
+ packet(0x0438,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0819,clif->pDropItem,2,4);
+ packet(0x0835,clif->pDull/*,XXX*/);
+ packet(0x085b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0862,clif->pDull/*,XXX*/);
+ packet(0x086e,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0872,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0876,clif->pUseSkillToId,2,4,6);
+ packet(0x087f,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0885,clif->pStoragePassword,0);
+ packet(0x088a,clif->pItemListWindowSelected,2,4,8);
+ packet(0x088b,clif->pTakeItem,2);
+ packet(0x088f,clif->pMoveToKafra,2,4);
+ packet(0x08a7,clif->pHomMenu,2,4);
+ packet(0x08ab,clif->pChangeDir,2,4);
+ packet(0x08ac,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0919,clif->pSolveCharName,2);
+ packet(0x091d,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0923,clif->pActionRequest,2,6);
+ packet(0x0924,clif->pTickSend,2);
+ packet(0x0935,clif->pReqClickBuyingStore,2);
+ packet(0x0937,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0944,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x094a,clif->pFriendsListAdd,2);
+ packet(0x0951,clif->pGetCharNameRequest,2);
+ packet(0x0954,clif->pMoveFromKafra,2,4);
+ packet(0x095b,clif->pWalkToXY,2);
#endif
// 2013-10-30aRagexe
#if PACKETVER == 20131030
- packet(0x022d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x087d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0887,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08a2,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0925,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x022d,clif->pHomMenu,2,4);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x087d,clif->pFriendsListAdd,2);
+ packet(0x0887,clif->pStoragePassword,0);
+ packet(0x08a2,clif->pDull/*,XXX*/);
+ packet(0x0925,clif->pChangeDir,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-11-06aRagexe, 2013-11-07aRagexe, 2013-11-07bRagexe, 2013-11-07cRagexe, 2013-11-08aRagexe
#if PACKETVER == 20131106 || \
PACKETVER == 20131107 || \
PACKETVER == 20131108
- packet(0x0281,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0363,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0369,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0436,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0802,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0817,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0866,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0867,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0870,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0875,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0887,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0891,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0893,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0894,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x08a2,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0919,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x091d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0929,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0935,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x093b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0942,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0946,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0947,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0948,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0950,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0954,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x095d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0962,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0967,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0281,clif->pGetCharNameRequest,2);
+ packet(0x0363,clif->pUseSkillToId,2,4,6);
+ packet(0x0369,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0436,clif->pStoragePassword,0);
+ packet(0x0802,clif->pChangeDir,2,4);
+ packet(0x0817,clif->pDull/*,XXX*/);
+ packet(0x0866,clif->pWalkToXY,2);
+ packet(0x0867,clif->pMoveToKafra,2,4);
+ packet(0x0870,clif->pReqCloseBuyingStore,0);
+ packet(0x0875,clif->pDropItem,2,4);
+ packet(0x0887,clif->pTickSend,2);
+ packet(0x0891,clif->pSolveCharName,2);
+ packet(0x0893,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0894,clif->pHomMenu,2,4);
+ packet(0x08a2,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0919,clif->pSearchStoreInfoNextPage,0);
+ packet(0x091d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0929,clif->pMoveFromKafra,2,4);
+ packet(0x0935,clif->pFriendsListAdd,2);
+ packet(0x093b,clif->pTakeItem,2);
+ packet(0x0942,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0946,clif->pReqClickBuyingStore,2);
+ packet(0x0947,clif->pActionRequest,2,6);
+ packet(0x0948,clif->pDull/*,XXX*/);
+ packet(0x0950,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0954,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x095d,clif->pPartyInvite2,2);
+ packet(0x0962,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0967,clif->pReqTradeBuyingStore,2,4,8,12);
#endif
// 2013-11-13bRagexe
#if PACKETVER == 20131113
- packet(0x0364,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x086d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0879,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x088c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x088f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x089a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x08a4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x08a8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x091c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0920,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0926,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0927,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0928,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0929,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x092b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x092c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x092d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x092e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x092f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0934,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0936,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x093c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0949,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0950,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x095d,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x095f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0960,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0964,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0969,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0364,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x086d,clif->pReqCloseBuyingStore,0);
+ packet(0x0879,clif->pSearchStoreInfoNextPage,0);
+ packet(0x088c,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x088f,clif->pDropItem,2,4);
+ packet(0x089a,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x08a4,clif->pItemListWindowSelected,2,4,8);
+ packet(0x08a8,clif->pDull/*,XXX*/);
+ packet(0x091c,clif->pMoveFromKafra,2,4);
+ packet(0x0920,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0926,clif->pHomMenu,2,4);
+ packet(0x0927,clif->pPartyInvite2,2);
+ packet(0x0928,clif->pStoragePassword,0);
+ packet(0x0929,clif->pTickSend,2);
+ packet(0x092b,clif->pTakeItem,2);
+ packet(0x092c,clif->pFriendsListAdd,2);
+ packet(0x092d,clif->pReqClickBuyingStore,2);
+ packet(0x092e,clif->pGetCharNameRequest,2);
+ packet(0x092f,clif->pSolveCharName,2);
+ packet(0x0934,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0936,clif->pWalkToXY,2);
+ packet(0x093c,clif->pChangeDir,2,4);
+ packet(0x0949,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0950,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x095d,clif->pActionRequest,2,6);
+ packet(0x095f,clif->pUseSkillToId,2,4,6);
+ packet(0x0960,clif->pMoveToKafra,2,4);
+ packet(0x0964,clif->pDull/*,XXX*/);
+ packet(0x0969,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
#endif
// 2013-11-20dRagexe
#if PACKETVER == 20131120
- packet(0x0361,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0368,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0802,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0811,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0817,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x085a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x085f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0862,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0884,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x088c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x088d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x089e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08a1,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x08a4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08a8,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0917,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0926,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0927,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x092b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x092d,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x093e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x093f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0940,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0950,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0953,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0955,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0956,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x095e,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0361,clif->pSolveCharName,2);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0368,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0802,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0811,clif->pDull/*,XXX*/);
+ packet(0x0817,clif->pTickSend,2);
+ packet(0x085a,clif->pItemListWindowSelected,2,4,8);
+ packet(0x085f,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0862,clif->pReqCloseBuyingStore,0);
+ packet(0x0884,clif->pUseSkillToId,2,4,6);
+ packet(0x088c,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x088d,clif->pFriendsListAdd,2);
+ packet(0x089e,clif->pTakeItem,2);
+ packet(0x08a1,clif->pHomMenu,2,4);
+ packet(0x08a4,clif->pStoragePassword,0);
+ packet(0x08a8,clif->pActionRequest,2,6);
+ packet(0x0917,clif->pDropItem,2,4);
+ packet(0x0926,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0927,clif->pMoveToKafra,2,4);
+ packet(0x092b,clif->pWalkToXY,2);
+ packet(0x092d,clif->pSearchStoreInfoNextPage,0);
+ packet(0x093e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x093f,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0940,clif->pDull/*,XXX*/);
+ packet(0x0950,clif->pGetCharNameRequest,2);
+ packet(0x0953,clif->pPartyInvite2,2);
+ packet(0x0955,clif->pReqClickBuyingStore,2);
+ packet(0x0956,clif->pChangeDir,2,4);
+ packet(0x095e,clif->pPartyBookingRegisterReq,2,4);
#endif
// 2013-11-27bRagexe
#if PACKETVER == 20131127
- packet(0x035f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0364,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0365,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0366,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0881,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0884,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x088d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0894,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x089e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0930,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x093a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0940,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x094c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x094f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x095c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0967,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x096a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x035f,clif->pReqClickBuyingStore,2);
+ packet(0x0364,clif->pGetCharNameRequest,2);
+ packet(0x0365,clif->pWalkToXY,2);
+ packet(0x0366,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pMoveFromKafra,2,4);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0881,clif->pDull/*,XXX*/);
+ packet(0x0884,clif->pHomMenu,2,4);
+ packet(0x088d,clif->pChangeDir,2,4);
+ packet(0x0894,clif->pStoragePassword,0);
+ packet(0x089e,clif->pDull/*,XXX*/);
+ packet(0x0930,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x093a,clif->pFriendsListAdd,2);
+ packet(0x0940,clif->pTickSend,2);
+ packet(0x094c,clif->pTakeItem,2);
+ packet(0x094f,clif->pDropItem,2,4);
+ packet(0x095c,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0967,clif->pPartyInvite2,2);
+ packet(0x096a,clif->pMoveToKafra,2,4);
#endif
// 2013-12-04eRagexe
#if PACKETVER == 20131204
- packet(0x0365,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0366,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x07e4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x07ec,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x085a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0862,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0869,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x086c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0877,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0879,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x087f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0882,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x08a0,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x08a4,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x08a7,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08ad,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x091f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0928,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x092d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x092f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0932,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x093b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0941,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0951,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0958,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0959,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x095b,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0961,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0967,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pReqCloseBuyingStore,0);
+ packet(0x0366,clif->pTickSend,2);
+ packet(0x07e4,clif->pStoragePassword,0);
+ packet(0x07ec,clif->pReqClickBuyingStore,2);
+ packet(0x085a,clif->pPartyInvite2,2);
+ packet(0x0862,clif->pChangeDir,2,4);
+ packet(0x0869,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x086c,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0877,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0879,clif->pSolveCharName,2);
+ packet(0x087f,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0882,clif->pFriendsListAdd,2);
+ packet(0x08a0,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x08a4,clif->pDropItem,2,4);
+ packet(0x08a7,clif->pTakeItem,2);
+ packet(0x08ad,clif->pGetCharNameRequest,2);
+ packet(0x091f,clif->pHomMenu,2,4);
+ packet(0x0928,clif->pActionRequest,2,6);
+ packet(0x092d,clif->pUseSkillToId,2,4,6);
+ packet(0x092f,clif->pWalkToXY,2);
+ packet(0x0932,clif->pSearchStoreInfoNextPage,0);
+ packet(0x093b,clif->pDull/*,XXX*/);
+ packet(0x0941,clif->pMoveToKafra,2,4);
+ packet(0x0951,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0958,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0959,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x095b,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0961,clif->pDull/*,XXX*/);
+ packet(0x0967,clif->pMoveFromKafra,2,4);
#endif
// 2013-12-11cRagexe, 2013-12-11dRagexe
#if PACKETVER == 20131211
- packet(0x0202,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0366,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0865,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x086e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0873,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0881,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0886,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0892,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08a3,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x08a4,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08ab,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x092b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0931,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x094c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pUseSkillToId,2,4,6);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0366,clif->pTakeItem,2);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pFriendsListAdd,2);
+ packet(0x0865,clif->pPartyInvite2,2);
+ packet(0x086e,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0873,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0881,clif->pDull/*,XXX*/);
+ packet(0x0886,clif->pHomMenu,2,4);
+ packet(0x0892,clif->pMoveToKafra,2,4);
+ packet(0x08a3,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x08a4,clif->pChangeDir,2,4);
+ packet(0x08ab,clif->pDropItem,2,4);
+ packet(0x092b,clif->pStoragePassword,0);
+ packet(0x0931,clif->pMoveFromKafra,2,4);
+ packet(0x094c,clif->pDull/*,XXX*/);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-12-18bRagexe
#if PACKETVER == 20131218
- packet(0x022d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x087b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x08ab,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x092f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0947,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x022d,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pHomMenu,2,4);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085c,clif->pStoragePassword,0);
+ packet(0x087b,clif->pDull/*,XXX*/);
+ packet(0x08ab,clif->pFriendsListAdd,2);
+ packet(0x092f,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0947,clif->pChangeDir,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-12-23bRagexe, 2013-12-23cRagexe
#if PACKETVER == 20131223
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x08a4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x08a4,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-12-30aRagexe
#if PACKETVER == 20131230
- packet(0x022d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x02c4,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x035f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0365,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0369,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0438,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0860,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0871,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x087b,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x087e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x087f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0895,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0898,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x089c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x08a9,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x091d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x091e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x091f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0926,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x092a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x093d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x093e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0943,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0949,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x094a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x094c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0968,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0969,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x096a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x022d,clif->pItemListWindowSelected,2,4,8);
+ packet(0x02c4,clif->pUseSkillToId,2,4,6);
+ packet(0x035f,clif->pWalkToXY,2);
+ packet(0x0365,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0369,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0438,clif->pTickSend,2);
+ packet(0x0860,clif->pDropItem,2,4);
+ packet(0x0871,clif->pActionRequest,2,6);
+ packet(0x087b,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x087e,clif->pDull/*,XXX*/);
+ packet(0x087f,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0895,clif->pMoveFromKafra,2,4);
+ packet(0x0898,clif->pSolveCharName,2);
+ packet(0x089c,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x08a9,clif->pPartyInvite2,2);
+ packet(0x091d,clif->pStoragePassword,0);
+ packet(0x091e,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x091f,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0926,clif->pGetCharNameRequest,2);
+ packet(0x092a,clif->pTakeItem,2);
+ packet(0x093d,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x093e,clif->pDull/*,XXX*/);
+ packet(0x0943,clif->pFriendsListAdd,2);
+ packet(0x0949,clif->pHomMenu,2,4);
+ packet(0x094a,clif->pChangeDir,2,4);
+ packet(0x094c,clif->pReqCloseBuyingStore,0);
+ packet(0x0968,clif->pMoveToKafra,2,4);
+ packet(0x0969,clif->pReqClickBuyingStore,2);
+ packet(0x096a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
#endif
// 2014-01-08cRagexe, 2014-01-08dRagexe
#if PACKETVER == 20140108
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0936,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0936,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2014-01-15aRagexe, 2014-01-15bRagexe, 2014-01-15cRagexe, 2014-01-15eRagexe
#if PACKETVER == 20140115
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0367,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0802,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0865,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0887,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x088a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x088e,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x089b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x08a7,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x092d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0940,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x095b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x095d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0965,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0966,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x096a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pDropItem,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0367,clif->pMoveFromKafra,2,4);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0802,clif->pGetCharNameRequest,2);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0865,clif->pStoragePassword,0);
+ packet(0x0887,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x088a,clif->pDull/*,XXX*/);
+ packet(0x088e,clif->pMoveToKafra,2,4);
+ packet(0x089b,clif->pFriendsListAdd,2);
+ packet(0x08a7,clif->pChangeDir,2,4);
+ packet(0x092d,clif->pHomMenu,2,4);
+ packet(0x0940,clif->pTakeItem,2);
+ packet(0x095b,clif->pDull/*,XXX*/);
+ packet(0x095d,clif->pPartyInvite2,2);
+ packet(0x0965,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0966,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x096a,clif->pPartyBookingRegisterReq,2,4);
#endif
// 2014-01-22aRagexe
#if PACKETVER == 20140122
- packet(0x0360,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x07ec,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0811,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0863,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0870,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0871,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0872,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x088c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0890,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0893,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0899,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x089d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x08a2,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x08aa,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0917,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x091a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0925,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x092f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0940,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0941,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0942,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x094b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x094c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0950,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0952,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0955,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0957,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x095d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x095f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0360,clif->pActionRequest,2,6);
+ packet(0x07ec,clif->pReqClickBuyingStore,2);
+ packet(0x0811,clif->pReqCloseBuyingStore,0);
+ packet(0x0863,clif->pHomMenu,2,4);
+ packet(0x0870,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0871,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0872,clif->pPartyInvite2,2);
+ packet(0x088c,clif->pDull/*,XXX*/);
+ packet(0x0890,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0893,clif->pFriendsListAdd,2);
+ packet(0x0899,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x089d,clif->pGetCharNameRequest,2);
+ packet(0x08a2,clif->pDull/*,XXX*/);
+ packet(0x08aa,clif->pDropItem,2,4);
+ packet(0x0917,clif->pTickSend,2);
+ packet(0x091a,clif->pChangeDir,2,4);
+ packet(0x0925,clif->pWalkToXY,2);
+ packet(0x092f,clif->pMoveToKafra,2,4);
+ packet(0x0940,clif->pUseSkillToId,2,4,6);
+ packet(0x0941,clif->pSolveCharName,2);
+ packet(0x0942,clif->pTakeItem,2);
+ packet(0x094b,clif->pSearchStoreInfoNextPage,0);
+ packet(0x094c,clif->pMoveFromKafra,2,4);
+ packet(0x0950,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0952,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0955,clif->pStoragePassword,0);
+ packet(0x0957,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x095d,clif->pItemListWindowSelected,2,4,8);
+ packet(0x095f,clif->pReqOpenBuyingStore,2,4,8,9,89);
#endif
// 2014-01-29aRagexe, 2014-01-29cRagexe
#if PACKETVER == 20140129
- packet(0x0281,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0367,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07ec,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0802,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0884,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0885,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0889,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0921,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0924,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x092c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x094d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0958,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0961,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0281,clif->pUseSkillToId,2,4,6);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pDull/*,XXX*/);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0367,clif->pDropItem,2,4);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07ec,clif->pChangeDir,2,4);
+ packet(0x0802,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pDull/*,XXX*/);
+ packet(0x0884,clif->pHomMenu,2,4);
+ packet(0x0885,clif->pTakeItem,2);
+ packet(0x0889,clif->pMoveFromKafra,2,4);
+ packet(0x0921,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0924,clif->pItemListWindowSelected,2,4,8);
+ packet(0x092c,clif->pStoragePassword,0);
+ packet(0x094d,clif->pMoveToKafra,2,4);
+ packet(0x0958,clif->pPartyInvite2,2);
+ packet(0x0961,clif->pFriendsListAdd,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2014-02-05bRagexe
#if PACKETVER == 20140205
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0938,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0938,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2014-02-12aRagexe
#if PACKETVER == 20140212
- packet(0x02c4,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0369,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0438,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x086e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0874,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0877,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0878,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x087e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0888,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x088c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x089d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x089e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x08a0,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08a1,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x08a7,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x08ac,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08ad,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0919,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x091b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0928,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0930,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0934,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0936,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x093d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0944,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x094e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0952,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0953,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0960,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x02c4,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0369,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0438,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x086e,clif->pUseSkillToId,2,4,6);
+ packet(0x0874,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0877,clif->pReqClickBuyingStore,2);
+ packet(0x0878,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x087e,clif->pWalkToXY,2);
+ packet(0x0888,clif->pMoveFromKafra,2,4);
+ packet(0x088c,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x089d,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x089e,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x08a0,clif->pStoragePassword,0);
+ packet(0x08a1,clif->pPartyInvite2,2);
+ packet(0x08a7,clif->pItemListWindowSelected,2,4,8);
+ packet(0x08ac,clif->pMoveToKafra,2,4);
+ packet(0x08ad,clif->pDropItem,2,4);
+ packet(0x0919,clif->pChangeDir,2,4);
+ packet(0x091b,clif->pFriendsListAdd,2);
+ packet(0x0928,clif->pSolveCharName,2);
+ packet(0x0930,clif->pTickSend,2);
+ packet(0x0934,clif->pActionRequest,2,6);
+ packet(0x0936,clif->pDull/*,XXX*/);
+ packet(0x093d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0944,clif->pHomMenu,2,4);
+ packet(0x094e,clif->pDull/*,XXX*/);
+ packet(0x0952,clif->pGetCharNameRequest,2);
+ packet(0x0953,clif->pTakeItem,2);
+ packet(0x0960,clif->pReqCloseBuyingStore,0);
#endif
// 2014-02-19aRagexe
#if PACKETVER == 20140219
- packet(0x0202,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0360,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0364,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0802,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0838,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x085c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x085d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x085f,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0860,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0868,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x086f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x087c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0889,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0898,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x089f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x08a6,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08aa,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x08ac,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0921,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0927,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0939,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0946,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0949,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0953,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x095a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0961,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0202,clif->pFriendsListAdd,2);
+ packet(0x0360,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pSolveCharName,2);
+ packet(0x0802,clif->pTakeItem,2);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0838,clif->pUseSkillToId,2,4,6);
+ packet(0x085b,clif->pReqClickBuyingStore,2);
+ packet(0x085c,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x085d,clif->pWalkToXY,2);
+ packet(0x085f,clif->pGetCharNameRequest,2);
+ packet(0x0860,clif->pHomMenu,2,4);
+ packet(0x0868,clif->pStoragePassword,0);
+ packet(0x086f,clif->pPartyInvite2,2);
+ packet(0x087c,clif->pMoveToKafra,2,4);
+ packet(0x0889,clif->pDull/*,XXX*/);
+ packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0898,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x089f,clif->pDropItem,2,4);
+ packet(0x08a6,clif->pChangeDir,2,4);
+ packet(0x08aa,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x08ac,clif->pMoveFromKafra,2,4);
+ packet(0x0921,clif->pActionRequest,2,6);
+ packet(0x0927,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0939,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0946,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0949,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0953,clif->pSearchStoreInfoNextPage,0);
+ packet(0x095a,clif->pReqCloseBuyingStore,0);
+ packet(0x0961,clif->pTickSend,2);
#endif
// 2014-02-26aRagexe
#if PACKETVER == 20140226
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0362,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0364,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0867,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0877,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0887,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0894,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0895,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x091a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0921,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0931,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0941,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0962,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0964,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0969,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0362,clif->pFriendsListAdd,2);
+ packet(0x0364,clif->pStoragePassword,0);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pChangeDir,2,4);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0867,clif->pHomMenu,2,4);
+ packet(0x0877,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0887,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0894,clif->pDropItem,2,4);
+ packet(0x0895,clif->pMoveFromKafra,2,4);
+ packet(0x091a,clif->pMoveToKafra,2,4);
+ packet(0x0921,clif->pPartyInvite2,2);
+ packet(0x0931,clif->pDull/*,XXX*/);
+ packet(0x0941,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0962,clif->pDull/*,XXX*/);
+ packet(0x0964,clif->pTakeItem,2);
+ packet(0x0969,clif->pItemListWindowSelected,2,4,8);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2014-03-05aRagexe, 2014-03-05bRagexe
#if PACKETVER == 20140305
- packet(0x0202,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x07e4,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0878,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0934,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x095e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pTakeItem,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x07e4,clif->pFriendsListAdd,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pChangeDir,2,4);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0878,clif->pDull/*,XXX*/);
+ packet(0x0934,clif->pHomMenu,2,4);
+ packet(0x095e,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2014-03-12dRagexe
#if PACKETVER == 20140312
- packet(0x0202,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x023b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0366,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x085e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x086f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0889,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x088c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x088d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x088e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0891,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0894,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x089b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x089d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x089e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x08a6,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x08a9,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x08ad,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x091b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x091c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x091e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x092a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0948,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x094a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x094b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x094c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0957,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x095d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x095e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0966,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0202,clif->pUseSkillToId,2,4,6);
+ packet(0x023b,clif->pDull/*,XXX*/);
+ packet(0x0366,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x085e,clif->pReqClickBuyingStore,2);
+ packet(0x086f,clif->pTickSend,2);
+ packet(0x0889,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x088c,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x088d,clif->pItemListWindowSelected,2,4,8);
+ packet(0x088e,clif->pActionRequest,2,6);
+ packet(0x0891,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0894,clif->pWalkToXY,2);
+ packet(0x089b,clif->pGetCharNameRequest,2);
+ packet(0x089d,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x089e,clif->pDropItem,2,4);
+ packet(0x08a6,clif->pDull/*,XXX*/);
+ packet(0x08a9,clif->pFriendsListAdd,2);
+ packet(0x08ad,clif->pSolveCharName,2);
+ packet(0x091b,clif->pSearchStoreInfoNextPage,0);
+ packet(0x091c,clif->pPartyInvite2,2);
+ packet(0x091e,clif->pHomMenu,2,4);
+ packet(0x092a,clif->pTakeItem,2);
+ packet(0x0948,clif->pReqCloseBuyingStore,0);
+ packet(0x094a,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x094b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x094c,clif->pChangeDir,2,4);
+ packet(0x0957,clif->pMoveFromKafra,2,4);
+ packet(0x095d,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x095e,clif->pStoragePassword,0);
+ packet(0x0966,clif->pMoveToKafra,2,4);
#endif
// 2014-03-19aRagexe
#if PACKETVER == 20140319
- packet(0x02c4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07e4,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0802,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0811,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0815,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x085a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0864,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0865,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0866,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x086e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0872,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0883,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x088e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0890,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0893,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x089f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x08a2,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x091f,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0923,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0933,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0942,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0944,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0947,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x094c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0954,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0955,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0961,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0964,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x096a,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x02c4,clif->pTakeItem,2);
+ packet(0x07e4,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0802,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0811,clif->pReqClickBuyingStore,2);
+ packet(0x0815,clif->pHomMenu,2,4);
+ packet(0x085a,clif->pWalkToXY,2);
+ packet(0x0864,clif->pActionRequest,2,6);
+ packet(0x0865,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0866,clif->pChangeDir,2,4);
+ packet(0x086e,clif->pDull/*,XXX*/);
+ packet(0x0872,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0883,clif->pDropItem,2,4);
+ packet(0x088e,clif->pPartyInvite2,2);
+ packet(0x0890,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0893,clif->pDull/*,XXX*/);
+ packet(0x089f,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x08a2,clif->pMoveToKafra,2,4);
+ packet(0x091f,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0923,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0933,clif->pReqCloseBuyingStore,0);
+ packet(0x0942,clif->pStoragePassword,0);
+ packet(0x0944,clif->pUseSkillToId,2,4,6);
+ packet(0x0947,clif->pMoveFromKafra,2,4);
+ packet(0x094c,clif->pGetCharNameRequest,2);
+ packet(0x0954,clif->pFriendsListAdd,2);
+ packet(0x0955,clif->pTickSend,2);
+ packet(0x0961,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0964,clif->pSolveCharName,2);
+ packet(0x096a,clif->pReqOpenBuyingStore,2,4,8,9,89);
#endif
// 2014-03-26aRagexe
#if PACKETVER == 20140326
- packet(0x0362,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0365,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x07ec,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x083c,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x085b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0865,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0867,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0869,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x086b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x087c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x087e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x087f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0887,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0898,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x08aa,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x08ac,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x08ad,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0918,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0928,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x092a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x093d,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0942,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0945,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0946,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0956,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0959,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x095a,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x095c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0969,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0362,clif->pGetCharNameRequest,2);
+ packet(0x0365,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x07ec,clif->pTakeItem,2);
+ packet(0x083c,clif->pReqClickBuyingStore,2);
+ packet(0x085b,clif->pReqCloseBuyingStore,0);
+ packet(0x0865,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0867,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0869,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x086b,clif->pMoveFromKafra,2,4);
+ packet(0x087c,clif->pWalkToXY,2);
+ packet(0x087e,clif->pFriendsListAdd,2);
+ packet(0x087f,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0887,clif->pDull/*,XXX*/);
+ packet(0x0898,clif->pDropItem,2,4);
+ packet(0x08aa,clif->pDull/*,XXX*/);
+ packet(0x08ac,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x08ad,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0918,clif->pTickSend,2);
+ packet(0x0928,clif->pSearchStoreInfoNextPage,0);
+ packet(0x092a,clif->pStoragePassword,0);
+ packet(0x093d,clif->pActionRequest,2,6);
+ packet(0x0942,clif->pHomMenu,2,4);
+ packet(0x0945,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0946,clif->pPartyInvite2,2);
+ packet(0x0956,clif->pChangeDir,2,4);
+ packet(0x0959,clif->pMoveToKafra,2,4);
+ packet(0x095a,clif->pSolveCharName,2);
+ packet(0x095c,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0969,clif->pUseSkillToId,2,4,6);
#endif
// 2014-04-02fRagexe, 2014-04-02gRagexe
#if PACKETVER == 20140402
- packet(0x023b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0360,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0364,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07ec,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x085b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x085d,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0867,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0868,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0882,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0883,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x088a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x088c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0890,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0896,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x089a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x08ac,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x091f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0920,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0926,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x092d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0933,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x093f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0944,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0946,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x094c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0950,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0958,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x095c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0965,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x023b,clif->pReqClickBuyingStore,2);
+ packet(0x0360,clif->pChangeDir,2,4);
+ packet(0x0364,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07ec,clif->pSolveCharName,2);
+ packet(0x085b,clif->pMoveFromKafra,2,4);
+ packet(0x085d,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0867,clif->pReqCloseBuyingStore,0);
+ packet(0x0868,clif->pUseSkillToId,2,4,6);
+ packet(0x0882,clif->pDropItem,2,4);
+ packet(0x0883,clif->pItemListWindowSelected,2,4,8);
+ packet(0x088a,clif->pGetCharNameRequest,2);
+ packet(0x088c,clif->pDull/*,XXX*/);
+ packet(0x0890,clif->pPartyInvite2,2);
+ packet(0x0896,clif->pHomMenu,2,4);
+ packet(0x089a,clif->pFriendsListAdd,2);
+ packet(0x08ac,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x091f,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0920,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0926,clif->pStoragePassword,0);
+ packet(0x092d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0933,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x093f,clif->pWalkToXY,2);
+ packet(0x0944,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0946,clif->pActionRequest,2,6);
+ packet(0x094c,clif->pDull/*,XXX*/);
+ packet(0x0950,clif->pTickSend,2);
+ packet(0x0958,clif->pTakeItem,2);
+ packet(0x095c,clif->pMoveToKafra,2,4);
+ packet(0x0965,clif->pSearchStoreInfoListItemClick,2,6,10);
#endif
// 2014-04-09aRagexe, 2014-04-09bRagexe
#if PACKETVER == 20140409
- packet(0x0819,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x085b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0868,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x086a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x086d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0873,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0875,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x087e,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0883,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0884,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x088a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0890,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0893,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0896,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0899,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x08a2,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x08a4,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x08a6,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x08a7,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08a9,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0918,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x091c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x092e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0942,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0947,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x094c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x095a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x095e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0819,clif->pMoveFromKafra,2,4);
+ packet(0x085b,clif->pSolveCharName,2);
+ packet(0x0868,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x086a,clif->pItemListWindowSelected,2,4,8);
+ packet(0x086d,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0873,clif->pReqCloseBuyingStore,0);
+ packet(0x0875,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x087e,clif->pTickSend,2);
+ packet(0x0883,clif->pWalkToXY,2);
+ packet(0x0884,clif->pGetCharNameRequest,2);
+ packet(0x088a,clif->pDull/*,XXX*/);
+ packet(0x0890,clif->pTakeItem,2);
+ packet(0x0893,clif->pActionRequest,2,6);
+ packet(0x0896,clif->pUseSkillToId,2,4,6);
+ packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0899,clif->pFriendsListAdd,2);
+ packet(0x08a2,clif->pDull/*,XXX*/);
+ packet(0x08a4,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x08a6,clif->pSearchStoreInfoNextPage,0);
+ packet(0x08a7,clif->pChangeDir,2,4);
+ packet(0x08a9,clif->pStoragePassword,0);
+ packet(0x0918,clif->pDropItem,2,4);
+ packet(0x091c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x092e,clif->pPartyInvite2,2);
+ packet(0x0942,clif->pMoveToKafra,2,4);
+ packet(0x0947,clif->pHomMenu,2,4);
+ packet(0x094c,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x095a,clif->pReqClickBuyingStore,2);
+ packet(0x095e,clif->pWantToConnection,2,6,10,14,18);
#endif
// 2014-04-16aRagexe, 2014-04-16bRagexe
#if PACKETVER == 20140416
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x095c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x095c,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2014-04-23aRagexe
#if PACKETVER == 20140423
- packet(0x022d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0360,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0436,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0811,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x083c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x085a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x085b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0862,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0863,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0866,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x086b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x086f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0873,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x088b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0890,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0895,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0896,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0898,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x089b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x089d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x089f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x08a8,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x08ad,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x091a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0920,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x094f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x095e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x022d,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0360,clif->pStoragePassword,0);
+ packet(0x0436,clif->pFriendsListAdd,2);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x0811,clif->pMoveFromKafra,2,4);
+ packet(0x083c,clif->pChangeDir,2,4);
+ packet(0x085a,clif->pSearchStoreInfoNextPage,0);
+ packet(0x085b,clif->pWalkToXY,2);
+ packet(0x0862,clif->pMoveToKafra,2,4);
+ packet(0x0863,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0866,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x086b,clif->pDropItem,2,4);
+ packet(0x086f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0873,clif->pItemListWindowSelected,2,4,8);
+ packet(0x088b,clif->pSolveCharName,2);
+ packet(0x0890,clif->pUseSkillToId,2,4,6);
+ packet(0x0895,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0896,clif->pActionRequest,2,6);
+ packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0898,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x089b,clif->pReqClickBuyingStore,2);
+ packet(0x089d,clif->pGetCharNameRequest,2);
+ packet(0x089f,clif->pReqCloseBuyingStore,0);
+ packet(0x08a8,clif->pHomMenu,2,4);
+ packet(0x08ad,clif->pDull/*,XXX*/);
+ packet(0x091a,clif->pTickSend,2);
+ packet(0x0920,clif->pPartyInvite2,2);
+ packet(0x094f,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x095e,clif->pDull/*,XXX*/);
#endif
// 2014-04-30aRagexe
#if PACKETVER == 20140430
- packet(0x023b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x035f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0363,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0860,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0870,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0871,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0875,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x087f,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0884,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0899,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08a1,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x093b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0940,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x094b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0953,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0956,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x096a,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x023b,clif->pTickSend,2);
+ packet(0x035f,clif->pStoragePassword,0);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0363,clif->pUseSkillToId,2,4,6);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pDropItem,2,4);
+ packet(0x0860,clif->pFriendsListAdd,2);
+ packet(0x0870,clif->pPartyInvite2,2);
+ packet(0x0871,clif->pHomMenu,2,4);
+ packet(0x0875,clif->pMoveFromKafra,2,4);
+ packet(0x087f,clif->pTakeItem,2);
+ packet(0x0884,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0899,clif->pChangeDir,2,4);
+ packet(0x08a1,clif->pDull/*,XXX*/);
+ packet(0x093b,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0940,clif->pGetCharNameRequest,2);
+ packet(0x094b,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0953,clif->pDull/*,XXX*/);
+ packet(0x0956,clif->pMoveToKafra,2,4);
+ packet(0x096a,clif->pSolveCharName,2);
#endif
// 2014-05-08bRagexe
#if PACKETVER == 20140508
- packet(0x022d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x02c4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0366,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0368,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0802,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0861,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0886,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x089b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x08ab,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0927,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0930,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0932,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0934,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x094e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x096a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x022d,clif->pSolveCharName,2);
+ packet(0x02c4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pChangeDir,2,4);
+ packet(0x0366,clif->pPartyInvite2,2);
+ packet(0x0368,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pHomMenu,2,4);
+ packet(0x0802,clif->pGetCharNameRequest,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0861,clif->pTakeItem,2);
+ packet(0x0886,clif->pMoveToKafra,2,4);
+ packet(0x089b,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x08ab,clif->pDull/*,XXX*/);
+ packet(0x0927,clif->pStoragePassword,0);
+ packet(0x0930,clif->pMoveFromKafra,2,4);
+ packet(0x0932,clif->pDropItem,2,4);
+ packet(0x0934,clif->pDull/*,XXX*/);
+ packet(0x094e,clif->pFriendsListAdd,2);
+ packet(0x096a,clif->pPartyBookingRegisterReq,2,4);
#endif
// 2014-05-14bRagexe
#if PACKETVER == 20140514
- packet(0x0437,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0817,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0865,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0867,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0868,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0876,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0877,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x087d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0885,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0886,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x088a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x088b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0895,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x089a,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x089c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x08a5,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0918,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x091d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0921,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0925,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x092c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x092f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x094d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x094e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0958,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x095f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0962,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0965,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x096a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0437,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0817,clif->pDull/*,XXX*/);
+ packet(0x0865,clif->pActionRequest,2,6);
+ packet(0x0867,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0868,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0876,clif->pUseSkillToId,2,4,6);
+ packet(0x0877,clif->pDull/*,XXX*/);
+ packet(0x087d,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0885,clif->pStoragePassword,0);
+ packet(0x0886,clif->pTickSend,2);
+ packet(0x088a,clif->pChangeDir,2,4);
+ packet(0x088b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0895,clif->pTakeItem,2);
+ packet(0x089a,clif->pSolveCharName,2);
+ packet(0x089c,clif->pFriendsListAdd,2);
+ packet(0x08a5,clif->pGetCharNameRequest,2);
+ packet(0x0918,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x091d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0921,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0925,clif->pReqClickBuyingStore,2);
+ packet(0x092c,clif->pMoveToKafra,2,4);
+ packet(0x092f,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x094d,clif->pReqCloseBuyingStore,0);
+ packet(0x094e,clif->pMoveFromKafra,2,4);
+ packet(0x0958,clif->pHomMenu,2,4);
+ packet(0x095f,clif->pWalkToXY,2);
+ packet(0x0962,clif->pPartyInvite2,2);
+ packet(0x0965,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x096a,clif->pDropItem,2,4);
#endif
// 2014-05-21bRagexe
#if PACKETVER == 20140521
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0869,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x088b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x088d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x089c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x08ac,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0968,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0869,clif->pStoragePassword,0);
+ packet(0x088b,clif->pDull/*,XXX*/);
+ packet(0x088d,clif->pChangeDir,2,4);
+ packet(0x089c,clif->pFriendsListAdd,2);
+ packet(0x08ac,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0968,clif->pHomMenu,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2014-05-28aRagexe
#if PACKETVER == 20140528
- packet(0x0202,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0360,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x085f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0862,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0872,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0875,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0877,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0879,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x087e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x088a,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x088f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0894,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0896,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x089d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08a4,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x08a8,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x08ab,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x091d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0929,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0930,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0938,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x093a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x093f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x094a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x094b,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x095f,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0963,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0964,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0966,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0202,clif->pWalkToXY,2);
+ packet(0x0360,clif->pStoragePassword,0);
+ packet(0x085f,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0862,clif->pSolveCharName,2);
+ packet(0x0872,clif->pHomMenu,2,4);
+ packet(0x0875,clif->pDropItem,2,4);
+ packet(0x0877,clif->pTickSend,2);
+ packet(0x0879,clif->pMoveFromKafra,2,4);
+ packet(0x087e,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x088a,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x088f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0894,clif->pDull/*,XXX*/);
+ packet(0x0896,clif->pItemListWindowSelected,2,4,8);
+ packet(0x089d,clif->pTakeItem,2);
+ packet(0x08a4,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x08a8,clif->pSearchStoreInfoNextPage,0);
+ packet(0x08ab,clif->pDull/*,XXX*/);
+ packet(0x091d,clif->pFriendsListAdd,2);
+ packet(0x0929,clif->pActionRequest,2,6);
+ packet(0x0930,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0938,clif->pReqCloseBuyingStore,0);
+ packet(0x093a,clif->pMoveToKafra,2,4);
+ packet(0x093f,clif->pPartyInvite2,2);
+ packet(0x094a,clif->pReqClickBuyingStore,2);
+ packet(0x094b,clif->pChangeDir,2,4);
+ packet(0x095f,clif->pGetCharNameRequest,2);
+ packet(0x0963,clif->pUseSkillToId,2,4,6);
+ packet(0x0964,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0966,clif->pReqTradeBuyingStore,2,4,8,12);
#endif
// 2014-06-05aRagexe, 2014-06-05bRagexe
#if PACKETVER == 20140605
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0369,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0921,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0931,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0940,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x094c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pReqCloseBuyingStore,0);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pActionRequest,2,6);
+ packet(0x0369,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pChangeDir,2,4);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0921,clif->pStoragePassword,0);
+ packet(0x0931,clif->pHomMenu,2,4);
+ packet(0x0940,clif->pSolveCharName,2);
+ packet(0x094c,clif->pFriendsListAdd,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2014-06-11cRagexe, 2014-06-11dRagexe, 2014-06-11hRagexe, 2014-06-12aRagexe, 2014-06-13aRagexe
#if PACKETVER == 20140611 || \
PACKETVER == 20140612 || \
PACKETVER == 20140613
- packet(0x0364,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0438,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x07e4,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0838,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0864,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0867,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x086c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0874,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0878,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x088c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0891,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0893,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0894,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x089b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x08a1,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x08a2,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0924,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0936,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0941,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x094a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x094f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0950,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0951,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0952,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0957,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0958,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0963,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0965,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0969,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
-#endif
-
-// 2014-06-11eRagexe, 2015-02-25hRagexe, 2018-03-15aRagexe, 2018-03-21aRagexe, 2018-03-28bRagexe, 2018-04-04bRagexe, 2018-04-18aRagexe, 2018-04-25cRagexe, 2018-05-02bRagexe, 2018-05-09aRagexe, 2018-05-16cRagexe, 2018-05-23aRagexe, 2018-05-30aRagexe, 2018-06-05bRagexe, 2018-06-20cRagexe, 2018-06-20eRagexe, 2018-06-21aRagexe, 2018-07-04aRagexe, 2018-07-18bRagexe, 2018-07-18cRagexe, 2018-08-01cRagexe, 2018-08-08bRagexe, 2018-08-22cRagexe, 2018-08-29aRagexe, 2018-08-31aRagexe, 2018-09-12dRagexe, 2018-09-19aRagexe, 2018-10-02aRagexe, 2018-10-02bRagexe, 2018-10-17_02aRagexe, 2018-10-17_03aRagexe, 2018-10-17bRagexe, 2018-10-24bRagexe, 2018-10-31aRagexe, 2018-10-31bRagexe, 2018-11-07aRagexe, 2018-11-14cRagexe, 2018-11-14dRagexe
+ packet(0x0364,clif->pReqCloseBuyingStore,0);
+ packet(0x0438,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x07e4,clif->pMoveToKafra,2,4);
+ packet(0x0838,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0864,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0867,clif->pTickSend,2);
+ packet(0x086c,clif->pDull/*,XXX*/);
+ packet(0x0874,clif->pPartyInvite2,2);
+ packet(0x0878,clif->pTakeItem,2);
+ packet(0x088c,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0891,clif->pActionRequest,2,6);
+ packet(0x0893,clif->pWalkToXY,2);
+ packet(0x0894,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x089b,clif->pFriendsListAdd,2);
+ packet(0x08a1,clif->pUseSkillToId,2,4,6);
+ packet(0x08a2,clif->pDull/*,XXX*/);
+ packet(0x0924,clif->pGetCharNameRequest,2);
+ packet(0x0936,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0941,clif->pStoragePassword,0);
+ packet(0x094a,clif->pItemListWindowSelected,2,4,8);
+ packet(0x094f,clif->pSolveCharName,2);
+ packet(0x0950,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0951,clif->pChangeDir,2,4);
+ packet(0x0952,clif->pMoveFromKafra,2,4);
+ packet(0x0957,clif->pReqClickBuyingStore,2);
+ packet(0x0958,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0963,clif->pDropItem,2,4);
+ packet(0x0965,clif->pHomMenu,2,4);
+ packet(0x0969,clif->pSearchStoreInfoNextPage,0);
+#endif
+
+// 2014-06-11eRagexe, 2015-02-25hRagexe, 2018-03-15aRagexe, 2018-03-21aRagexe, 2018-03-28bRagexe, 2018-04-04bRagexe, 2018-04-18aRagexe, 2018-04-25cRagexe, 2018-05-02bRagexe, 2018-05-09aRagexe, 2018-05-16cRagexe, 2018-05-23aRagexe, 2018-05-30aRagexe, 2018-06-05bRagexe, 2018-06-20cRagexe, 2018-06-20eRagexe, 2018-06-21aRagexe, 2018-07-04aRagexe, 2018-07-18bRagexe, 2018-07-18cRagexe, 2018-08-01cRagexe, 2018-08-08bRagexe, 2018-08-22cRagexe, 2018-08-29aRagexe, 2018-08-31aRagexe, 2018-09-12dRagexe, 2018-09-19aRagexe, 2018-10-02aRagexe, 2018-10-02bRagexe, 2018-10-17_02aRagexe, 2018-10-17_03aRagexe, 2018-10-17bRagexe, 2018-10-24bRagexe, 2018-10-31aRagexe, 2018-10-31bRagexe, 2018-11-07aRagexe, 2018-11-14cRagexe, 2018-11-14dRagexe, 2018-11-21bRagexe, 2018-11-28aRagexe, 2018-11-28bRagexe, 2018-11-28cRagexe, 2018-12-05aRagexe, 2018-12-12aRagexe, 2018-12-12bRagexe, 2018-12-19bRagexe, 2018-12-26aRagexe, 2019-01-09aRagexe, 2019-01-16bRagexe, 2019-01-16cRagexe, 2019-01-23dRagexe, 2019-02-13bRagexe, 2019-02-13eRagexe, 2019-02-27aRagexe, 2019-02-28aRagexe, 2019-03-06bRagexe, 2019-03-06cRagexe, 2019-03-13aRagexe, 2019-03-20aRagexe, 2019-03-22aRagexe, 2019-03-27bRagexe, 2019-04-03aRagexe, 2019-04-17aRagexe, 2019-04-18aRagexe, 2019-05-08cRagexe, 2019-05-22bRagexe, 2019-05-22cRagexe, 2019-05-23aRagexe, 2019-05-29aRagexe, 2019-05-29cRagexe, 2019-05-30aRagexe, 2019-06-05fRagexe, 2019-06-05KRagexe, 2019-06-19bRagexe, 2019-06-19eRagexe, 2019-06-19hRagexe, 2019-07-03aRagexe, 2019-07-17aRagexe, 2019-07-17dRagexe, 2019-07-24aRagexe, 2019-07-31bRagexe, 2019-08-02aRagexe, 2019-08-07aRagexe, 2019-08-21aRagexe, 2019-08-28aRagexe, 2019-09-04aRagexe, 2019-09-04bRagexe, 2019-09-18bRagexe, 2019-09-25aRagexe, 2019-09-25bRagexe, 2019-10-02cRagexe, 2019-10-02dRagexe, 2019-10-16fRagexe, 2019-10-16gRagexe, 2019-10-18aRagexe, 2019-10-23aRagexe, 2019-10-30cRagexe, 2019-11-06aRagexe, 2019-11-07aRagexe, 2019-11-13cRagexe, 2019-11-13eRagexe, 2019-11-20aRagexe, 2019-11-20dRagexe, 2019-11-27aRagexe, 2019-11-27bRagexe, 2019-12-04aRagexe, 2019-12-04bRagexe, 2019-12-11aRagexe, 2019-12-18bRagexe, 2019-12-24aRagexe, 2019-12-24bRagexe, 2020-01-08aRagexe, 2020-01-22cRagexe, 2020-01-29bRagexe, 2020-01-30aRagexe, 2020-02-05aRagexe, 2020-02-06aRagexe, 2020-02-12aRagexe, 2020-02-19dRagexe, 2020-03-04aRagexe, 2020-03-18bRagexe, 2020-04-01bRagexe, 2020-04-14_6aRagexe, 2020-04-14eRagexe, 2020-05-06aRagexe, 2020-05-20bRagexe, 2020-06-03aRagexe, 2020-06-17aRagexe, 2020-07-01bRagexe, 2020-07-01cRagexe
#if PACKETVER == 20140611 || \
PACKETVER == 20150225 || \
PACKETVER == 20180315 || \
@@ -3376,6477 +3376,6424 @@
PACKETVER == 20181024 || \
PACKETVER == 20181031 || \
PACKETVER == 20181107 || \
- PACKETVER == 20181114
- packet(0x0202,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x022d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x023b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0281,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x02c4,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x035f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0360,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0361,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0362,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0363,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0365,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0366,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0436,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0438,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x07e4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x07ec,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0811,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0815,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0817,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0835,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0838,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ PACKETVER == 20181114 || \
+ PACKETVER == 20181121 || \
+ PACKETVER == 20181128 || \
+ PACKETVER == 20181205 || \
+ PACKETVER == 20181212 || \
+ PACKETVER == 20181219 || \
+ PACKETVER == 20181226 || \
+ PACKETVER == 20190109 || \
+ PACKETVER == 20190116 || \
+ PACKETVER == 20190123 || \
+ PACKETVER == 20190213 || \
+ PACKETVER == 20190227 || \
+ PACKETVER == 20190228 || \
+ PACKETVER == 20190306 || \
+ PACKETVER == 20190313 || \
+ PACKETVER == 20190320 || \
+ PACKETVER == 20190322 || \
+ PACKETVER == 20190327 || \
+ PACKETVER == 20190403 || \
+ PACKETVER == 20190417 || \
+ PACKETVER == 20190418 || \
+ PACKETVER == 20190508 || \
+ PACKETVER == 20190522 || \
+ PACKETVER == 20190523 || \
+ PACKETVER == 20190529 || \
+ PACKETVER == 20190530 || \
+ PACKETVER == 20190605 || \
+ PACKETVER == 20190619 || \
+ PACKETVER == 20190703 || \
+ PACKETVER == 20190717 || \
+ PACKETVER == 20190724 || \
+ PACKETVER == 20190731 || \
+ PACKETVER == 20190802 || \
+ PACKETVER == 20190807 || \
+ PACKETVER == 20190821 || \
+ PACKETVER == 20190828 || \
+ PACKETVER == 20190904 || \
+ PACKETVER == 20190918 || \
+ PACKETVER == 20190925 || \
+ PACKETVER == 20191002 || \
+ PACKETVER == 20191016 || \
+ PACKETVER == 20191018 || \
+ PACKETVER == 20191023 || \
+ PACKETVER == 20191030 || \
+ PACKETVER == 20191106 || \
+ PACKETVER == 20191107 || \
+ PACKETVER == 20191113 || \
+ PACKETVER == 20191120 || \
+ PACKETVER == 20191127 || \
+ PACKETVER == 20191204 || \
+ PACKETVER == 20191211 || \
+ PACKETVER == 20191218 || \
+ PACKETVER == 20191224 || \
+ PACKETVER == 20200108 || \
+ PACKETVER == 20200122 || \
+ PACKETVER == 20200129 || \
+ PACKETVER == 20200130 || \
+ PACKETVER == 20200205 || \
+ PACKETVER == 20200206 || \
+ PACKETVER == 20200212 || \
+ PACKETVER == 20200219 || \
+ PACKETVER == 20200304 || \
+ PACKETVER == 20200318 || \
+ PACKETVER == 20200401 || \
+ PACKETVER == 20200414 || \
+ PACKETVER == 20200506 || \
+ PACKETVER == 20200520 || \
+ PACKETVER == 20200603 || \
+ PACKETVER == 20200617 || \
+ PACKETVER >= 20200701
+ packet(0x0202,clif->pFriendsListAdd,2);
+ packet(0x022d,clif->pHomMenu,2,4);
+ packet(0x023b,clif->pStoragePassword,0);
+ packet(0x0281,clif->pDull/*,XXX*/);
+ packet(0x02c4,clif->pPartyInvite2,2);
+ packet(0x035f,clif->pWalkToXY,2);
+ packet(0x0360,clif->pTickSend,2);
+ packet(0x0361,clif->pChangeDir,2,4);
+ packet(0x0362,clif->pTakeItem,2);
+ packet(0x0363,clif->pDropItem,2,4);
+ packet(0x0364,clif->pMoveToKafra,2,4);
+ packet(0x0365,clif->pMoveFromKafra,2,4);
+ packet(0x0366,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pGetCharNameRequest,2);
+ packet(0x0369,clif->pSolveCharName,2);
+ packet(0x0436,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0437,clif->pActionRequest,2,6);
+ packet(0x0438,clif->pUseSkillToId,2,4,6);
+ packet(0x07e4,clif->pItemListWindowSelected,2,4,8);
+ packet(0x07ec,clif->pDull/*,XXX*/);
+ packet(0x0802,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0811,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0815,clif->pReqCloseBuyingStore,0);
+ packet(0x0817,clif->pReqClickBuyingStore,2);
+ packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0835,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0838,clif->pSearchStoreInfoNextPage,0);
+ packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10);
#endif
// 2014-06-18aRagexe
#if PACKETVER == 20140618
- packet(0x085d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x085f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0860,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0861,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x086c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0878,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x087d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0884,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0885,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0886,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0890,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0892,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x08a6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x08a7,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x08ac,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0917,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x091f,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0929,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0935,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0938,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0939,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x093b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0945,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0954,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0957,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x095d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x095e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0962,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0967,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x085d,clif->pMoveToKafra,2,4);
+ packet(0x085f,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0860,clif->pTickSend,2);
+ packet(0x0861,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x086c,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0878,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x087d,clif->pSolveCharName,2);
+ packet(0x0884,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0885,clif->pMoveFromKafra,2,4);
+ packet(0x0886,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0890,clif->pChangeDir,2,4);
+ packet(0x0892,clif->pUseSkillToId,2,4,6);
+ packet(0x08a6,clif->pReqClickBuyingStore,2);
+ packet(0x08a7,clif->pWalkToXY,2);
+ packet(0x08ac,clif->pDull/*,XXX*/);
+ packet(0x0917,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x091f,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0929,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0935,clif->pTakeItem,2);
+ packet(0x0938,clif->pPartyInvite2,2);
+ packet(0x0939,clif->pReqCloseBuyingStore,0);
+ packet(0x093b,clif->pActionRequest,2,6);
+ packet(0x0945,clif->pDropItem,2,4);
+ packet(0x0954,clif->pFriendsListAdd,2);
+ packet(0x0957,clif->pStoragePassword,0);
+ packet(0x095d,clif->pGetCharNameRequest,2);
+ packet(0x095e,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0962,clif->pDull/*,XXX*/);
+ packet(0x0967,clif->pHomMenu,2,4);
#endif
// 2014-06-25aRagexe, 2014-06-25bRagexe
#if PACKETVER == 20140625
- packet(0x0202,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x023b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0815,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0817,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0835,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x085a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0861,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x086b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0875,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x087b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0885,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0886,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0888,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x088a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x088e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0897,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x08a1,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x08a2,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x091a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0923,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0928,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0940,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0946,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x094e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0959,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0960,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0968,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0969,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pMoveToKafra,2,4);
+ packet(0x023b,clif->pMoveFromKafra,2,4);
+ packet(0x0815,clif->pDull/*,XXX*/);
+ packet(0x0817,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0835,clif->pWalkToXY,2);
+ packet(0x085a,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0861,clif->pUseSkillToId,2,4,6);
+ packet(0x086b,clif->pPartyInvite2,2);
+ packet(0x0875,clif->pSolveCharName,2);
+ packet(0x087b,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0885,clif->pDropItem,2,4);
+ packet(0x0886,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0888,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x088a,clif->pItemListWindowSelected,2,4,8);
+ packet(0x088e,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0897,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x08a1,clif->pTickSend,2);
+ packet(0x08a2,clif->pChangeDir,2,4);
+ packet(0x091a,clif->pTakeItem,2);
+ packet(0x0923,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0928,clif->pReqCloseBuyingStore,0);
+ packet(0x0940,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0946,clif->pHomMenu,2,4);
+ packet(0x094e,clif->pDull/*,XXX*/);
+ packet(0x0959,clif->pActionRequest,2,6);
+ packet(0x0960,clif->pStoragePassword,0);
+ packet(0x0968,clif->pReqClickBuyingStore,2);
+ packet(0x0969,clif->pFriendsListAdd,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2014-07-02aRagexe
#if PACKETVER == 20140702
- packet(0x022d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x023b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0364,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0438,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x07e4,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0835,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x086c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0887,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0892,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0895,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x08a0,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x08a2,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0925,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x092c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0933,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0940,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x022d,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x023b,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0364,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pFriendsListAdd,2);
+ packet(0x0438,clif->pMoveToKafra,2,4);
+ packet(0x07e4,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pStoragePassword,0);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pHomMenu,2,4);
+ packet(0x0835,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085a,clif->pDropItem,2,4);
+ packet(0x086c,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0887,clif->pWalkToXY,2);
+ packet(0x0892,clif->pMoveFromKafra,2,4);
+ packet(0x0895,clif->pDull/*,XXX*/);
+ packet(0x08a0,clif->pPartyInvite2,2);
+ packet(0x08a2,clif->pTakeItem,2);
+ packet(0x0925,clif->pChangeDir,2,4);
+ packet(0x092c,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0933,clif->pDull/*,XXX*/);
+ packet(0x0940,clif->pSearchStoreInfoNextPage,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2014-07-09aRagexe
#if PACKETVER == 20140709
- packet(0x0364,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0860,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0866,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0869,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0875,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0877,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0879,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x087a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0887,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0888,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x088b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0894,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0897,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0898,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x08ad,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x091a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0925,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x092f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0931,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0934,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0939,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x093f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0940,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x094d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x094e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x094f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x095f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0961,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0364,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0437,clif->pActionRequest,2,6);
+ packet(0x0860,clif->pStoragePassword,0);
+ packet(0x0866,clif->pDull/*,XXX*/);
+ packet(0x0869,clif->pChangeDir,2,4);
+ packet(0x0875,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0877,clif->pUseSkillToId,2,4,6);
+ packet(0x0879,clif->pGetCharNameRequest,2);
+ packet(0x087a,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0887,clif->pMoveToKafra,2,4);
+ packet(0x0888,clif->pDull/*,XXX*/);
+ packet(0x088b,clif->pPartyInvite2,2);
+ packet(0x0894,clif->pReqCloseBuyingStore,0);
+ packet(0x0897,clif->pReqClickBuyingStore,2);
+ packet(0x0898,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x08ad,clif->pDropItem,2,4);
+ packet(0x091a,clif->pWalkToXY,2);
+ packet(0x0925,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x092f,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0931,clif->pSolveCharName,2);
+ packet(0x0934,clif->pTickSend,2);
+ packet(0x0939,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x093f,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0940,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x094d,clif->pHomMenu,2,4);
+ packet(0x094e,clif->pMoveFromKafra,2,4);
+ packet(0x094f,clif->pFriendsListAdd,2);
+ packet(0x095f,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0961,clif->pTakeItem,2);
#endif
// 2014-07-16aRagexe, 2014-07-16bRagexe, 2014-07-16cRagexe
#if PACKETVER == 20140716
- packet(0x0362,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x07e4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0811,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x085c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x085f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0868,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0871,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0881,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x088b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x088d,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x088f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0896,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x089a,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x089f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x08a2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x08a4,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x08ac,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0918,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x091f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0926,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x092c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x092f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0938,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x093b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0947,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0952,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0958,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0959,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0969,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0362,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x07e4,clif->pStoragePassword,0);
+ packet(0x0811,clif->pActionRequest,2,6);
+ packet(0x085c,clif->pGetCharNameRequest,2);
+ packet(0x085f,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0868,clif->pPartyInvite2,2);
+ packet(0x0871,clif->pMoveToKafra,2,4);
+ packet(0x0881,clif->pUseSkillToId,2,4,6);
+ packet(0x088b,clif->pSearchStoreInfoNextPage,0);
+ packet(0x088d,clif->pDull/*,XXX*/);
+ packet(0x088f,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0896,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x089a,clif->pSolveCharName,2);
+ packet(0x089f,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x08a2,clif->pReqCloseBuyingStore,0);
+ packet(0x08a4,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x08ac,clif->pHomMenu,2,4);
+ packet(0x0918,clif->pWalkToXY,2);
+ packet(0x091f,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0926,clif->pDropItem,2,4);
+ packet(0x092c,clif->pFriendsListAdd,2);
+ packet(0x092f,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0938,clif->pMoveFromKafra,2,4);
+ packet(0x093b,clif->pReqClickBuyingStore,2);
+ packet(0x0947,clif->pDull/*,XXX*/);
+ packet(0x0952,clif->pChangeDir,2,4);
+ packet(0x0958,clif->pTakeItem,2);
+ packet(0x0959,clif->pTickSend,2);
+ packet(0x0969,clif->pItemListWindowSelected,2,4,8);
#endif
// 2014-07-23aRagexe, 2014-07-23bRagexe
#if PACKETVER == 20140723
- packet(0x02c4,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0364,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0368,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0436,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0819,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0838,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x085f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0869,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x086d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x087d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0888,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0891,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0896,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0898,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x089e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x08a2,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x08ad,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0927,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x092f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0934,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0935,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0939,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x093d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0945,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0947,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0948,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x095f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0960,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x02c4,clif->pTickSend,2);
+ packet(0x0364,clif->pStoragePassword,0);
+ packet(0x0368,clif->pGetCharNameRequest,2);
+ packet(0x0436,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0819,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0838,clif->pUseSkillToId,2,4,6);
+ packet(0x085a,clif->pSearchStoreInfoNextPage,0);
+ packet(0x085f,clif->pWalkToXY,2);
+ packet(0x0869,clif->pMoveToKafra,2,4);
+ packet(0x086d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x087d,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0888,clif->pReqClickBuyingStore,2);
+ packet(0x0891,clif->pReqCloseBuyingStore,0);
+ packet(0x0896,clif->pDropItem,2,4);
+ packet(0x0898,clif->pDull/*,XXX*/);
+ packet(0x089e,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x08a2,clif->pMoveFromKafra,2,4);
+ packet(0x08ad,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0927,clif->pSolveCharName,2);
+ packet(0x092f,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0934,clif->pFriendsListAdd,2);
+ packet(0x0935,clif->pPartyInvite2,2);
+ packet(0x0939,clif->pItemListWindowSelected,2,4,8);
+ packet(0x093d,clif->pTakeItem,2);
+ packet(0x0945,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0947,clif->pActionRequest,2,6);
+ packet(0x0948,clif->pHomMenu,2,4);
+ packet(0x095f,clif->pDull/*,XXX*/);
+ packet(0x0960,clif->pChangeDir,2,4);
#endif
// 2014-07-30aRagexe
#if PACKETVER == 20140730
- packet(0x022d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0364,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0366,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0367,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0437,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x07ec,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0802,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0815,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0817,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x085e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x085f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x087d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x087e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x087f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0889,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x088b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x088d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0892,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08a0,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x08a6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x08a7,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x08a9,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x08ad,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x091e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0924,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x092a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0934,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0940,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0946,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x022d,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0364,clif->pGetCharNameRequest,2);
+ packet(0x0366,clif->pUseSkillToId,2,4,6);
+ packet(0x0367,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0437,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x07ec,clif->pDull/*,XXX*/);
+ packet(0x0802,clif->pDull/*,XXX*/);
+ packet(0x0815,clif->pFriendsListAdd,2);
+ packet(0x0817,clif->pActionRequest,2,6);
+ packet(0x085e,clif->pWalkToXY,2);
+ packet(0x085f,clif->pReqCloseBuyingStore,0);
+ packet(0x087d,clif->pMoveFromKafra,2,4);
+ packet(0x087e,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x087f,clif->pDropItem,2,4);
+ packet(0x0889,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x088b,clif->pTickSend,2);
+ packet(0x088d,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0892,clif->pMoveToKafra,2,4);
+ packet(0x08a0,clif->pItemListWindowSelected,2,4,8);
+ packet(0x08a6,clif->pReqClickBuyingStore,2);
+ packet(0x08a7,clif->pSolveCharName,2);
+ packet(0x08a9,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x08ad,clif->pStoragePassword,0);
+ packet(0x091e,clif->pPartyInvite2,2);
+ packet(0x0924,clif->pSearchStoreInfoNextPage,0);
+ packet(0x092a,clif->pTakeItem,2);
+ packet(0x0934,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0940,clif->pChangeDir,2,4);
+ packet(0x0946,clif->pHomMenu,2,4);
#endif
// 2014-08-06aRagexe, 2014-08-06bRagexe
#if PACKETVER == 20140806
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0948,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0948,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2014-08-13aRagexe, 2014-08-13bRagexe, 2014-08-14aRagexe
#if PACKETVER == 20140813 || \
PACKETVER == 20140814
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0365,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0802,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0868,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0878,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x087c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0882,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0895,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0897,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0899,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x08a3,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08a7,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x08ab,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0967,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0365,clif->pStoragePassword,0);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0802,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0868,clif->pHomMenu,2,4);
+ packet(0x0878,clif->pChangeDir,2,4);
+ packet(0x087c,clif->pPartyInvite2,2);
+ packet(0x0882,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0895,clif->pMoveFromKafra,2,4);
+ packet(0x0897,clif->pFriendsListAdd,2);
+ packet(0x0899,clif->pDropItem,2,4);
+ packet(0x08a3,clif->pTakeItem,2);
+ packet(0x08a7,clif->pDull/*,XXX*/);
+ packet(0x08ab,clif->pDull/*,XXX*/);
+ packet(0x0967,clif->pMoveToKafra,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2014-08-20aRagexe
#if PACKETVER == 20140820
- packet(0x035f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0835,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0861,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0864,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0869,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x086c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x086e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0872,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0876,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0891,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0899,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x089a,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x089b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x08a3,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x08a7,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x091d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x092f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0936,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0937,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x093a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x093e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x094a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0951,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0952,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0956,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0958,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0961,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x035f,clif->pReqCloseBuyingStore,0);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0835,clif->pChangeDir,2,4);
+ packet(0x0861,clif->pTickSend,2);
+ packet(0x0864,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0869,clif->pDull/*,XXX*/);
+ packet(0x086c,clif->pItemListWindowSelected,2,4,8);
+ packet(0x086e,clif->pPartyInvite2,2);
+ packet(0x0872,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0876,clif->pDropItem,2,4);
+ packet(0x0891,clif->pGetCharNameRequest,2);
+ packet(0x0899,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x089a,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x089b,clif->pMoveFromKafra,2,4);
+ packet(0x08a3,clif->pWalkToXY,2);
+ packet(0x08a7,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x091d,clif->pSolveCharName,2);
+ packet(0x092f,clif->pUseSkillToId,2,4,6);
+ packet(0x0936,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0937,clif->pHomMenu,2,4);
+ packet(0x093a,clif->pStoragePassword,0);
+ packet(0x093e,clif->pReqClickBuyingStore,2);
+ packet(0x094a,clif->pFriendsListAdd,2);
+ packet(0x0951,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0952,clif->pActionRequest,2,6);
+ packet(0x0956,clif->pMoveToKafra,2,4);
+ packet(0x0958,clif->pDull/*,XXX*/);
+ packet(0x0961,clif->pPartyBookingRegisterReq,2,4);
#endif
// 2014-08-27aRagexe
#if PACKETVER == 20140827
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0943,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0943,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2014-09-03aRagexe
#if PACKETVER == 20140903
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x088f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x089b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0931,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0941,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0943,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0945,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x088f,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x089b,clif->pFriendsListAdd,2);
+ packet(0x0931,clif->pHomMenu,2,4);
+ packet(0x0941,clif->pStoragePassword,0);
+ packet(0x0943,clif->pDull/*,XXX*/);
+ packet(0x0945,clif->pChangeDir,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2014-09-17aRagexe
#if PACKETVER == 20140917
- packet(0x022d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0364,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0365,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0366,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0367,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0838,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0864,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x086d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0889,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0895,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0897,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0898,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x089c,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x08a8,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0919,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x091e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x092a,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0930,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0949,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x094f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0951,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0955,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0956,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0957,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x095a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x095c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x095e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0966,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x022d,clif->pPartyInvite2,2);
+ packet(0x0364,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0365,clif->pMoveToKafra,2,4);
+ packet(0x0366,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0367,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0369,clif->pSolveCharName,2);
+ packet(0x0838,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0864,clif->pTakeItem,2);
+ packet(0x086d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0889,clif->pActionRequest,2,6);
+ packet(0x0895,clif->pHomMenu,2,4);
+ packet(0x0897,clif->pTickSend,2);
+ packet(0x0898,clif->pGetCharNameRequest,2);
+ packet(0x089c,clif->pReqClickBuyingStore,2);
+ packet(0x08a8,clif->pStoragePassword,0);
+ packet(0x0919,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x091e,clif->pReqCloseBuyingStore,0);
+ packet(0x092a,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0930,clif->pMoveFromKafra,2,4);
+ packet(0x0949,clif->pUseSkillToId,2,4,6);
+ packet(0x094f,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0951,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0955,clif->pFriendsListAdd,2);
+ packet(0x0956,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0957,clif->pDull/*,XXX*/);
+ packet(0x095a,clif->pDropItem,2,4);
+ packet(0x095c,clif->pWalkToXY,2);
+ packet(0x095e,clif->pChangeDir,2,4);
+ packet(0x0966,clif->pDull/*,XXX*/);
#endif
// 2014-09-24cRagexe
#if PACKETVER == 20140924
- packet(0x0366,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0367,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x07e4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0815,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0862,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0864,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0865,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0867,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x086b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x086d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x086e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0886,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x088b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0894,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0898,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x089c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08a5,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x08a7,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0918,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x091b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0925,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0926,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0928,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x092b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x092d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0934,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0949,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0952,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0366,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0367,clif->pPartyInvite2,2);
+ packet(0x07e4,clif->pStoragePassword,0);
+ packet(0x0802,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0815,clif->pWalkToXY,2);
+ packet(0x0862,clif->pDull/*,XXX*/);
+ packet(0x0864,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0865,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0867,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x086b,clif->pReqCloseBuyingStore,0);
+ packet(0x086d,clif->pTakeItem,2);
+ packet(0x086e,clif->pHomMenu,2,4);
+ packet(0x0886,clif->pGetCharNameRequest,2);
+ packet(0x088b,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0894,clif->pActionRequest,2,6);
+ packet(0x0898,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x089c,clif->pMoveToKafra,2,4);
+ packet(0x08a5,clif->pSolveCharName,2);
+ packet(0x08a7,clif->pUseSkillToId,2,4,6);
+ packet(0x0918,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x091b,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0925,clif->pDull/*,XXX*/);
+ packet(0x0926,clif->pTickSend,2);
+ packet(0x0928,clif->pMoveFromKafra,2,4);
+ packet(0x092b,clif->pReqClickBuyingStore,2);
+ packet(0x092d,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0934,clif->pChangeDir,2,4);
+ packet(0x0949,clif->pDropItem,2,4);
+ packet(0x0952,clif->pFriendsListAdd,2);
#endif
// 2014-10-01aRagexe
#if PACKETVER == 20141001
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0365,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x087c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0884,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0885,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x089c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x089d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x08ad,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x091c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x092a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0937,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0939,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x093f,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x094b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0952,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pDropItem,2,4);
+ packet(0x0365,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pMoveFromKafra,2,4);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x087c,clif->pMoveToKafra,2,4);
+ packet(0x0884,clif->pPartyInvite2,2);
+ packet(0x0885,clif->pGetCharNameRequest,2);
+ packet(0x089c,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x089d,clif->pFriendsListAdd,2);
+ packet(0x08ad,clif->pChangeDir,2,4);
+ packet(0x091c,clif->pDull/*,XXX*/);
+ packet(0x092a,clif->pStoragePassword,0);
+ packet(0x0937,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0939,clif->pDull/*,XXX*/);
+ packet(0x093f,clif->pTakeItem,2);
+ packet(0x094b,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0952,clif->pHomMenu,2,4);
#endif
// 2014-10-08aRagexe, 2014-10-08bRagexe, 2014-10-08cRagexe, 2014-10-08dRagexe
#if PACKETVER == 20141008
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0942,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0942,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2014-10-15bRagexe, 2014-10-15cRagexe, 2014-10-15dRagexe, 2014-10-16aRagexe
#if PACKETVER == 20141015 || \
PACKETVER == 20141016
- packet(0x022d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x086e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0922,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0936,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x094b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0967,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x022d,clif->pMoveFromKafra,2,4);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pHomMenu,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x086e,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0922,clif->pDull/*,XXX*/);
+ packet(0x0936,clif->pStoragePassword,0);
+ packet(0x094b,clif->pFriendsListAdd,2);
+ packet(0x0967,clif->pChangeDir,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2014-10-22bRagexe
#if PACKETVER == 20141022
- packet(0x023b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0878,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x087d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0896,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0899,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x08aa,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x08ab,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x08ad,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x091a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x092b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x093b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0940,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x094e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0955,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x023b,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pStoragePassword,0);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0878,clif->pMoveToKafra,2,4);
+ packet(0x087d,clif->pDropItem,2,4);
+ packet(0x0896,clif->pPartyInvite2,2);
+ packet(0x0899,clif->pHomMenu,2,4);
+ packet(0x08aa,clif->pMoveFromKafra,2,4);
+ packet(0x08ab,clif->pDull/*,XXX*/);
+ packet(0x08ad,clif->pChangeDir,2,4);
+ packet(0x091a,clif->pFriendsListAdd,2);
+ packet(0x092b,clif->pDull/*,XXX*/);
+ packet(0x093b,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0940,clif->pSearchStoreInfoNextPage,0);
+ packet(0x094e,clif->pTakeItem,2);
+ packet(0x0955,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2014-10-29aRagexe
#if PACKETVER == 20141029
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0940,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pWalkToXY,2);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pStoragePassword,0);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0940,clif->pActionRequest,2,6);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2014-11-05aRagexe, 2014-11-05bRagexe
#if PACKETVER == 20141105
- packet(0x022d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x035f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0360,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x085c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0863,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0864,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0865,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0871,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0874,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0875,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0877,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0879,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0887,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0892,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0898,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x08a0,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x08a5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08a7,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x08ad,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x091d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x091e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x092b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x093e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0944,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0948,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0950,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0957,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x095f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0968,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x022d,clif->pDull/*,XXX*/);
+ packet(0x035f,clif->pUseSkillToId,2,4,6);
+ packet(0x0360,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x085c,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0863,clif->pGetCharNameRequest,2);
+ packet(0x0864,clif->pTickSend,2);
+ packet(0x0865,clif->pFriendsListAdd,2);
+ packet(0x0871,clif->pStoragePassword,0);
+ packet(0x0874,clif->pDull/*,XXX*/);
+ packet(0x0875,clif->pActionRequest,2,6);
+ packet(0x0877,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0879,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0887,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0892,clif->pDropItem,2,4);
+ packet(0x0898,clif->pMoveFromKafra,2,4);
+ packet(0x08a0,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x08a5,clif->pChangeDir,2,4);
+ packet(0x08a7,clif->pReqCloseBuyingStore,0);
+ packet(0x08ad,clif->pMoveToKafra,2,4);
+ packet(0x091d,clif->pSolveCharName,2);
+ packet(0x091e,clif->pReqClickBuyingStore,2);
+ packet(0x092b,clif->pTakeItem,2);
+ packet(0x093e,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0944,clif->pHomMenu,2,4);
+ packet(0x0948,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0950,clif->pPartyInvite2,2);
+ packet(0x0957,clif->pWalkToXY,2);
+ packet(0x095f,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0968,clif->pPartyBookingRegisterReq,2,4);
#endif
// 2014-11-12cRagexe, 2014-11-12dRagexe
#if PACKETVER == 20141112
- packet(0x0362,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0438,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x07e4,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0835,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0838,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x083c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x085f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0863,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0869,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x086c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0871,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0885,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0886,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0887,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x088d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x08a0,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x08a1,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x08ab,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0919,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0926,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0929,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0943,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x094b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x094c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x094f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0955,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x095d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0960,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0962,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0362,clif->pFriendsListAdd,2);
+ packet(0x0438,clif->pSolveCharName,2);
+ packet(0x07e4,clif->pReqCloseBuyingStore,0);
+ packet(0x0835,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0838,clif->pSearchStoreInfoNextPage,0);
+ packet(0x083c,clif->pMoveToKafra,2,4);
+ packet(0x085f,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0863,clif->pUseSkillToId,2,4,6);
+ packet(0x0869,clif->pGetCharNameRequest,2);
+ packet(0x086c,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0871,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0885,clif->pChangeDir,2,4);
+ packet(0x0886,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0887,clif->pPartyInvite2,2);
+ packet(0x088d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x08a0,clif->pWalkToXY,2);
+ packet(0x08a1,clif->pReqClickBuyingStore,2);
+ packet(0x08ab,clif->pStoragePassword,0);
+ packet(0x0919,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0926,clif->pHomMenu,2,4);
+ packet(0x0929,clif->pActionRequest,2,6);
+ packet(0x0943,clif->pDropItem,2,4);
+ packet(0x094b,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x094c,clif->pDull/*,XXX*/);
+ packet(0x094f,clif->pDull/*,XXX*/);
+ packet(0x0955,clif->pMoveFromKafra,2,4);
+ packet(0x095d,clif->pTickSend,2);
+ packet(0x0960,clif->pTakeItem,2);
+ packet(0x0962,clif->pUseSkillToPos,2,4,6,8);
#endif
// 2014-11-19dRagexe
#if PACKETVER == 20141119
- packet(0x0202,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x085a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0861,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0865,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0866,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0872,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0873,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0875,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x087c,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0885,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0887,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0888,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x088d,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0895,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x08a8,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08aa,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0918,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0920,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0921,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0929,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x092f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0933,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0938,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0940,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0941,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0942,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0948,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x094c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0963,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0202,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x085a,clif->pReqClickBuyingStore,2);
+ packet(0x0861,clif->pFriendsListAdd,2);
+ packet(0x0865,clif->pPartyInvite2,2);
+ packet(0x0866,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0872,clif->pActionRequest,2,6);
+ packet(0x0873,clif->pUseSkillToId,2,4,6);
+ packet(0x0875,clif->pGetCharNameRequest,2);
+ packet(0x087c,clif->pSolveCharName,2);
+ packet(0x0885,clif->pDull/*,XXX*/);
+ packet(0x0887,clif->pReqCloseBuyingStore,0);
+ packet(0x0888,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x088d,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0895,clif->pItemListWindowSelected,2,4,8);
+ packet(0x08a8,clif->pTakeItem,2);
+ packet(0x08aa,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0918,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0920,clif->pChangeDir,2,4);
+ packet(0x0921,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0929,clif->pMoveFromKafra,2,4);
+ packet(0x092f,clif->pDull/*,XXX*/);
+ packet(0x0933,clif->pStoragePassword,0);
+ packet(0x0938,clif->pTickSend,2);
+ packet(0x0940,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0941,clif->pMoveToKafra,2,4);
+ packet(0x0942,clif->pHomMenu,2,4);
+ packet(0x0948,clif->pWalkToXY,2);
+ packet(0x094c,clif->pDropItem,2,4);
+ packet(0x0963,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
#endif
// 2014-11-26aRagexe, 2014-11-26bRagexe, 2014-11-26cRagexe, 2014-11-26dRagexe
#if PACKETVER == 20141126
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0367,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0802,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x086e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0871,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0884,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0896,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x08a4,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08ad,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0920,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0942,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x095a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x095b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x095f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0965,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0367,clif->pDull/*,XXX*/);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0802,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x086e,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0871,clif->pMoveFromKafra,2,4);
+ packet(0x0884,clif->pDull/*,XXX*/);
+ packet(0x0896,clif->pItemListWindowSelected,2,4,8);
+ packet(0x08a4,clif->pChangeDir,2,4);
+ packet(0x08ad,clif->pStoragePassword,0);
+ packet(0x0920,clif->pDropItem,2,4);
+ packet(0x0942,clif->pFriendsListAdd,2);
+ packet(0x095a,clif->pTakeItem,2);
+ packet(0x095b,clif->pHomMenu,2,4);
+ packet(0x095f,clif->pMoveToKafra,2,4);
+ packet(0x0965,clif->pPartyInvite2,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2014-12-03aRagexe
#if PACKETVER == 20141203
- packet(0x0202,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0281,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0362,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0367,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0368,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0802,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0861,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x086c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x086d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x086e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x087b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x087e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0880,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0889,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0898,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x089c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x089d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x08a5,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x08aa,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0917,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x091c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x091d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0928,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x092a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0936,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0957,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x095c,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0962,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0202,clif->pSolveCharName,2);
+ packet(0x0281,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0362,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0367,clif->pGetCharNameRequest,2);
+ packet(0x0368,clif->pDull/*,XXX*/);
+ packet(0x0802,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0861,clif->pMoveToKafra,2,4);
+ packet(0x086c,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x086d,clif->pMoveFromKafra,2,4);
+ packet(0x086e,clif->pTakeItem,2);
+ packet(0x087b,clif->pWalkToXY,2);
+ packet(0x087e,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0880,clif->pChangeDir,2,4);
+ packet(0x0889,clif->pFriendsListAdd,2);
+ packet(0x0898,clif->pStoragePassword,0);
+ packet(0x089c,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x089d,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x08a5,clif->pActionRequest,2,6);
+ packet(0x08aa,clif->pDropItem,2,4);
+ packet(0x0917,clif->pSearchStoreInfoNextPage,0);
+ packet(0x091c,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x091d,clif->pPartyInvite2,2);
+ packet(0x0928,clif->pTickSend,2);
+ packet(0x092a,clif->pDull/*,XXX*/);
+ packet(0x0936,clif->pHomMenu,2,4);
+ packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0957,clif->pReqCloseBuyingStore,0);
+ packet(0x095c,clif->pReqClickBuyingStore,2);
+ packet(0x0962,clif->pUseSkillToId,2,4,6);
#endif
// 2014-12-10bRagexe, 2014-12-10cRagexe
#if PACKETVER == 20141210
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x087b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0885,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x08ac,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0917,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0927,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x092b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0947,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0954,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0955,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0958,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0961,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0963,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0967,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pHomMenu,2,4);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pChangeDir,2,4);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x087b,clif->pTakeItem,2);
+ packet(0x0885,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x08ac,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0917,clif->pPartyInvite2,2);
+ packet(0x0927,clif->pDull/*,XXX*/);
+ packet(0x092b,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0947,clif->pDull/*,XXX*/);
+ packet(0x0954,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0955,clif->pMoveFromKafra,2,4);
+ packet(0x0958,clif->pDropItem,2,4);
+ packet(0x0961,clif->pFriendsListAdd,2);
+ packet(0x0963,clif->pStoragePassword,0);
+ packet(0x0967,clif->pMoveToKafra,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2014-12-17aRagexe
#if PACKETVER == 20141217
- packet(0x0360,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x085b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0860,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x086c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0875,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0878,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0879,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0883,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0889,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x088e,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x089f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x08a1,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x08a2,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x08a8,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x08ab,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x08ac,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0919,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x091f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0924,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0930,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0932,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0933,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0936,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0939,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0940,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0944,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0945,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0948,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0960,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0360,clif->pMoveToKafra,2,4);
+ packet(0x085b,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0860,clif->pStoragePassword,0);
+ packet(0x086c,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0875,clif->pMoveFromKafra,2,4);
+ packet(0x0878,clif->pWalkToXY,2);
+ packet(0x0879,clif->pHomMenu,2,4);
+ packet(0x0883,clif->pTakeItem,2);
+ packet(0x0889,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x088e,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x089f,clif->pDropItem,2,4);
+ packet(0x08a1,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x08a2,clif->pDull/*,XXX*/);
+ packet(0x08a8,clif->pPartyInvite2,2);
+ packet(0x08ab,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x08ac,clif->pTickSend,2);
+ packet(0x0919,clif->pChangeDir,2,4);
+ packet(0x091f,clif->pUseSkillToId,2,4,6);
+ packet(0x0924,clif->pActionRequest,2,6);
+ packet(0x0930,clif->pReqCloseBuyingStore,0);
+ packet(0x0932,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0933,clif->pFriendsListAdd,2);
+ packet(0x0936,clif->pGetCharNameRequest,2);
+ packet(0x0939,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0940,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0944,clif->pReqClickBuyingStore,2);
+ packet(0x0945,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0948,clif->pSolveCharName,2);
+ packet(0x0960,clif->pDull/*,XXX*/);
#endif
// 2014-12-24aRagexe
#if PACKETVER == 20141224
- packet(0x0361,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0438,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0835,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x085a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x085e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0865,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0867,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x086c,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0870,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x087a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x087b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x089a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x089b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x08a3,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x08a4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08a8,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x08ac,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0930,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0932,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x093a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0945,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0946,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0949,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x094f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0950,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0953,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0956,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x095b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x095f,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0361,clif->pMoveToKafra,2,4);
+ packet(0x0438,clif->pFriendsListAdd,2);
+ packet(0x0835,clif->pItemListWindowSelected,2,4,8);
+ packet(0x085a,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x085e,clif->pReqCloseBuyingStore,0);
+ packet(0x0865,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0867,clif->pHomMenu,2,4);
+ packet(0x086c,clif->pReqClickBuyingStore,2);
+ packet(0x0870,clif->pChangeDir,2,4);
+ packet(0x087a,clif->pTakeItem,2);
+ packet(0x087b,clif->pDull/*,XXX*/);
+ packet(0x089a,clif->pWalkToXY,2);
+ packet(0x089b,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x08a3,clif->pPartyInvite2,2);
+ packet(0x08a4,clif->pStoragePassword,0);
+ packet(0x08a8,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x08ac,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0930,clif->pDropItem,2,4);
+ packet(0x0932,clif->pDull/*,XXX*/);
+ packet(0x093a,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0945,clif->pTickSend,2);
+ packet(0x0946,clif->pGetCharNameRequest,2);
+ packet(0x0949,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x094f,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0950,clif->pSolveCharName,2);
+ packet(0x0953,clif->pMoveFromKafra,2,4);
+ packet(0x0956,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x095b,clif->pUseSkillToId,2,4,6);
+ packet(0x095f,clif->pActionRequest,2,6);
#endif
// 2014-12-31aRagexe
#if PACKETVER == 20141231
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x086d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x086d,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-01-07aRagexe
#if PACKETVER == 20150107
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x087c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0895,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x092d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0943,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0947,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x087c,clif->pFriendsListAdd,2);
+ packet(0x0895,clif->pStoragePassword,0);
+ packet(0x092d,clif->pHomMenu,2,4);
+ packet(0x0943,clif->pChangeDir,2,4);
+ packet(0x0947,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-01-14aRagexe, 2015-01-14bRagexe, 2015-01-14cRagexe, 2015-01-14dRagexe
#if PACKETVER == 20150114
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0868,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0899,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0946,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0955,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0957,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pUseSkillToId,2,4,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0868,clif->pFriendsListAdd,2);
+ packet(0x0899,clif->pHomMenu,2,4);
+ packet(0x0946,clif->pStoragePassword,0);
+ packet(0x0955,clif->pDull/*,XXX*/);
+ packet(0x0957,clif->pChangeDir,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-01-21aRagexe
#if PACKETVER == 20150121
- packet(0x0281,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x087c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x088b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x089d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x089e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08ab,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0918,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0919,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x091d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0955,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0959,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0963,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0967,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0281,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x087c,clif->pDull/*,XXX*/);
+ packet(0x088b,clif->pFriendsListAdd,2);
+ packet(0x089d,clif->pHomMenu,2,4);
+ packet(0x089e,clif->pChangeDir,2,4);
+ packet(0x08ab,clif->pStoragePassword,0);
+ packet(0x0918,clif->pDull/*,XXX*/);
+ packet(0x0919,clif->pDropItem,2,4);
+ packet(0x091d,clif->pTakeItem,2);
+ packet(0x0955,clif->pMoveToKafra,2,4);
+ packet(0x0959,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0963,clif->pMoveFromKafra,2,4);
+ packet(0x0967,clif->pPartyInvite2,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-01-28aRagexe, 2015-01-29aRagexe, 2015-01-30aRagexe
#if PACKETVER == 20150128 || \
PACKETVER == 20150129 || \
PACKETVER == 20150130
- packet(0x0202,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x023b,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x035f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0365,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0368,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0838,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x085a,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0864,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x086d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0870,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0874,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0875,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0876,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x087d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0888,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x089a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x08ab,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x091f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0927,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0929,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x092d,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0938,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x093a,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0944,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x094d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x094e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0963,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0968,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0202,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x023b,clif->pChangeDir,2,4);
+ packet(0x035f,clif->pReqClickBuyingStore,2);
+ packet(0x0365,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0368,clif->pDull/*,XXX*/);
+ packet(0x0838,clif->pActionRequest,2,6);
+ packet(0x085a,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0864,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x086d,clif->pMoveToKafra,2,4);
+ packet(0x0870,clif->pWalkToXY,2);
+ packet(0x0874,clif->pGetCharNameRequest,2);
+ packet(0x0875,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0876,clif->pHomMenu,2,4);
+ packet(0x087d,clif->pSolveCharName,2);
+ packet(0x0888,clif->pItemListWindowSelected,2,4,8);
+ packet(0x089a,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x08ab,clif->pTakeItem,2);
+ packet(0x091f,clif->pTickSend,2);
+ packet(0x0927,clif->pPartyInvite2,2);
+ packet(0x0929,clif->pStoragePassword,0);
+ packet(0x092d,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0938,clif->pDull/*,XXX*/);
+ packet(0x093a,clif->pUseSkillToId,2,4,6);
+ packet(0x0944,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x094d,clif->pReqCloseBuyingStore,0);
+ packet(0x094e,clif->pMoveFromKafra,2,4);
+ packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0963,clif->pFriendsListAdd,2);
+ packet(0x0968,clif->pDropItem,2,4);
#endif
// 2015-02-04aRagexe
#if PACKETVER == 20150204
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0966,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0966,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-02-11aRagexe
#if PACKETVER == 20150211
- packet(0x023b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0368,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0369,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0436,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0437,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x07e4,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0817,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0819,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0835,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0862,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0863,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0870,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0873,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x087b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x087f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0882,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0883,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0885,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0886,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x089c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x08a0,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x08a4,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x08aa,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0919,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0920,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0944,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0951,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0957,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0958,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x023b,clif->pDull/*,XXX*/);
+ packet(0x0368,clif->pHomMenu,2,4);
+ packet(0x0369,clif->pChangeDir,2,4);
+ packet(0x0436,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0437,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x07e4,clif->pDropItem,2,4);
+ packet(0x0817,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0819,clif->pReqCloseBuyingStore,0);
+ packet(0x0835,clif->pDull/*,XXX*/);
+ packet(0x0862,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0863,clif->pUseSkillToId,2,4,6);
+ packet(0x0870,clif->pTakeItem,2);
+ packet(0x0873,clif->pWalkToXY,2);
+ packet(0x087b,clif->pGetCharNameRequest,2);
+ packet(0x087f,clif->pStoragePassword,0);
+ packet(0x0882,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0883,clif->pMoveFromKafra,2,4);
+ packet(0x0885,clif->pTickSend,2);
+ packet(0x0886,clif->pReqClickBuyingStore,2);
+ packet(0x089c,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x08a0,clif->pFriendsListAdd,2);
+ packet(0x08a4,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x08aa,clif->pActionRequest,2,6);
+ packet(0x0919,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0920,clif->pSolveCharName,2);
+ packet(0x0944,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0951,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0957,clif->pPartyInvite2,2);
+ packet(0x0958,clif->pMoveToKafra,2,4);
#endif
// 2015-02-17aRagexe
#if PACKETVER == 20150217
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085b,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-02-25eRagexe, 2015-02-25fRagexe, 2015-02-25gRagexe, 2015-02-25iRagexe, 2015-02-25jRagexe, 2015-02-26aRagexe
#if PACKETVER == 20150225 || \
PACKETVER == 20150226
- packet(0x02c4,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0362,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0819,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0867,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0885,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0896,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x089b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x089c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08a4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0940,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0946,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0948,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x094f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0952,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0955,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x096a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x02c4,clif->pReqClickBuyingStore,2);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pPartyInvite2,2);
+ packet(0x0362,clif->pReqCloseBuyingStore,0);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pGetCharNameRequest,2);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pTakeItem,2);
+ packet(0x0819,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0867,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0885,clif->pDull/*,XXX*/);
+ packet(0x0896,clif->pItemListWindowSelected,2,4,8);
+ packet(0x089b,clif->pDull/*,XXX*/);
+ packet(0x089c,clif->pMoveToKafra,2,4);
+ packet(0x08a4,clif->pStoragePassword,0);
+ packet(0x0940,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0946,clif->pFriendsListAdd,2);
+ packet(0x0948,clif->pDropItem,2,4);
+ packet(0x094f,clif->pHomMenu,2,4);
+ packet(0x0952,clif->pMoveFromKafra,2,4);
+ packet(0x0955,clif->pChangeDir,2,4);
+ packet(0x096a,clif->pWantToConnection,2,6,10,14,18);
#endif
// 2015-03-04aRagexe
#if PACKETVER == 20150304
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0802,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0862,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x086d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0879,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x087e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0892,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x089a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x093a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0947,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x095d,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0960,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0961,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pTakeItem,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0802,clif->pDull/*,XXX*/);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0862,clif->pMoveFromKafra,2,4);
+ packet(0x086d,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0879,clif->pChangeDir,2,4);
+ packet(0x087e,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0892,clif->pStoragePassword,0);
+ packet(0x089a,clif->pPartyInvite2,2);
+ packet(0x093a,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0947,clif->pMoveToKafra,2,4);
+ packet(0x095d,clif->pDull/*,XXX*/);
+ packet(0x0960,clif->pFriendsListAdd,2);
+ packet(0x0961,clif->pHomMenu,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-03-11aRagexe, 2015-03-11bRagexe
#if PACKETVER == 20150311
- packet(0x023b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0360,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0436,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0438,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0838,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x086a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x086c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x087b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0883,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0886,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0888,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0896,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x08a1,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x08a3,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08a5,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x08a6,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x091c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0928,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x092a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x092e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x093b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0943,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0946,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0957,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0958,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x095b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0963,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0964,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x023b,clif->pHomMenu,2,4);
+ packet(0x0360,clif->pReqCloseBuyingStore,0);
+ packet(0x0436,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0438,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0838,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x086a,clif->pGetCharNameRequest,2);
+ packet(0x086c,clif->pStoragePassword,0);
+ packet(0x087b,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0883,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0886,clif->pWalkToXY,2);
+ packet(0x0888,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0896,clif->pActionRequest,2,6);
+ packet(0x08a1,clif->pUseSkillToId,2,4,6);
+ packet(0x08a3,clif->pTakeItem,2);
+ packet(0x08a5,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x08a6,clif->pFriendsListAdd,2);
+ packet(0x091c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0928,clif->pChangeDir,2,4);
+ packet(0x092a,clif->pDull/*,XXX*/);
+ packet(0x092e,clif->pMoveFromKafra,2,4);
+ packet(0x093b,clif->pPartyInvite2,2);
+ packet(0x0943,clif->pSolveCharName,2);
+ packet(0x0946,clif->pDull/*,XXX*/);
+ packet(0x0957,clif->pReqClickBuyingStore,2);
+ packet(0x0958,clif->pTickSend,2);
+ packet(0x095b,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0963,clif->pDropItem,2,4);
+ packet(0x0964,clif->pMoveToKafra,2,4);
#endif
// 2015-03-18aRagexe, 2015-03-18bRagexe
#if PACKETVER == 20150318
- packet(0x0202,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x023b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0281,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x07e4,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0802,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0811,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0862,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0863,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0873,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0885,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0889,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x088c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x089c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08a4,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x091d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0920,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0927,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0928,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0936,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0937,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0938,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x093a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x093c,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x094c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0951,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0958,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0959,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0960,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0202,clif->pDull/*,XXX*/);
+ packet(0x023b,clif->pTickSend,2);
+ packet(0x0281,clif->pDull/*,XXX*/);
+ packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x07e4,clif->pFriendsListAdd,2);
+ packet(0x0802,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0811,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0862,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0863,clif->pReqClickBuyingStore,2);
+ packet(0x0873,clif->pStoragePassword,0);
+ packet(0x0885,clif->pReqCloseBuyingStore,0);
+ packet(0x0889,clif->pActionRequest,2,6);
+ packet(0x088c,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x089c,clif->pMoveToKafra,2,4);
+ packet(0x08a4,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x091d,clif->pMoveFromKafra,2,4);
+ packet(0x0920,clif->pDropItem,2,4);
+ packet(0x0927,clif->pChangeDir,2,4);
+ packet(0x0928,clif->pTakeItem,2);
+ packet(0x0936,clif->pUseSkillToId,2,4,6);
+ packet(0x0937,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0938,clif->pPartyInvite2,2);
+ packet(0x093a,clif->pWalkToXY,2);
+ packet(0x093c,clif->pSolveCharName,2);
+ packet(0x094c,clif->pHomMenu,2,4);
+ packet(0x0951,clif->pGetCharNameRequest,2);
+ packet(0x0958,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0959,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0960,clif->pPartyBookingRegisterReq,2,4);
#endif
// 2015-03-25aRagexe
#if PACKETVER == 20150325
- packet(0x0202,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0363,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0365,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0438,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0802,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0819,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x085d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x086f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x087c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x087e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0883,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0885,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0891,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0893,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0897,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0899,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x08a1,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x08a7,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0919,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x092c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0931,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0932,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0938,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0940,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0947,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x094a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0950,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0954,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0969,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0202,clif->pPartyInvite2,2);
+ packet(0x0363,clif->pDropItem,2,4);
+ packet(0x0365,clif->pUseSkillToId,2,4,6);
+ packet(0x0438,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0802,clif->pDull/*,XXX*/);
+ packet(0x0819,clif->pReqClickBuyingStore,2);
+ packet(0x085d,clif->pSolveCharName,2);
+ packet(0x086f,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x087c,clif->pMoveToKafra,2,4);
+ packet(0x087e,clif->pChangeDir,2,4);
+ packet(0x0883,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0885,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0891,clif->pGetCharNameRequest,2);
+ packet(0x0893,clif->pDull/*,XXX*/);
+ packet(0x0897,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0899,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x08a1,clif->pActionRequest,2,6);
+ packet(0x08a7,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0919,clif->pStoragePassword,0);
+ packet(0x092c,clif->pTakeItem,2);
+ packet(0x0931,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0932,clif->pWalkToXY,2);
+ packet(0x0938,clif->pHomMenu,2,4);
+ packet(0x0940,clif->pFriendsListAdd,2);
+ packet(0x0947,clif->pReqCloseBuyingStore,0);
+ packet(0x094a,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0950,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0954,clif->pTickSend,2);
+ packet(0x0969,clif->pMoveFromKafra,2,4);
#endif
// 2015-04-01aRagexe
#if PACKETVER == 20150401
- packet(0x0362,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0367,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0437,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x083c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x085e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x086f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0875,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x087e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x088c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x088f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0895,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0898,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x089c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08a5,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x091b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x091c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0922,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0924,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0938,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0939,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x093a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x093b,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x093e,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0946,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0949,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x094b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0953,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x095f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0964,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0362,clif->pActionRequest,2,6);
+ packet(0x0367,clif->pGetCharNameRequest,2);
+ packet(0x0437,clif->pReqClickBuyingStore,2);
+ packet(0x083c,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x085e,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x086f,clif->pWalkToXY,2);
+ packet(0x0875,clif->pItemListWindowSelected,2,4,8);
+ packet(0x087e,clif->pDull/*,XXX*/);
+ packet(0x088c,clif->pDropItem,2,4);
+ packet(0x088f,clif->pTickSend,2);
+ packet(0x0895,clif->pMoveFromKafra,2,4);
+ packet(0x0898,clif->pHomMenu,2,4);
+ packet(0x089c,clif->pStoragePassword,0);
+ packet(0x08a5,clif->pMoveToKafra,2,4);
+ packet(0x091b,clif->pPartyInvite2,2);
+ packet(0x091c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0922,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0924,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0938,clif->pReqCloseBuyingStore,0);
+ packet(0x0939,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x093a,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x093b,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x093e,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0946,clif->pDull/*,XXX*/);
+ packet(0x0949,clif->pTakeItem,2);
+ packet(0x094b,clif->pUseSkillToId,2,4,6);
+ packet(0x0953,clif->pFriendsListAdd,2);
+ packet(0x095f,clif->pSolveCharName,2);
+ packet(0x0964,clif->pChangeDir,2,4);
#endif
// 2015-04-08aRagexe
#if PACKETVER == 20150408
- packet(0x0819,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x085a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x085c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0865,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0868,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x086b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x086e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0878,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x087e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x087f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0888,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0889,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0891,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0898,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x089c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x08a2,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x08a4,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x091b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x091e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0922,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x092a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0946,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x094f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0955,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0957,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0959,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x095e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0963,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0819,clif->pMoveFromKafra,2,4);
+ packet(0x085a,clif->pTickSend,2);
+ packet(0x085c,clif->pUseSkillToId,2,4,6);
+ packet(0x085e,clif->pHomMenu,2,4);
+ packet(0x0865,clif->pActionRequest,2,6);
+ packet(0x0868,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x086b,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x086e,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0878,clif->pPartyInvite2,2);
+ packet(0x087e,clif->pGetCharNameRequest,2);
+ packet(0x087f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0888,clif->pMoveToKafra,2,4);
+ packet(0x0889,clif->pStoragePassword,0);
+ packet(0x0891,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0898,clif->pDropItem,2,4);
+ packet(0x089c,clif->pWalkToXY,2);
+ packet(0x08a2,clif->pSolveCharName,2);
+ packet(0x08a4,clif->pFriendsListAdd,2);
+ packet(0x091b,clif->pDull/*,XXX*/);
+ packet(0x091e,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0922,clif->pChangeDir,2,4);
+ packet(0x092a,clif->pDull/*,XXX*/);
+ packet(0x0946,clif->pReqCloseBuyingStore,0);
+ packet(0x094f,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0955,clif->pReqClickBuyingStore,2);
+ packet(0x0957,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0959,clif->pTakeItem,2);
+ packet(0x095e,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0963,clif->pSearchStoreInfoNextPage,0);
#endif
// 2015-04-15aRagexe
#if PACKETVER == 20150415
- packet(0x0361,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0364,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0366,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0368,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0802,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0817,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0835,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x085e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0863,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0867,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0868,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0869,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x086c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0880,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x088e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0891,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0898,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x08a0,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0922,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x092e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x093c,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x093e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0941,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0946,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x094d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0953,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x095c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0960,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0961,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0361,clif->pMoveToKafra,2,4);
+ packet(0x0364,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0366,clif->pWalkToXY,2);
+ packet(0x0368,clif->pReqClickBuyingStore,2);
+ packet(0x0802,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0817,clif->pTakeItem,2);
+ packet(0x0835,clif->pDropItem,2,4);
+ packet(0x085e,clif->pDull/*,XXX*/);
+ packet(0x0863,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0867,clif->pPartyInvite2,2);
+ packet(0x0868,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0869,clif->pHomMenu,2,4);
+ packet(0x086c,clif->pActionRequest,2,6);
+ packet(0x0880,clif->pDull/*,XXX*/);
+ packet(0x088e,clif->pUseSkillToId,2,4,6);
+ packet(0x0891,clif->pGetCharNameRequest,2);
+ packet(0x0898,clif->pItemListWindowSelected,2,4,8);
+ packet(0x08a0,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0922,clif->pMoveFromKafra,2,4);
+ packet(0x092e,clif->pSolveCharName,2);
+ packet(0x093c,clif->pTickSend,2);
+ packet(0x093e,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0941,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0946,clif->pReqCloseBuyingStore,0);
+ packet(0x094d,clif->pChangeDir,2,4);
+ packet(0x0953,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x095c,clif->pFriendsListAdd,2);
+ packet(0x0960,clif->pStoragePassword,0);
+ packet(0x0961,clif->pPartyBookingRegisterReq,2,4);
#endif
// 2015-04-22aRagexe
#if PACKETVER == 20150422
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0955,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0955,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-04-29aRagexe
#if PACKETVER == 20150429
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0363,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0867,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x086a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0886,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x088f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0894,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0899,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x089f,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x08a6,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x08a8,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x08ad,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0929,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x093d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0943,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0363,clif->pChangeDir,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0867,clif->pStoragePassword,0);
+ packet(0x086a,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0886,clif->pPartyInvite2,2);
+ packet(0x088f,clif->pHomMenu,2,4);
+ packet(0x0894,clif->pDropItem,2,4);
+ packet(0x0899,clif->pMoveToKafra,2,4);
+ packet(0x089f,clif->pItemListWindowSelected,2,4,8);
+ packet(0x08a6,clif->pDull/*,XXX*/);
+ packet(0x08a8,clif->pDull/*,XXX*/);
+ packet(0x08ad,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0929,clif->pMoveFromKafra,2,4);
+ packet(0x093d,clif->pFriendsListAdd,2);
+ packet(0x0943,clif->pTakeItem,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-05-07bRagexe, 2015-05-07cRagexe
#if PACKETVER == 20150507
- packet(0x023b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0864,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0887,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0889,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0924,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x092e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x093b,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0941,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0942,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0953,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0955,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0958,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x023b,clif->pHomMenu,2,4);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pReqCloseBuyingStore,0);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pTakeItem,2);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085a,clif->pMoveToKafra,2,4);
+ packet(0x0864,clif->pPartyInvite2,2);
+ packet(0x0887,clif->pDull/*,XXX*/);
+ packet(0x0889,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0924,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x092e,clif->pItemListWindowSelected,2,4,8);
+ packet(0x093b,clif->pChangeDir,2,4);
+ packet(0x0941,clif->pMoveFromKafra,2,4);
+ packet(0x0942,clif->pDull/*,XXX*/);
+ packet(0x0953,clif->pStoragePassword,0);
+ packet(0x0955,clif->pDropItem,2,4);
+ packet(0x0958,clif->pFriendsListAdd,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-05-13aRagexe
#if PACKETVER == 20150513
- packet(0x022d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x02c4,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0363,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0864,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0879,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0883,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0885,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x08a8,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0923,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0924,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0927,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x094a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0958,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0960,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x022d,clif->pReqCloseBuyingStore,0);
+ packet(0x02c4,clif->pDull/*,XXX*/);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0363,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pHomMenu,2,4);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0864,clif->pMoveFromKafra,2,4);
+ packet(0x0879,clif->pMoveToKafra,2,4);
+ packet(0x0883,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0885,clif->pDropItem,2,4);
+ packet(0x08a8,clif->pFriendsListAdd,2);
+ packet(0x0923,clif->pStoragePassword,0);
+ packet(0x0924,clif->pChangeDir,2,4);
+ packet(0x0927,clif->pDull/*,XXX*/);
+ packet(0x094a,clif->pPartyInvite2,2);
+ packet(0x0958,clif->pTakeItem,2);
+ packet(0x0960,clif->pItemListWindowSelected,2,4,8);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-05-20aRagexe
#if PACKETVER == 20150520
- packet(0x0202,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0361,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0835,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x085e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0865,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0868,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x087d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0880,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0882,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x088c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x089c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x089e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x08a2,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x08ad,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x091c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x091d,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0924,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x092b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0931,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0936,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x093d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0940,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0945,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x094e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x095b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x095f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0960,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0961,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x096a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0202,clif->pTickSend,2);
+ packet(0x0361,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0835,clif->pReqCloseBuyingStore,0);
+ packet(0x085e,clif->pReqClickBuyingStore,2);
+ packet(0x0865,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0868,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x087d,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0880,clif->pPartyInvite2,2);
+ packet(0x0882,clif->pItemListWindowSelected,2,4,8);
+ packet(0x088c,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x089c,clif->pStoragePassword,0);
+ packet(0x089e,clif->pDropItem,2,4);
+ packet(0x08a2,clif->pGetCharNameRequest,2);
+ packet(0x08ad,clif->pChangeDir,2,4);
+ packet(0x091c,clif->pTakeItem,2);
+ packet(0x091d,clif->pActionRequest,2,6);
+ packet(0x0924,clif->pMoveFromKafra,2,4);
+ packet(0x092b,clif->pWalkToXY,2);
+ packet(0x0931,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0936,clif->pUseSkillToId,2,4,6);
+ packet(0x093d,clif->pFriendsListAdd,2);
+ packet(0x0940,clif->pDull/*,XXX*/);
+ packet(0x0945,clif->pSolveCharName,2);
+ packet(0x094e,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x095b,clif->pHomMenu,2,4);
+ packet(0x095f,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0960,clif->pDull/*,XXX*/);
+ packet(0x0961,clif->pMoveToKafra,2,4);
+ packet(0x096a,clif->pPartyBookingRegisterReq,2,4);
#endif
// 2015-05-27aRagexe
#if PACKETVER == 20150527
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x083c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0940,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pUseSkillToId,2,4,6);
+ packet(0x083c,clif->pStoragePassword,0);
+ packet(0x0940,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-06-03aRagexe
#if PACKETVER == 20150603
- packet(0x0361,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0437,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0811,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0819,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0860,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0864,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0867,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x086a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0873,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0877,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0881,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0884,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x088b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0897,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x089a,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x089d,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x089e,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x08a1,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x08ad,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x091b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0922,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x092d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x093b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x093f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0955,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0956,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0960,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0969,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x096a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0361,clif->pPartyInvite2,2);
+ packet(0x0437,clif->pDull/*,XXX*/);
+ packet(0x0811,clif->pChangeDir,2,4);
+ packet(0x0819,clif->pReqClickBuyingStore,2);
+ packet(0x0860,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0864,clif->pFriendsListAdd,2);
+ packet(0x0867,clif->pMoveToKafra,2,4);
+ packet(0x086a,clif->pMoveFromKafra,2,4);
+ packet(0x0873,clif->pActionRequest,2,6);
+ packet(0x0877,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0881,clif->pGetCharNameRequest,2);
+ packet(0x0884,clif->pDull/*,XXX*/);
+ packet(0x088b,clif->pDropItem,2,4);
+ packet(0x0897,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x089a,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x089d,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x089e,clif->pTickSend,2);
+ packet(0x08a1,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x08ad,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x091b,clif->pSolveCharName,2);
+ packet(0x0922,clif->pStoragePassword,0);
+ packet(0x092d,clif->pTakeItem,2);
+ packet(0x093b,clif->pSearchStoreInfoNextPage,0);
+ packet(0x093f,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0955,clif->pHomMenu,2,4);
+ packet(0x0956,clif->pReqCloseBuyingStore,0);
+ packet(0x0960,clif->pUseSkillToId,2,4,6);
+ packet(0x0969,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x096a,clif->pWalkToXY,2);
#endif
// 2015-06-10aRagexe
#if PACKETVER == 20150610
- packet(0x022d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0438,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x07e4,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0835,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0870,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0872,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0877,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x087e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0884,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0885,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0888,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x088c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x088d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x088f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0897,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x08a0,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08ac,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0925,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x092b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x092c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x092e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0932,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x093e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0940,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0946,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0949,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0957,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x095d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0964,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pReqCloseBuyingStore,0);
+ packet(0x0438,clif->pItemListWindowSelected,2,4,8);
+ packet(0x07e4,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0835,clif->pDull/*,XXX*/);
+ packet(0x0870,clif->pPartyInvite2,2);
+ packet(0x0872,clif->pSolveCharName,2);
+ packet(0x0877,clif->pReqClickBuyingStore,2);
+ packet(0x087e,clif->pGetCharNameRequest,2);
+ packet(0x0884,clif->pMoveFromKafra,2,4);
+ packet(0x0885,clif->pHomMenu,2,4);
+ packet(0x0888,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x088c,clif->pMoveToKafra,2,4);
+ packet(0x088d,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x088f,clif->pWalkToXY,2);
+ packet(0x0897,clif->pFriendsListAdd,2);
+ packet(0x08a0,clif->pStoragePassword,0);
+ packet(0x08ac,clif->pDropItem,2,4);
+ packet(0x0925,clif->pTakeItem,2);
+ packet(0x092b,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x092c,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x092e,clif->pDull/*,XXX*/);
+ packet(0x0932,clif->pSearchStoreInfoNextPage,0);
+ packet(0x093e,clif->pActionRequest,2,6);
+ packet(0x0940,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0946,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0949,clif->pUseSkillToId,2,4,6);
+ packet(0x0957,clif->pTickSend,2);
+ packet(0x095d,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0964,clif->pChangeDir,2,4);
#endif
// 2015-06-17aRagexe, 2015-06-18aRagexe
#if PACKETVER == 20150617 || \
PACKETVER == 20150618
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0362,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0363,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0365,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07ec,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0811,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0869,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x086a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x086b,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0870,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x087a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0886,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0894,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0940,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x094e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pTakeItem,2);
+ packet(0x0362,clif->pReqClickBuyingStore,2);
+ packet(0x0363,clif->pStoragePassword,0);
+ packet(0x0365,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07ec,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0811,clif->pDull/*,XXX*/);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0869,clif->pMoveFromKafra,2,4);
+ packet(0x086a,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x086b,clif->pChangeDir,2,4);
+ packet(0x0870,clif->pPartyInvite2,2);
+ packet(0x087a,clif->pMoveToKafra,2,4);
+ packet(0x0886,clif->pHomMenu,2,4);
+ packet(0x0894,clif->pDull/*,XXX*/);
+ packet(0x0940,clif->pDropItem,2,4);
+ packet(0x094e,clif->pFriendsListAdd,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-06-24aRagexe
#if PACKETVER == 20150624
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0365,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0870,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0940,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0941,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0966,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0365,clif->pHomMenu,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0870,clif->pStoragePassword,0);
+ packet(0x0940,clif->pMoveFromKafra,2,4);
+ packet(0x0941,clif->pFriendsListAdd,2);
+ packet(0x0966,clif->pChangeDir,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-07-01bRagexe, 2015-07-02aRagexe
#if PACKETVER == 20150701 || \
PACKETVER == 20150702
- packet(0x023b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0281,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x07e4,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0802,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x086d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x087d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x087e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0883,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x088e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0893,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x08a0,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x08a4,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x08a5,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x08a6,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x08ad,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0919,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0923,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0928,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x092c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x093e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x093f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0946,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x094e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0954,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0956,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0958,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x095f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0960,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0968,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x023b,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0281,clif->pSearchStoreInfoNextPage,0);
+ packet(0x07e4,clif->pMoveFromKafra,2,4);
+ packet(0x0802,clif->pGetCharNameRequest,2);
+ packet(0x086d,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x087d,clif->pTickSend,2);
+ packet(0x087e,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0883,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x088e,clif->pReqCloseBuyingStore,0);
+ packet(0x0893,clif->pDull/*,XXX*/);
+ packet(0x08a0,clif->pDropItem,2,4);
+ packet(0x08a4,clif->pReqClickBuyingStore,2);
+ packet(0x08a5,clif->pPartyInvite2,2);
+ packet(0x08a6,clif->pUseSkillToId,2,4,6);
+ packet(0x08ad,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0919,clif->pStoragePassword,0);
+ packet(0x0923,clif->pDull/*,XXX*/);
+ packet(0x0928,clif->pMoveToKafra,2,4);
+ packet(0x092c,clif->pWalkToXY,2);
+ packet(0x093e,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x093f,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0946,clif->pTakeItem,2);
+ packet(0x094e,clif->pSolveCharName,2);
+ packet(0x0954,clif->pHomMenu,2,4);
+ packet(0x0956,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0958,clif->pActionRequest,2,6);
+ packet(0x095f,clif->pFriendsListAdd,2);
+ packet(0x0960,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0968,clif->pChangeDir,2,4);
#endif
// 2015-07-08cRagexe
#if PACKETVER == 20150708
- packet(0x022d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x02c4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0366,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0368,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085e,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0872,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x087f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0884,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x089d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08a5,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x08ad,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x091f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x092a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x093c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x095b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0962,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x022d,clif->pSolveCharName,2);
+ packet(0x02c4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0366,clif->pPartyInvite2,2);
+ packet(0x0368,clif->pHomMenu,2,4);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085e,clif->pMoveToKafra,2,4);
+ packet(0x0872,clif->pTakeItem,2);
+ packet(0x087f,clif->pDull/*,XXX*/);
+ packet(0x0884,clif->pWalkToXY,2);
+ packet(0x089d,clif->pChangeDir,2,4);
+ packet(0x08a5,clif->pItemListWindowSelected,2,4,8);
+ packet(0x08ad,clif->pStoragePassword,0);
+ packet(0x091f,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x092a,clif->pMoveFromKafra,2,4);
+ packet(0x093c,clif->pFriendsListAdd,2);
+ packet(0x095b,clif->pDropItem,2,4);
+ packet(0x0962,clif->pDull/*,XXX*/);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-07-15aRagexe
#if PACKETVER == 20150715
- packet(0x023b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0362,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0364,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0436,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0437,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0438,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0835,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x083c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x085c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x086f,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0873,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0879,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x087c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x087f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0886,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0895,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0896,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0897,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0899,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x089a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08a4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x08ac,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0917,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x093e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0944,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0950,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0956,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0961,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0965,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x023b,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0362,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0364,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0436,clif->pSolveCharName,2);
+ packet(0x0437,clif->pUseSkillToId,2,4,6);
+ packet(0x0438,clif->pWalkToXY,2);
+ packet(0x0835,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x083c,clif->pActionRequest,2,6);
+ packet(0x085c,clif->pGetCharNameRequest,2);
+ packet(0x086f,clif->pMoveFromKafra,2,4);
+ packet(0x0873,clif->pTickSend,2);
+ packet(0x0879,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x087c,clif->pDropItem,2,4);
+ packet(0x087f,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0886,clif->pDull/*,XXX*/);
+ packet(0x0895,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0896,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0897,clif->pPartyInvite2,2);
+ packet(0x0899,clif->pReqCloseBuyingStore,0);
+ packet(0x089a,clif->pTakeItem,2);
+ packet(0x08a4,clif->pDull/*,XXX*/);
+ packet(0x08ac,clif->pChangeDir,2,4);
+ packet(0x0917,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x093e,clif->pHomMenu,2,4);
+ packet(0x0944,clif->pFriendsListAdd,2);
+ packet(0x0950,clif->pReqClickBuyingStore,2);
+ packet(0x0956,clif->pStoragePassword,0);
+ packet(0x0961,clif->pMoveToKafra,2,4);
+ packet(0x0965,clif->pPartyBookingRegisterReq,2,4);
#endif
// 2015-07-22bRagexe
#if PACKETVER == 20150722
- packet(0x023b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0281,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0360,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0361,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0368,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0436,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0811,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0815,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0817,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0869,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0878,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x087b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x087d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x087e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0880,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0884,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x088d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0899,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x08a8,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0919,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0921,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0925,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x092e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x093c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x093d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x094c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x094f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0951,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0958,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x023b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0281,clif->pGetCharNameRequest,2);
+ packet(0x0360,clif->pActionRequest,2,6);
+ packet(0x0361,clif->pDropItem,2,4);
+ packet(0x0368,clif->pPartyInvite2,2);
+ packet(0x0436,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0811,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0815,clif->pReqCloseBuyingStore,0);
+ packet(0x0817,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0869,clif->pTakeItem,2);
+ packet(0x0878,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x087b,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x087d,clif->pWalkToXY,2);
+ packet(0x087e,clif->pSolveCharName,2);
+ packet(0x0880,clif->pReqClickBuyingStore,2);
+ packet(0x0884,clif->pHomMenu,2,4);
+ packet(0x088d,clif->pTickSend,2);
+ packet(0x0899,clif->pMoveFromKafra,2,4);
+ packet(0x08a8,clif->pChangeDir,2,4);
+ packet(0x0919,clif->pDull/*,XXX*/);
+ packet(0x0921,clif->pMoveToKafra,2,4);
+ packet(0x0925,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x092e,clif->pFriendsListAdd,2);
+ packet(0x093c,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x093d,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x094c,clif->pUseSkillToId,2,4,6);
+ packet(0x094f,clif->pDull/*,XXX*/);
+ packet(0x0951,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0958,clif->pStoragePassword,0);
#endif
// 2015-07-29aRagexe
#if PACKETVER == 20150729
- packet(0x0437,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0438,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x085b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0860,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x086c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x086d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x086e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x086f,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0870,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0880,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0881,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0886,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x089a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x089b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x08a3,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x08a4,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08ac,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x08ad,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0920,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x092b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x092f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x093a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x093f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0940,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x094f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0955,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x095e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0961,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0437,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0438,clif->pHomMenu,2,4);
+ packet(0x085b,clif->pDull/*,XXX*/);
+ packet(0x0860,clif->pTakeItem,2);
+ packet(0x086c,clif->pMoveToKafra,2,4);
+ packet(0x086d,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x086e,clif->pWalkToXY,2);
+ packet(0x086f,clif->pMoveFromKafra,2,4);
+ packet(0x0870,clif->pGetCharNameRequest,2);
+ packet(0x0880,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0881,clif->pActionRequest,2,6);
+ packet(0x0886,clif->pSolveCharName,2);
+ packet(0x089a,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x089b,clif->pFriendsListAdd,2);
+ packet(0x08a3,clif->pDull/*,XXX*/);
+ packet(0x08a4,clif->pChangeDir,2,4);
+ packet(0x08ac,clif->pPartyInvite2,2);
+ packet(0x08ad,clif->pReqClickBuyingStore,2);
+ packet(0x0920,clif->pSearchStoreInfoNextPage,0);
+ packet(0x092b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x092f,clif->pUseSkillToId,2,4,6);
+ packet(0x093a,clif->pTickSend,2);
+ packet(0x093f,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0940,clif->pDropItem,2,4);
+ packet(0x094f,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0955,clif->pItemListWindowSelected,2,4,8);
+ packet(0x095e,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0961,clif->pStoragePassword,0);
+ packet(0x096a,clif->pReqCloseBuyingStore,0);
#endif
// 2015-08-05aRagexe
#if PACKETVER == 20150805
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x088a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x088a,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-08-12aRagexe
#if PACKETVER == 20150812
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x087f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x087f,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-08-19aRagexe
#if PACKETVER == 20150819
- packet(0x0202,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x022d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0281,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x085d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0862,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0865,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0871,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0888,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0919,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x091e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0927,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0940,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0961,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0967,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pItemListWindowSelected,2,4,8);
+ packet(0x022d,clif->pUseSkillToId,2,4,6);
+ packet(0x0281,clif->pTakeItem,2);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x085d,clif->pMoveFromKafra,2,4);
+ packet(0x0862,clif->pDull/*,XXX*/);
+ packet(0x0865,clif->pFriendsListAdd,2);
+ packet(0x0871,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0888,clif->pHomMenu,2,4);
+ packet(0x0919,clif->pMoveToKafra,2,4);
+ packet(0x091e,clif->pStoragePassword,0);
+ packet(0x0927,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0940,clif->pDropItem,2,4);
+ packet(0x0961,clif->pPartyInvite2,2);
+ packet(0x0967,clif->pChangeDir,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-08-26aRagexe, 2015-08-26bRagexe
#if PACKETVER == 20150826
- packet(0x0362,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0368,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0436,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x07ec,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0819,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0861,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0865,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x086b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0870,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x087b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x088b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x088d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0890,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0891,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x08a0,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x08a1,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08a4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08a8,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0924,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0928,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x092e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x093b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0945,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x094f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0951,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0959,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0964,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0968,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0969,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0362,clif->pStoragePassword,0);
+ packet(0x0368,clif->pMoveFromKafra,2,4);
+ packet(0x0436,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x07ec,clif->pActionRequest,2,6);
+ packet(0x0819,clif->pReqClickBuyingStore,2);
+ packet(0x0861,clif->pDull/*,XXX*/);
+ packet(0x0865,clif->pWalkToXY,2);
+ packet(0x086b,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0870,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x087b,clif->pSolveCharName,2);
+ packet(0x088b,clif->pPartyInvite2,2);
+ packet(0x088d,clif->pFriendsListAdd,2);
+ packet(0x0890,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0891,clif->pUseSkillToId,2,4,6);
+ packet(0x08a0,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x08a1,clif->pMoveToKafra,2,4);
+ packet(0x08a4,clif->pTakeItem,2);
+ packet(0x08a8,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0924,clif->pDropItem,2,4);
+ packet(0x0928,clif->pReqCloseBuyingStore,0);
+ packet(0x092e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x093b,clif->pGetCharNameRequest,2);
+ packet(0x0945,clif->pHomMenu,2,4);
+ packet(0x094f,clif->pChangeDir,2,4);
+ packet(0x0951,clif->pTickSend,2);
+ packet(0x0959,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0964,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0968,clif->pDull/*,XXX*/);
+ packet(0x0969,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
#endif
// 2015-09-02aRagexe
#if PACKETVER == 20150902
- packet(0x023b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0360,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0367,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0802,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x083c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x085b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x085d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0863,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x086f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x087b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x087f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0886,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0887,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0889,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x088d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0892,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0897,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0899,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x08a9,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0923,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0928,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x092a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x092d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0941,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0947,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x094f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0953,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x095b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0960,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x023b,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0360,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0367,clif->pTickSend,2);
+ packet(0x0802,clif->pStoragePassword,0);
+ packet(0x083c,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x085b,clif->pActionRequest,2,6);
+ packet(0x085d,clif->pSolveCharName,2);
+ packet(0x0863,clif->pUseSkillToId,2,4,6);
+ packet(0x086f,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x087b,clif->pWalkToXY,2);
+ packet(0x087f,clif->pDull/*,XXX*/);
+ packet(0x0886,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0887,clif->pDull/*,XXX*/);
+ packet(0x0889,clif->pReqCloseBuyingStore,0);
+ packet(0x088d,clif->pMoveFromKafra,2,4);
+ packet(0x0892,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0897,clif->pMoveToKafra,2,4);
+ packet(0x0899,clif->pGetCharNameRequest,2);
+ packet(0x08a9,clif->pDropItem,2,4);
+ packet(0x0923,clif->pFriendsListAdd,2);
+ packet(0x0928,clif->pTakeItem,2);
+ packet(0x092a,clif->pHomMenu,2,4);
+ packet(0x092d,clif->pPartyInvite2,2);
+ packet(0x0941,clif->pChangeDir,2,4);
+ packet(0x0947,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x094f,clif->pReqClickBuyingStore,2);
+ packet(0x0953,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x095b,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0960,clif->pSearchStoreInfoNextPage,0);
#endif
// 2015-09-09aRagexe
#if PACKETVER == 20150909
- packet(0x023b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0361,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0365,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0437,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0861,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0871,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x087b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0883,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0886,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x088f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0895,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0928,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0940,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0941,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x095e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0962,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x096a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x023b,clif->pActionRequest,2,6);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqCloseBuyingStore,0);
+ packet(0x0361,clif->pGetCharNameRequest,2);
+ packet(0x0365,clif->pWalkToXY,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pStoragePassword,0);
+ packet(0x0437,clif->pMoveFromKafra,2,4);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0861,clif->pDull/*,XXX*/);
+ packet(0x0871,clif->pItemListWindowSelected,2,4,8);
+ packet(0x087b,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0883,clif->pTakeItem,2);
+ packet(0x0886,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x088f,clif->pPartyInvite2,2);
+ packet(0x0895,clif->pFriendsListAdd,2);
+ packet(0x0928,clif->pDull/*,XXX*/);
+ packet(0x0940,clif->pReqClickBuyingStore,2);
+ packet(0x0941,clif->pHomMenu,2,4);
+ packet(0x095e,clif->pDropItem,2,4);
+ packet(0x0962,clif->pMoveToKafra,2,4);
+ packet(0x096a,clif->pChangeDir,2,4);
#endif
// 2015-09-16aRagexe, 2015-09-16cRagexe
#if PACKETVER == 20150916
- packet(0x022d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0817,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0835,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x085e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0869,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0873,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0877,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x087f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0881,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x089b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x089c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x089e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x08ac,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0920,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0924,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x092e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x092f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0934,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0936,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0938,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x093e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0941,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0942,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0948,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x094f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x095a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0960,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0961,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0969,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x022d,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0817,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0835,clif->pReqClickBuyingStore,2);
+ packet(0x085e,clif->pMoveFromKafra,2,4);
+ packet(0x0869,clif->pActionRequest,2,6);
+ packet(0x0873,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0877,clif->pWalkToXY,2);
+ packet(0x087f,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0881,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x089b,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x089c,clif->pTakeItem,2);
+ packet(0x089e,clif->pFriendsListAdd,2);
+ packet(0x08ac,clif->pTickSend,2);
+ packet(0x0920,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0924,clif->pPartyInvite2,2);
+ packet(0x092e,clif->pReqCloseBuyingStore,0);
+ packet(0x092f,clif->pDropItem,2,4);
+ packet(0x0934,clif->pMoveToKafra,2,4);
+ packet(0x0936,clif->pChangeDir,2,4);
+ packet(0x0938,clif->pDull/*,XXX*/);
+ packet(0x093e,clif->pUseSkillToId,2,4,6);
+ packet(0x0941,clif->pStoragePassword,0);
+ packet(0x0942,clif->pSolveCharName,2);
+ packet(0x0948,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x094f,clif->pDull/*,XXX*/);
+ packet(0x095a,clif->pGetCharNameRequest,2);
+ packet(0x0960,clif->pHomMenu,2,4);
+ packet(0x0961,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0969,clif->pWantToConnection,2,6,10,14,18);
#endif
// 2015-09-23bRagexe, 2015-09-23cRagexe, 2015-09-23dRagexe, 2015-09-23eRagexe, 2015-09-23fRagexe
#if PACKETVER == 20150923
- packet(0x0361,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x07e4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0817,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x085c,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x085d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0864,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x086e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x086f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0870,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0879,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x087f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0886,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x088e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0892,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0895,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x089b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x089f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08a0,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x08a2,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x08a5,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x08a6,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x091e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x092b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0930,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0936,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x093b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0951,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0961,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0361,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x07e4,clif->pStoragePassword,0);
+ packet(0x0817,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x085c,clif->pSolveCharName,2);
+ packet(0x085d,clif->pFriendsListAdd,2);
+ packet(0x0864,clif->pHomMenu,2,4);
+ packet(0x086e,clif->pReqCloseBuyingStore,0);
+ packet(0x086f,clif->pUseSkillToId,2,4,6);
+ packet(0x0870,clif->pChangeDir,2,4);
+ packet(0x0879,clif->pMoveFromKafra,2,4);
+ packet(0x087f,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0886,clif->pWalkToXY,2);
+ packet(0x088e,clif->pReqClickBuyingStore,2);
+ packet(0x0892,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0895,clif->pDull/*,XXX*/);
+ packet(0x089b,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x089f,clif->pMoveToKafra,2,4);
+ packet(0x08a0,clif->pTickSend,2);
+ packet(0x08a2,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x08a5,clif->pGetCharNameRequest,2);
+ packet(0x08a6,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x091e,clif->pDull/*,XXX*/);
+ packet(0x092b,clif->pTakeItem,2);
+ packet(0x0930,clif->pDropItem,2,4);
+ packet(0x0936,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x093b,clif->pPartyInvite2,2);
+ packet(0x0951,clif->pActionRequest,2,6);
+ packet(0x0961,clif->pItemListWindowSelected,2,4,8);
#endif
// 2015-10-01aRagexe
#if PACKETVER == 20151001
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0960,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0960,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-10-07aRagexe
#if PACKETVER == 20151007
- packet(0x0202,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0862,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x093f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x095f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0961,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0967,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pFriendsListAdd,2);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0862,clif->pDull/*,XXX*/);
+ packet(0x093f,clif->pHomMenu,2,4);
+ packet(0x095f,clif->pChangeDir,2,4);
+ packet(0x0961,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0967,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-10-14bRagexe
#if PACKETVER == 20151014
- packet(0x0202,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0817,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0838,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x085a,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0860,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0863,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0867,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0872,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0874,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0881,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0883,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0884,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0889,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x088e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x089a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x089b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x089f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x08aa,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x091c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x091d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0930,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0934,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0944,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x094f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0956,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x095e,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0961,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0964,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0202,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0817,clif->pFriendsListAdd,2);
+ packet(0x0838,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x085a,clif->pUseSkillToId,2,4,6);
+ packet(0x085c,clif->pActionRequest,2,6);
+ packet(0x0860,clif->pDropItem,2,4);
+ packet(0x0863,clif->pChangeDir,2,4);
+ packet(0x0867,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0872,clif->pHomMenu,2,4);
+ packet(0x0874,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0881,clif->pMoveFromKafra,2,4);
+ packet(0x0883,clif->pTickSend,2);
+ packet(0x0884,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0889,clif->pReqClickBuyingStore,2);
+ packet(0x088e,clif->pDull/*,XXX*/);
+ packet(0x089a,clif->pDull/*,XXX*/);
+ packet(0x089b,clif->pReqCloseBuyingStore,0);
+ packet(0x089f,clif->pWalkToXY,2);
+ packet(0x08aa,clif->pTakeItem,2);
+ packet(0x091c,clif->pPartyInvite2,2);
+ packet(0x091d,clif->pStoragePassword,0);
+ packet(0x0930,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0934,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0944,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x094f,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0956,clif->pSolveCharName,2);
+ packet(0x095e,clif->pMoveToKafra,2,4);
+ packet(0x0961,clif->pGetCharNameRequest,2);
+ packet(0x0964,clif->pWantToConnection,2,6,10,14,18);
#endif
// 2015-10-21aRagexe, 2015-10-22aRagexe
#if PACKETVER == 20151021 || \
PACKETVER == 20151022
- packet(0x023b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x02c4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x086a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x091d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0940,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x023b,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x02c4,clif->pStoragePassword,0);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pMoveToKafra,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pChangeDir,2,4);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x086a,clif->pFriendsListAdd,2);
+ packet(0x091d,clif->pHomMenu,2,4);
+ packet(0x0940,clif->pPartyInvite2,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-10-28cRagexe, 2015-10-28dRagexe, 2015-10-29aRagexe
#if PACKETVER == 20151028 || \
PACKETVER == 20151029
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0860,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0860,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-11-04aRagexe
#if PACKETVER == 20151104
- packet(0x023b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0360,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0363,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0437,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07ec,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0811,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0815,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0886,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0887,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x088b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x088d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x08a3,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x08a5,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0928,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0939,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x093a,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0940,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0964,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x023b,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0360,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0363,clif->pWalkToXY,2);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pReqClickBuyingStore,2);
+ packet(0x0437,clif->pDropItem,2,4);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07ec,clif->pFriendsListAdd,2);
+ packet(0x0811,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0815,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0886,clif->pTickSend,2);
+ packet(0x0887,clif->pGetCharNameRequest,2);
+ packet(0x088b,clif->pMoveToKafra,2,4);
+ packet(0x088d,clif->pHomMenu,2,4);
+ packet(0x08a3,clif->pDull/*,XXX*/);
+ packet(0x08a5,clif->pPartyInvite2,2);
+ packet(0x0928,clif->pChangeDir,2,4);
+ packet(0x0939,clif->pDull/*,XXX*/);
+ packet(0x093a,clif->pItemListWindowSelected,2,4,8,12);
+ packet(0x0940,clif->pStoragePassword,2,4,20);
+ packet(0x0964,clif->pTakeItem,2);
#endif
// 2015-11-11aRagexe, 2015-11-11bRagexe
#if PACKETVER == 20151111
- packet(0x02c4,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0802,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085d,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0862,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0871,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0885,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x089c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0942,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x094a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0958,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0966,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0967,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0969,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x02c4,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pHomMenu,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pMoveToKafra,2,4);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0802,clif->pDull/*,XXX*/);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pPartyInvite2,2);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085d,clif->pItemListWindowSelected,2,4,8,12);
+ packet(0x0862,clif->pDropItem,2,4);
+ packet(0x0871,clif->pFriendsListAdd,2);
+ packet(0x0885,clif->pActionRequest,2,6);
+ packet(0x089c,clif->pChangeDir,2,4);
+ packet(0x0942,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x094a,clif->pTakeItem,2);
+ packet(0x0958,clif->pDull/*,XXX*/);
+ packet(0x0966,clif->pMoveFromKafra,2,4);
+ packet(0x0967,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0969,clif->pStoragePassword,2,4,20);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-11-18aRagexe
#if PACKETVER == 20151118
- packet(0x022d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x035f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0365,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x086b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x088b,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08ab,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0921,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0925,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x092e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x092f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x093c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0943,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0946,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0957,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x095c,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x022d,clif->pTickSend,2);
+ packet(0x035f,clif->pHomMenu,2,4);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0365,clif->pPartyInvite2,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x086b,clif->pMoveToKafra,2,4);
+ packet(0x088b,clif->pStoragePassword,2,4,20);
+ packet(0x08ab,clif->pMoveFromKafra,2,4);
+ packet(0x0921,clif->pFriendsListAdd,2);
+ packet(0x0925,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x092e,clif->pChangeDir,2,4);
+ packet(0x092f,clif->pDull/*,XXX*/);
+ packet(0x093c,clif->pDropItem,2,4);
+ packet(0x0943,clif->pTakeItem,2);
+ packet(0x0946,clif->pItemListWindowSelected,2,4,8,12);
+ packet(0x0957,clif->pDull/*,XXX*/);
+ packet(0x095c,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-11-25bRagexe, 2015-11-25dRagexe
#if PACKETVER == 20151125
- packet(0x0361,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0365,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0366,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0368,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0438,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0802,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0838,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x085e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x085f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0863,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0883,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0884,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0885,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x088c,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x088d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0899,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x089c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x089f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x08a9,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x08ad,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0920,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x092a,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x092e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0939,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x093e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0951,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0956,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0957,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0959,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0361,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0365,clif->pWalkToXY,2);
+ packet(0x0366,clif->pMoveFromKafra,2,4);
+ packet(0x0368,clif->pItemListWindowSelected,2,4,8,12);
+ packet(0x0438,clif->pTakeItem,2);
+ packet(0x0802,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0838,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x085e,clif->pGetCharNameRequest,2);
+ packet(0x085f,clif->pMoveToKafra,2,4);
+ packet(0x0863,clif->pReqCloseBuyingStore,0);
+ packet(0x0883,clif->pChangeDir,2,4);
+ packet(0x0884,clif->pStoragePassword,2,4,20);
+ packet(0x0885,clif->pDull/*,XXX*/);
+ packet(0x088c,clif->pTickSend,2);
+ packet(0x088d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0899,clif->pFriendsListAdd,2);
+ packet(0x089c,clif->pActionRequest,2,6);
+ packet(0x089f,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x08a9,clif->pDropItem,2,4);
+ packet(0x08ad,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0920,clif->pSolveCharName,2);
+ packet(0x092a,clif->pUseSkillToId,2,4,6);
+ packet(0x092e,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0939,clif->pReqClickBuyingStore,2);
+ packet(0x093e,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0951,clif->pHomMenu,2,4);
+ packet(0x0956,clif->pPartyInvite2,2);
+ packet(0x0957,clif->pDull/*,XXX*/);
+ packet(0x0959,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
#endif
// 2015-12-02aRagexe
#if PACKETVER == 20151202
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0870,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8,12);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0870,clif->pStoragePassword,2,4,20);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-12-09aRagexe
#if PACKETVER == 20151209
- packet(0x0365,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x07e4,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x07ec,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0811,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0819,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x085b,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x085d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x085e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0861,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0866,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0875,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x087a,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x087f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x088e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x088f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0894,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x08a1,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0920,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x092d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0930,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0932,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES // -1
- packet(0x093b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0948,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x094a,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0956,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x095c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0961,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0964,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0365,clif->pWalkToXY,2);
+ packet(0x0369,clif->pSolveCharName,2);
+ packet(0x07e4,clif->pPartyInvite2,2);
+ packet(0x07ec,clif->pTakeItem,2);
+ packet(0x0811,clif->pTickSend,2);
+ packet(0x0819,clif->pReqCloseBuyingStore,0);
+ packet(0x085b,clif->pStoragePassword,2,4,20);
+ packet(0x085d,clif->pGetCharNameRequest,2);
+ packet(0x085e,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0861,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0866,clif->pChangeDir,2,4);
+ packet(0x0875,clif->pSearchStoreInfoNextPage,0);
+ packet(0x087a,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x087f,clif->pReqClickBuyingStore,2);
+ packet(0x088e,clif->pUseSkillToId,2,4,6);
+ packet(0x088f,clif->pDull/*,XXX*/);
+ packet(0x0894,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x08a1,clif->pHomMenu,2,4);
+ packet(0x0920,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x092d,clif->pMoveFromKafra,2,4);
+ packet(0x0930,clif->pDropItem,2,4);
+ packet(0x0932,clif->pItemListWindowSelected,2,4,8,12);
+ packet(0x093b,clif->pMoveToKafra,2,4);
+ packet(0x0948,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x094a,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0956,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x095c,clif->pDull/*,XXX*/);
+ packet(0x0961,clif->pActionRequest,2,6);
+ packet(0x0964,clif->pFriendsListAdd,2);
#endif
// 2015-12-16aRagexe
#if PACKETVER == 20151216
- packet(0x022d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0361,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0364,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0436,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x085b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0864,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0865,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x086a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x086e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0870,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0874,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0885,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x088b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x089d,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x089e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x08a2,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x08a9,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08ac,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x091d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0944,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0947,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0949,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0954,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0960,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0966,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0968,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x022d,clif->pChangeDir,2,4);
+ packet(0x0361,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pHomMenu,2,4);
+ packet(0x0364,clif->pDull/*,XXX*/);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0436,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pReqCloseBuyingStore,0);
+ packet(0x085b,clif->pTickSend,2);
+ packet(0x0864,clif->pMoveFromKafra,2,4);
+ packet(0x0865,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x086a,clif->pDull/*,XXX*/);
+ packet(0x086e,clif->pPartyInvite2,2);
+ packet(0x0870,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0874,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0885,clif->pStoragePassword,0);
+ packet(0x088b,clif->pGetCharNameRequest,2);
+ packet(0x089d,clif->pActionRequest,2,6);
+ packet(0x089e,clif->pSolveCharName,2);
+ packet(0x08a2,clif->pWalkToXY,2);
+ packet(0x08a9,clif->pTakeItem,2);
+ packet(0x08ac,clif->pMoveToKafra,2,4);
+ packet(0x091d,clif->pFriendsListAdd,2);
+ packet(0x0944,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0947,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0949,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0954,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0960,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0966,clif->pDropItem,2,4);
+ packet(0x0968,clif->pUseSkillToId,2,4,6);
#endif
// 2015-12-23bRagexe
#if PACKETVER == 20151223
- packet(0x02c4,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0362,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0802,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0815,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0864,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0866,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x086e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0872,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0875,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0876,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0881,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0884,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0886,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x088d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0890,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0891,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0898,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x08aa,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0918,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x091a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x091b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0920,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0923,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0924,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x095e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x095f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0965,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0967,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x02c4,clif->pMoveToKafra,2,4);
+ packet(0x0362,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pTakeItem,2);
+ packet(0x0802,clif->pDull/*,XXX*/);
+ packet(0x0815,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0864,clif->pGetCharNameRequest,2);
+ packet(0x0866,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x086e,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0872,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0875,clif->pUseSkillToId,2,4,6);
+ packet(0x0876,clif->pDropItem,2,4);
+ packet(0x0881,clif->pActionRequest,2,6);
+ packet(0x0884,clif->pMoveFromKafra,2,4);
+ packet(0x0886,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x088d,clif->pHomMenu,2,4);
+ packet(0x0890,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0891,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0898,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x08aa,clif->pPartyInvite2,2);
+ packet(0x0918,clif->pSearchStoreInfoNextPage,0);
+ packet(0x091a,clif->pReqClickBuyingStore,2);
+ packet(0x091b,clif->pFriendsListAdd,2);
+ packet(0x0920,clif->pWalkToXY,2);
+ packet(0x0923,clif->pChangeDir,2,4);
+ packet(0x0924,clif->pTickSend,2);
+ packet(0x095e,clif->pSolveCharName,2);
+ packet(0x095f,clif->pReqCloseBuyingStore,0);
+ packet(0x0965,clif->pStoragePassword,0);
+ packet(0x0967,clif->pSearchStoreInfoListItemClick,2,6,10);
#endif
// 2015-12-30aRagexe
#if PACKETVER == 20151230
- packet(0x02c4,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x07ec,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0861,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0869,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0886,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x088e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0897,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x091d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0923,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x093a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0949,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x094e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x02c4,clif->pMoveToKafra,2,4);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pDull/*,XXX*/);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x07ec,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085b,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0861,clif->pPartyInvite2,2);
+ packet(0x0869,clif->pChangeDir,2,4);
+ packet(0x0886,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x088e,clif->pFriendsListAdd,2);
+ packet(0x0897,clif->pDropItem,2,4);
+ packet(0x091d,clif->pMoveFromKafra,2,4);
+ packet(0x0923,clif->pStoragePassword,0);
+ packet(0x093a,clif->pDull/*,XXX*/);
+ packet(0x0949,clif->pHomMenu,2,4);
+ packet(0x094e,clif->pTakeItem,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-01-06aRagexe
#if PACKETVER == 20160106
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07ec,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0861,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x086a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x086c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0878,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x087a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x087f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0885,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0889,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x088a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0891,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x08a0,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x091d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0940,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07ec,clif->pHomMenu,2,4);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0861,clif->pTakeItem,2);
+ packet(0x086a,clif->pDropItem,2,4);
+ packet(0x086c,clif->pDull/*,XXX*/);
+ packet(0x0878,clif->pStoragePassword,0);
+ packet(0x087a,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x087f,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0885,clif->pMoveToKafra,2,4);
+ packet(0x0889,clif->pChangeDir,2,4);
+ packet(0x088a,clif->pPartyInvite2,2);
+ packet(0x0891,clif->pMoveFromKafra,2,4);
+ packet(0x08a0,clif->pFriendsListAdd,2);
+ packet(0x091d,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0940,clif->pDull/*,XXX*/);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-01-13aRagexe, 2016-01-13bRagexe, 2016-01-13bRagexe_2
#if PACKETVER == 20160113
- packet(0x022d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x023b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x035f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0815,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x085b,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0864,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x086d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0873,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0875,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0888,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x088b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x088c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0892,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0893,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0899,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x089a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x08a0,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x08a6,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08aa,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0919,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x091b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0924,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0930,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0932,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x093c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0941,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x094d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x094f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0967,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x022d,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x023b,clif->pWalkToXY,2);
+ packet(0x035f,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0815,clif->pStoragePassword,0);
+ packet(0x085b,clif->pChangeDir,2,4);
+ packet(0x0864,clif->pReqClickBuyingStore,2);
+ packet(0x086d,clif->pHomMenu,2,4);
+ packet(0x0873,clif->pDull/*,XXX*/);
+ packet(0x0875,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0888,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x088b,clif->pPartyInvite2,2);
+ packet(0x088c,clif->pReqCloseBuyingStore,0);
+ packet(0x0892,clif->pUseSkillToId,2,4,6);
+ packet(0x0893,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0899,clif->pFriendsListAdd,2);
+ packet(0x089a,clif->pActionRequest,2,6);
+ packet(0x08a0,clif->pTickSend,2);
+ packet(0x08a6,clif->pTakeItem,2);
+ packet(0x08aa,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0919,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x091b,clif->pGetCharNameRequest,2);
+ packet(0x0924,clif->pDropItem,2,4);
+ packet(0x0930,clif->pSolveCharName,2);
+ packet(0x0932,clif->pMoveToKafra,2,4);
+ packet(0x093c,clif->pMoveFromKafra,2,4);
+ packet(0x0941,clif->pItemListWindowSelected,2,4,8);
+ packet(0x094d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x094f,clif->pDull/*,XXX*/);
+ packet(0x0967,clif->pReqOpenBuyingStore,2,4,8,9,89);
#endif
// 2016-01-20aRagexe
#if PACKETVER == 20160120
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0865,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0865,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-01-27cRagexe, 2016-01-27dRagexe
#if PACKETVER == 20160127
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0922,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x095a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0961,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085e,clif->pChangeDir,2,4);
+ packet(0x0922,clif->pHomMenu,2,4);
+ packet(0x095a,clif->pStoragePassword,0);
+ packet(0x0961,clif->pFriendsListAdd,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-02-03aRagexe
#if PACKETVER == 20160203
- packet(0x0202,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0437,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0811,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0835,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x086c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0872,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0873,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x088c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0918,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x093e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0940,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0947,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0954,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x095a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x095d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pFriendsListAdd,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0437,clif->pTickSend,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0811,clif->pChangeDir,2,4);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0835,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x086c,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0872,clif->pHomMenu,2,4);
+ packet(0x0873,clif->pStoragePassword,0);
+ packet(0x088c,clif->pDull/*,XXX*/);
+ packet(0x0918,clif->pDull/*,XXX*/);
+ packet(0x093e,clif->pPartyInvite2,2);
+ packet(0x0940,clif->pWalkToXY,2);
+ packet(0x0947,clif->pDropItem,2,4);
+ packet(0x0954,clif->pMoveFromKafra,2,4);
+ packet(0x095a,clif->pTakeItem,2);
+ packet(0x095d,clif->pMoveToKafra,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-02-11aRagexe
#if PACKETVER == 20160211
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x086c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0870,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0886,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pStoragePassword,0);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x086c,clif->pChangeDir,2,4);
+ packet(0x0870,clif->pFriendsListAdd,2);
+ packet(0x0886,clif->pHomMenu,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-02-17aRagexe
#if PACKETVER == 20160217
- packet(0x0202,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x023b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0362,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0365,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0864,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0870,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0873,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x087a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0888,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x088d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x088f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0899,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x08a0,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x08a9,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x08ac,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x08ad,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x091d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0920,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0926,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x092e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x093b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x093e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0941,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x094a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x094f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x095e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0966,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0967,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0969,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0202,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x023b,clif->pReqCloseBuyingStore,0);
+ packet(0x0362,clif->pChangeDir,2,4);
+ packet(0x0365,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0864,clif->pMoveToKafra,2,4);
+ packet(0x0870,clif->pFriendsListAdd,2);
+ packet(0x0873,clif->pHomMenu,2,4);
+ packet(0x087a,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0888,clif->pTickSend,2);
+ packet(0x088d,clif->pReqClickBuyingStore,2);
+ packet(0x088f,clif->pDropItem,2,4);
+ packet(0x0899,clif->pDull/*,XXX*/);
+ packet(0x08a0,clif->pMoveFromKafra,2,4);
+ packet(0x08a9,clif->pPartyInvite2,2);
+ packet(0x08ac,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x08ad,clif->pSearchStoreInfoNextPage,0);
+ packet(0x091d,clif->pWalkToXY,2);
+ packet(0x0920,clif->pActionRequest,2,6);
+ packet(0x0926,clif->pUseSkillToId,2,4,6);
+ packet(0x092e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x093b,clif->pItemListWindowSelected,2,4,8);
+ packet(0x093e,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0941,clif->pTakeItem,2);
+ packet(0x094a,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x094f,clif->pDull/*,XXX*/);
+ packet(0x095e,clif->pStoragePassword,0);
+ packet(0x0966,clif->pGetCharNameRequest,2);
+ packet(0x0967,clif->pSolveCharName,2);
+ packet(0x0969,clif->pReqOpenBuyingStore,2,4,8,9,89);
#endif
// 2016-02-24aRagexe
#if PACKETVER == 20160224
- packet(0x022d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0364,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0436,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0861,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x086b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0884,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0885,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0888,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x08a9,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0920,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0929,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x092f,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0936,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0938,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x094c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0961,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x022d,clif->pPartyInvite2,2);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0364,clif->pUseSkillToId,2,4,6);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pMoveFromKafra,2,4);
+ packet(0x0436,clif->pDropItem,2,4);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pMoveToKafra,2,4);
+ packet(0x0861,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x086b,clif->pDull/*,XXX*/);
+ packet(0x0884,clif->pActionRequest,2,6);
+ packet(0x0885,clif->pReqClickBuyingStore,2);
+ packet(0x0888,clif->pWalkToXY,2);
+ packet(0x08a9,clif->pFriendsListAdd,2);
+ packet(0x0920,clif->pDull/*,XXX*/);
+ packet(0x0929,clif->pChangeDir,2,4);
+ packet(0x092f,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0936,clif->pStoragePassword,0);
+ packet(0x0938,clif->pTakeItem,2);
+ packet(0x094c,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0961,clif->pHomMenu,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-03-02bRagexe
#if PACKETVER == 20160302
- packet(0x022d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0367,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0802,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0819,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x085b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0864,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0865,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0867,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0868,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0873,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0875,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x087a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x087d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0883,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x08a6,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x08a9,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x091a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0927,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x092d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x092f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0945,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x094e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0950,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0957,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x095a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0960,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0961,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0967,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0968,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x022d,clif->pChangeDir,2,4);
+ packet(0x0367,clif->pReqClickBuyingStore,2);
+ packet(0x0802,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0819,clif->pWalkToXY,2);
+ packet(0x085b,clif->pFriendsListAdd,2);
+ packet(0x0864,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0865,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0867,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0868,clif->pHomMenu,2,4);
+ packet(0x0873,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0875,clif->pSearchStoreInfoNextPage,0);
+ packet(0x087a,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x087d,clif->pPartyInvite2,2);
+ packet(0x0883,clif->pUseSkillToId,2,4,6);
+ packet(0x08a6,clif->pReqCloseBuyingStore,0);
+ packet(0x08a9,clif->pMoveFromKafra,2,4);
+ packet(0x091a,clif->pDropItem,2,4);
+ packet(0x0927,clif->pTakeItem,2);
+ packet(0x092d,clif->pDull/*,XXX*/);
+ packet(0x092f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0945,clif->pGetCharNameRequest,2);
+ packet(0x094e,clif->pStoragePassword,0);
+ packet(0x0950,clif->pDull/*,XXX*/);
+ packet(0x0957,clif->pItemListWindowSelected,2,4,8);
+ packet(0x095a,clif->pTickSend,2);
+ packet(0x0960,clif->pMoveToKafra,2,4);
+ packet(0x0961,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0967,clif->pSolveCharName,2);
+ packet(0x0968,clif->pActionRequest,2,6);
#endif
// 2016-03-09cRagexe
#if PACKETVER == 20160309
- packet(0x023b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0281,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0364,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0819,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0838,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x083c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x085a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x085f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0866,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x086a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0873,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x087c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x087e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x089b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x089d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08a7,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x091d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0920,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0922,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0929,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x092a,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x092e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0932,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x094f,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0956,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x095e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x096a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x023b,clif->pDropItem,2,4);
+ packet(0x0281,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pFriendsListAdd,2);
+ packet(0x0364,clif->pStoragePassword,0);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0819,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0838,clif->pWalkToXY,2);
+ packet(0x083c,clif->pPartyInvite2,2);
+ packet(0x085a,clif->pMoveToKafra,2,4);
+ packet(0x085f,clif->pUseSkillToId,2,4,6);
+ packet(0x0866,clif->pSearchStoreInfoNextPage,0);
+ packet(0x086a,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0873,clif->pDull/*,XXX*/);
+ packet(0x087c,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x087e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x089b,clif->pItemListWindowSelected,2,4,8);
+ packet(0x089d,clif->pChangeDir,2,4);
+ packet(0x08a7,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x091d,clif->pGetCharNameRequest,2);
+ packet(0x0920,clif->pMoveFromKafra,2,4);
+ packet(0x0922,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0929,clif->pDull/*,XXX*/);
+ packet(0x092a,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x092e,clif->pReqCloseBuyingStore,0);
+ packet(0x0932,clif->pHomMenu,2,4);
+ packet(0x094f,clif->pActionRequest,2,6);
+ packet(0x0956,clif->pTickSend,2);
+ packet(0x095e,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x096a,clif->pTakeItem,2);
#endif
// 2016-03-16aRagexe, 2016-03-18aRagexe
#if PACKETVER == 20160316 || \
PACKETVER == 20160318
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0922,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0922,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-03-23aRagexe, 2016-03-23bRagexe
#if PACKETVER == 20160323
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0365,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0867,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0869,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x086a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0872,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0878,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0883,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0896,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x089a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x091b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0926,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0927,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0933,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x093c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0365,clif->pFriendsListAdd,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0867,clif->pDull/*,XXX*/);
+ packet(0x0869,clif->pTakeItem,2);
+ packet(0x086a,clif->pMoveFromKafra,2,4);
+ packet(0x0872,clif->pStoragePassword,0);
+ packet(0x0878,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0883,clif->pPartyInvite2,2);
+ packet(0x0896,clif->pItemListWindowSelected,2,4,8);
+ packet(0x089a,clif->pHomMenu,2,4);
+ packet(0x091b,clif->pDull/*,XXX*/);
+ packet(0x0926,clif->pMoveToKafra,2,4);
+ packet(0x0927,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0933,clif->pChangeDir,2,4);
+ packet(0x093c,clif->pDropItem,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-03-30aRagexe, 2016-03-30bRagexe
#if PACKETVER == 20160330
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0365,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0867,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x086d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0878,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x087f,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0889,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x088b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x088d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0918,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0925,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x092a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x092c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0930,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0939,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x093b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0365,clif->pStoragePassword,0);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0867,clif->pPartyInvite2,2);
+ packet(0x086d,clif->pTakeItem,2);
+ packet(0x0878,clif->pDull/*,XXX*/);
+ packet(0x087f,clif->pMoveFromKafra,2,4);
+ packet(0x0889,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x088b,clif->pHomMenu,2,4);
+ packet(0x088d,clif->pDull/*,XXX*/);
+ packet(0x0918,clif->pMoveToKafra,2,4);
+ packet(0x0925,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x092a,clif->pItemListWindowSelected,2,4,8);
+ packet(0x092c,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0930,clif->pChangeDir,2,4);
+ packet(0x0939,clif->pDropItem,2,4);
+ packet(0x093b,clif->pFriendsListAdd,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-04-06aRagexe, 2016-04-06bRagexe
#if PACKETVER == 20160406
- packet(0x0364,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x07e4,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0819,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x085a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x085c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0869,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0877,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0878,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0879,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0884,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0892,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0895,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0898,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x089b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x089e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x08a1,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x08a9,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x08ac,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0927,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x092d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0933,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0934,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0940,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0949,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x094d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0953,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x095d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x095f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0962,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0364,clif->pSolveCharName,2);
+ packet(0x07e4,clif->pDropItem,2,4);
+ packet(0x0819,clif->pSearchStoreInfoNextPage,0);
+ packet(0x085a,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x085c,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0869,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0877,clif->pTakeItem,2);
+ packet(0x0878,clif->pFriendsListAdd,2);
+ packet(0x0879,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0884,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0892,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0895,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0898,clif->pPartyInvite2,2);
+ packet(0x089b,clif->pGetCharNameRequest,2);
+ packet(0x089e,clif->pMoveFromKafra,2,4);
+ packet(0x08a1,clif->pActionRequest,2,6);
+ packet(0x08a9,clif->pReqCloseBuyingStore,0);
+ packet(0x08ac,clif->pDull/*,XXX*/);
+ packet(0x0927,clif->pMoveToKafra,2,4);
+ packet(0x092d,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0933,clif->pChangeDir,2,4);
+ packet(0x0934,clif->pUseSkillToId,2,4,6);
+ packet(0x0940,clif->pTickSend,2);
+ packet(0x0949,clif->pItemListWindowSelected,2,4,8);
+ packet(0x094d,clif->pReqClickBuyingStore,2);
+ packet(0x0953,clif->pStoragePassword,0);
+ packet(0x095d,clif->pHomMenu,2,4);
+ packet(0x095f,clif->pWalkToXY,2);
+ packet(0x0962,clif->pDull/*,XXX*/);
#endif
// 2016-04-14aRagexe, 2016-04-14bRagexe, 2016-04-14bRagexe_2, 2016-04-14cRagexe
#if PACKETVER == 20160414
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0363,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0862,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x087a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0880,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0885,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x089e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0918,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0922,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0927,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0931,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0934,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0945,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0953,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0363,clif->pTakeItem,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0862,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x087a,clif->pDull/*,XXX*/);
+ packet(0x0880,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0885,clif->pMoveFromKafra,2,4);
+ packet(0x089e,clif->pPartyInvite2,2);
+ packet(0x0918,clif->pDull/*,XXX*/);
+ packet(0x0922,clif->pChangeDir,2,4);
+ packet(0x0927,clif->pStoragePassword,0);
+ packet(0x0931,clif->pDropItem,2,4);
+ packet(0x0934,clif->pHomMenu,2,4);
+ packet(0x0945,clif->pFriendsListAdd,2);
+ packet(0x0953,clif->pMoveToKafra,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-04-20cRagexe
#if PACKETVER == 20160420
- packet(0x022d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x02c4,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x035f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0864,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0870,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0872,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0874,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0884,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0888,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x088b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x08a5,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x092f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0935,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x094e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x095c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x022d,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x02c4,clif->pTickSend,2);
+ packet(0x035f,clif->pPartyInvite2,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pHomMenu,2,4);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0864,clif->pTakeItem,2);
+ packet(0x0870,clif->pDull/*,XXX*/);
+ packet(0x0872,clif->pChangeDir,2,4);
+ packet(0x0874,clif->pMoveToKafra,2,4);
+ packet(0x0884,clif->pDropItem,2,4);
+ packet(0x0888,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x088b,clif->pMoveFromKafra,2,4);
+ packet(0x08a5,clif->pStoragePassword,0);
+ packet(0x092f,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0935,clif->pFriendsListAdd,2);
+ packet(0x094e,clif->pItemListWindowSelected,2,4,8);
+ packet(0x095c,clif->pDull/*,XXX*/);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-04-27aRagexe
#if PACKETVER == 20160427
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0835,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0940,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0835,clif->pStoragePassword,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0940,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-05-04aRagexe
#if PACKETVER == 20160504
- packet(0x0202,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0363,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0365,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x083c,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x085f,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x086b,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x087f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0884,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0886,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0887,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x088a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x088d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x088f,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0890,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0893,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0898,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x089d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x08ad,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0918,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0921,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0922,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0924,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x093e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0940,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0941,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0948,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0952,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x095b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0969,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0202,clif->pHomMenu,2,4);
+ packet(0x0363,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0365,clif->pDull/*,XXX*/);
+ packet(0x083c,clif->pSearchStoreInfoNextPage,0);
+ packet(0x085f,clif->pActionRequest,2,6);
+ packet(0x086b,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x087f,clif->pReqCloseBuyingStore,0);
+ packet(0x0884,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0886,clif->pMoveToKafra,2,4);
+ packet(0x0887,clif->pPartyInvite2,2);
+ packet(0x088a,clif->pTakeItem,2);
+ packet(0x088d,clif->pUseSkillToId,2,4,6);
+ packet(0x088f,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0890,clif->pDropItem,2,4);
+ packet(0x0893,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0898,clif->pDull/*,XXX*/);
+ packet(0x089d,clif->pSolveCharName,2);
+ packet(0x08ad,clif->pChangeDir,2,4);
+ packet(0x0918,clif->pTickSend,2);
+ packet(0x0921,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0922,clif->pGetCharNameRequest,2);
+ packet(0x0924,clif->pWalkToXY,2);
+ packet(0x093e,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0940,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0941,clif->pMoveFromKafra,2,4);
+ packet(0x0948,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0952,clif->pFriendsListAdd,2);
+ packet(0x095b,clif->pReqClickBuyingStore,2);
+ packet(0x0969,clif->pStoragePassword,0);
#endif
// 2016-05-11aRagexe
#if PACKETVER == 20160511
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0894,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x089b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0918,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0920,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0940,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085e,clif->pChangeDir,2,4);
+ packet(0x0894,clif->pFriendsListAdd,2);
+ packet(0x089b,clif->pDull/*,XXX*/);
+ packet(0x0918,clif->pHomMenu,2,4);
+ packet(0x0920,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0940,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-05-18aRagexe
#if PACKETVER == 20160518
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x086c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0874,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x089a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08a9,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0928,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x086c,clif->pChangeDir,2,4);
+ packet(0x0874,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x089a,clif->pStoragePassword,0);
+ packet(0x08a9,clif->pFriendsListAdd,2);
+ packet(0x0928,clif->pHomMenu,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-05-25aRagexe, 2016-05-26aRagexe
#if PACKETVER == 20160525 || \
PACKETVER == 20160526
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x085e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0867,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x086a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0899,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x089c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x091d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x092c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0937,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0945,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x094a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x094e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0951,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0956,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085a,clif->pDull/*,XXX*/);
+ packet(0x085e,clif->pDropItem,2,4);
+ packet(0x0867,clif->pHomMenu,2,4);
+ packet(0x086a,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0899,clif->pTakeItem,2);
+ packet(0x089c,clif->pChangeDir,2,4);
+ packet(0x091d,clif->pStoragePassword,0);
+ packet(0x092c,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0937,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0945,clif->pPartyInvite2,2);
+ packet(0x094a,clif->pMoveToKafra,2,4);
+ packet(0x094e,clif->pDull/*,XXX*/);
+ packet(0x0951,clif->pFriendsListAdd,2);
+ packet(0x0956,clif->pMoveFromKafra,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-06-01aRagexe
#if PACKETVER == 20160601
- packet(0x0202,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x02c4,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0863,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0870,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x087d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x088d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x088f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0895,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x08a7,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x08ac,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0924,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x095b,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x095f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0961,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pReqCloseBuyingStore,0);
+ packet(0x02c4,clif->pPartyInvite2,2);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pFriendsListAdd,2);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0863,clif->pTakeItem,2);
+ packet(0x0870,clif->pMoveFromKafra,2,4);
+ packet(0x087d,clif->pItemListWindowSelected,2,4,8);
+ packet(0x088d,clif->pDropItem,2,4);
+ packet(0x088f,clif->pMoveToKafra,2,4);
+ packet(0x0895,clif->pHomMenu,2,4);
+ packet(0x08a7,clif->pDull/*,XXX*/);
+ packet(0x08ac,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0924,clif->pDull/*,XXX*/);
+ packet(0x095b,clif->pChangeDir,2,4);
+ packet(0x095f,clif->pStoragePassword,0);
+ packet(0x0961,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-06-08aRagexe, 2016-06-08bRagexe, 2016-06-09aRagexe
#if PACKETVER == 20160608 || \
PACKETVER == 20160609
- packet(0x022d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x02c4,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x035f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0437,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07ec,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0802,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0885,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0889,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0899,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x089b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x08a6,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x093b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x094d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0958,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x095b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0969,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x022d,clif->pItemListWindowSelected,2,4,8);
+ packet(0x02c4,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x035f,clif->pPartyInvite2,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pWalkToXY,2);
+ packet(0x0437,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07ec,clif->pChangeDir,2,4);
+ packet(0x0802,clif->pTickSend,2);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085c,clif->pDull/*,XXX*/);
+ packet(0x0885,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0889,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0899,clif->pTakeItem,2);
+ packet(0x089b,clif->pHomMenu,2,4);
+ packet(0x08a6,clif->pMoveFromKafra,2,4);
+ packet(0x093b,clif->pDull/*,XXX*/);
+ packet(0x094d,clif->pDropItem,2,4);
+ packet(0x0958,clif->pStoragePassword,0);
+ packet(0x095b,clif->pMoveToKafra,2,4);
+ packet(0x0969,clif->pFriendsListAdd,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-06-15aRagexe
#if PACKETVER == 20160615
- packet(0x0281,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0363,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0364,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0369,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x083c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0866,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0870,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x087d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x087e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x087f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0884,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0887,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0888,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x088a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x088d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0891,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0898,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x092f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x093e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0947,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0948,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x094a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x094b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0954,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0957,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0958,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x095c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x095e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0961,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0281,clif->pFriendsListAdd,2);
+ packet(0x0363,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0364,clif->pStoragePassword,0);
+ packet(0x0369,clif->pHomMenu,2,4);
+ packet(0x083c,clif->pGetCharNameRequest,2);
+ packet(0x0866,clif->pWalkToXY,2);
+ packet(0x0870,clif->pDull/*,XXX*/);
+ packet(0x087d,clif->pSolveCharName,2);
+ packet(0x087e,clif->pTakeItem,2);
+ packet(0x087f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0884,clif->pDull/*,XXX*/);
+ packet(0x0887,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0888,clif->pUseSkillToId,2,4,6);
+ packet(0x088a,clif->pTickSend,2);
+ packet(0x088d,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0891,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0898,clif->pDropItem,2,4);
+ packet(0x092f,clif->pSearchStoreInfoNextPage,0);
+ packet(0x093e,clif->pPartyInvite2,2);
+ packet(0x0947,clif->pReqCloseBuyingStore,0);
+ packet(0x0948,clif->pActionRequest,2,6);
+ packet(0x094a,clif->pReqClickBuyingStore,2);
+ packet(0x094b,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0954,clif->pChangeDir,2,4);
+ packet(0x0957,clif->pMoveToKafra,2,4);
+ packet(0x0958,clif->pMoveFromKafra,2,4);
+ packet(0x095c,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x095e,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0961,clif->pSearchStoreInfoListItemClick,2,6,10);
#endif
// 2016-06-22aRagexe
#if PACKETVER == 20160622
- packet(0x023b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x035f,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0361,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x07e4,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0861,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0865,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0867,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0880,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0887,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0890,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0891,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0892,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x089a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x089e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x08a2,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x08a8,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x091c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x092d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x092f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0936,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0937,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x093b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x093f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0946,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0959,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0965,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0969,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x023b,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x035f,clif->pMoveFromKafra,2,4);
+ packet(0x0361,clif->pPartyInvite2,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x07e4,clif->pHomMenu,2,4);
+ packet(0x0861,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0865,clif->pDull/*,XXX*/);
+ packet(0x0867,clif->pDull/*,XXX*/);
+ packet(0x0880,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0887,clif->pReqCloseBuyingStore,0);
+ packet(0x0890,clif->pFriendsListAdd,2);
+ packet(0x0891,clif->pReqClickBuyingStore,2);
+ packet(0x0892,clif->pSearchStoreInfoNextPage,0);
+ packet(0x089a,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x089e,clif->pActionRequest,2,6);
+ packet(0x08a2,clif->pSolveCharName,2);
+ packet(0x08a8,clif->pStoragePassword,0);
+ packet(0x091c,clif->pTakeItem,2);
+ packet(0x092d,clif->pTickSend,2);
+ packet(0x092f,clif->pUseSkillToId,2,4,6);
+ packet(0x0936,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0937,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x093b,clif->pMoveToKafra,2,4);
+ packet(0x093f,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0946,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0959,clif->pGetCharNameRequest,2);
+ packet(0x0965,clif->pChangeDir,2,4);
+ packet(0x0969,clif->pDropItem,2,4);
#endif
// 2016-06-29aRagexe, 2016-06-30aRagexe
#if PACKETVER == 20160629 || \
PACKETVER == 20160630
- packet(0x0202,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x022d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x035f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0363,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0368,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x085c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x085e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0860,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0861,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0863,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0867,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x086b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0881,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0885,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x088e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0893,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x091e,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0922,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0925,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0926,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x093e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0946,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0948,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x094a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0957,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x095a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0968,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0969,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x096a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0202,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x022d,clif->pWalkToXY,2);
+ packet(0x035f,clif->pDull/*,XXX*/);
+ packet(0x0363,clif->pReqClickBuyingStore,2);
+ packet(0x0368,clif->pItemListWindowSelected,2,4,8);
+ packet(0x085c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x085e,clif->pDull/*,XXX*/);
+ packet(0x0860,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0861,clif->pDropItem,2,4);
+ packet(0x0863,clif->pSolveCharName,2);
+ packet(0x0867,clif->pStoragePassword,0);
+ packet(0x086b,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0881,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0885,clif->pHomMenu,2,4);
+ packet(0x088e,clif->pGetCharNameRequest,2);
+ packet(0x0893,clif->pTickSend,2);
+ packet(0x091e,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0922,clif->pMoveFromKafra,2,4);
+ packet(0x0925,clif->pUseSkillToId,2,4,6);
+ packet(0x0926,clif->pPartyInvite2,2);
+ packet(0x093e,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0946,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0948,clif->pChangeDir,2,4);
+ packet(0x094a,clif->pFriendsListAdd,2);
+ packet(0x0957,clif->pReqCloseBuyingStore,0);
+ packet(0x095a,clif->pActionRequest,2,6);
+ packet(0x0968,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0969,clif->pTakeItem,2);
+ packet(0x096a,clif->pMoveToKafra,2,4);
#endif
// 2016-07-06bRagexe
#if PACKETVER == 20160706
- packet(0x0362,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0436,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x085f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0860,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0869,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x086b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0884,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0886,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0889,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0892,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0899,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x08a4,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x08a5,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x08a8,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0918,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x091b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0924,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0926,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0927,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0929,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x092d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0939,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x093d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0944,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0945,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x094c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0952,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0957,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0958,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0362,clif->pSolveCharName,2);
+ packet(0x0436,clif->pReqClickBuyingStore,2);
+ packet(0x085f,clif->pPartyInvite2,2);
+ packet(0x0860,clif->pActionRequest,2,6);
+ packet(0x0869,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x086b,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0884,clif->pFriendsListAdd,2);
+ packet(0x0886,clif->pDull/*,XXX*/);
+ packet(0x0889,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0892,clif->pHomMenu,2,4);
+ packet(0x0899,clif->pUseSkillToId,2,4,6);
+ packet(0x08a4,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x08a5,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x08a8,clif->pTickSend,2);
+ packet(0x0918,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x091b,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0924,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0926,clif->pChangeDir,2,4);
+ packet(0x0927,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0929,clif->pMoveFromKafra,2,4);
+ packet(0x092d,clif->pWalkToXY,2);
+ packet(0x0939,clif->pMoveToKafra,2,4);
+ packet(0x093d,clif->pDropItem,2,4);
+ packet(0x0944,clif->pDull/*,XXX*/);
+ packet(0x0945,clif->pGetCharNameRequest,2);
+ packet(0x094c,clif->pStoragePassword,0);
+ packet(0x0952,clif->pReqCloseBuyingStore,0);
+ packet(0x0957,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0958,clif->pTakeItem,2);
#endif
// 2016-07-13aRagexe, 2016-07-13bRagexe, 2016-07-13cRagexe, 2016-07-13dRagexe
#if PACKETVER == 20160713
- packet(0x022d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0363,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0364,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0838,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0860,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0865,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0869,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0875,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0877,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x087b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0883,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x088d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0892,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x089a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x089f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x08a2,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x08a4,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x091c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x091d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0921,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0922,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x092c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0931,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0939,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0944,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0945,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0947,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0957,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x095b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x022d,clif->pStoragePassword,0);
+ packet(0x0363,clif->pChangeDir,2,4);
+ packet(0x0364,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0838,clif->pTakeItem,2);
+ packet(0x0860,clif->pReqClickBuyingStore,2);
+ packet(0x0865,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0869,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0875,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0877,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x087b,clif->pTickSend,2);
+ packet(0x0883,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x088d,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0892,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x089a,clif->pPartyInvite2,2);
+ packet(0x089f,clif->pDull/*,XXX*/);
+ packet(0x08a2,clif->pMoveFromKafra,2,4);
+ packet(0x08a4,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x091c,clif->pWalkToXY,2);
+ packet(0x091d,clif->pSolveCharName,2);
+ packet(0x0921,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0922,clif->pHomMenu,2,4);
+ packet(0x092c,clif->pGetCharNameRequest,2);
+ packet(0x0931,clif->pUseSkillToId,2,4,6);
+ packet(0x0939,clif->pFriendsListAdd,2);
+ packet(0x0944,clif->pReqCloseBuyingStore,0);
+ packet(0x0945,clif->pActionRequest,2,6);
+ packet(0x0947,clif->pMoveToKafra,2,4);
+ packet(0x0957,clif->pDropItem,2,4);
+ packet(0x095b,clif->pDull/*,XXX*/);
#endif
// 2016-07-20aRagexe, 2016-07-20bRagexe
#if PACKETVER == 20160720
- packet(0x0362,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0363,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0365,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x07e4,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0838,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x085b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x086a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x086d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x087f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0883,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0887,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0897,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x089a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x089c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x089e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x08a0,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x08aa,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0917,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x091c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x092a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x093b,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x093e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0946,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x094d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0953,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x095b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0960,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0969,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0362,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0363,clif->pUseSkillToId,2,4,6);
+ packet(0x0365,clif->pActionRequest,2,6);
+ packet(0x07e4,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0838,clif->pWalkToXY,2);
+ packet(0x085b,clif->pReqCloseBuyingStore,0);
+ packet(0x086a,clif->pSearchStoreInfoNextPage,0);
+ packet(0x086d,clif->pReqClickBuyingStore,2);
+ packet(0x087f,clif->pDropItem,2,4);
+ packet(0x0883,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0887,clif->pGetCharNameRequest,2);
+ packet(0x0897,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x089a,clif->pStoragePassword,0);
+ packet(0x089c,clif->pHomMenu,2,4);
+ packet(0x089e,clif->pMoveFromKafra,2,4);
+ packet(0x08a0,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x08aa,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0917,clif->pDull/*,XXX*/);
+ packet(0x091c,clif->pTakeItem,2);
+ packet(0x092a,clif->pFriendsListAdd,2);
+ packet(0x093b,clif->pChangeDir,2,4);
+ packet(0x093e,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0946,clif->pTickSend,2);
+ packet(0x094d,clif->pSolveCharName,2);
+ packet(0x0953,clif->pDull/*,XXX*/);
+ packet(0x095b,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0960,clif->pMoveToKafra,2,4);
+ packet(0x0969,clif->pPartyInvite2,2);
#endif
// 2016-07-27aRagexe, 2016-07-27bRagexe
#if PACKETVER == 20160727
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x023b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0362,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0363,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0436,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0438,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x07ec,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0866,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0868,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0869,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0874,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0877,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0883,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0887,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x088e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0891,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x089f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x08a2,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08a4,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x08a7,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x092e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0936,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0941,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0946,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0949,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0951,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x095f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0966,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0969,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x023b,clif->pDull/*,XXX*/);
+ packet(0x0362,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0363,clif->pFriendsListAdd,2);
+ packet(0x0436,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0438,clif->pTickSend,2);
+ packet(0x07ec,clif->pDropItem,2,4);
+ packet(0x0866,clif->pDull/*,XXX*/);
+ packet(0x0868,clif->pPartyInvite2,2);
+ packet(0x0869,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0874,clif->pReqClickBuyingStore,2);
+ packet(0x0877,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0883,clif->pActionRequest,2,6);
+ packet(0x0887,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x088e,clif->pUseSkillToId,2,4,6);
+ packet(0x0891,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x089f,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x08a2,clif->pStoragePassword,0);
+ packet(0x08a4,clif->pSolveCharName,2);
+ packet(0x08a7,clif->pTakeItem,2);
+ packet(0x092e,clif->pWalkToXY,2);
+ packet(0x0936,clif->pHomMenu,2,4);
+ packet(0x0941,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0946,clif->pGetCharNameRequest,2);
+ packet(0x0949,clif->pMoveFromKafra,2,4);
+ packet(0x0951,clif->pMoveToKafra,2,4);
+ packet(0x095f,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0966,clif->pReqCloseBuyingStore,0);
+ packet(0x0969,clif->pItemListWindowSelected,2,4,8);
#endif
// 2016-08-03bRagexe
#if PACKETVER == 20160803
- packet(0x0364,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x085d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0878,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x087f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0881,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0886,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0887,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0888,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x088b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0891,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0895,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x089c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x089e,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x08a1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x091b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0929,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0930,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0932,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0934,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0937,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x093a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x093e,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x093f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0952,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0955,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0956,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0959,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x095a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x096a,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0364,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x085d,clif->pReqClickBuyingStore,2);
+ packet(0x0878,clif->pDull/*,XXX*/);
+ packet(0x087f,clif->pWalkToXY,2);
+ packet(0x0881,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0886,clif->pMoveToKafra,2,4);
+ packet(0x0887,clif->pGetCharNameRequest,2);
+ packet(0x0888,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x088b,clif->pReqCloseBuyingStore,0);
+ packet(0x0891,clif->pChangeDir,2,4);
+ packet(0x0895,clif->pFriendsListAdd,2);
+ packet(0x089c,clif->pDropItem,2,4);
+ packet(0x089e,clif->pSearchStoreInfoNextPage,0);
+ packet(0x08a1,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x091b,clif->pTakeItem,2);
+ packet(0x0929,clif->pStoragePassword,0);
+ packet(0x0930,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0932,clif->pUseSkillToId,2,4,6);
+ packet(0x0934,clif->pActionRequest,2,6);
+ packet(0x0937,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x093a,clif->pDull/*,XXX*/);
+ packet(0x093e,clif->pTickSend,2);
+ packet(0x093f,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0952,clif->pHomMenu,2,4);
+ packet(0x0955,clif->pMoveFromKafra,2,4);
+ packet(0x0956,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0959,clif->pSolveCharName,2);
+ packet(0x095a,clif->pPartyInvite2,2);
+ packet(0x096a,clif->pReqTradeBuyingStore,2,4,8,12);
#endif
// 2016-08-10aRagexe
#if PACKETVER == 20160810
- packet(0x0361,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0819,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0838,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x085d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x085e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x085f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0860,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x086f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0875,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0879,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x087a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0885,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0888,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0890,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x089d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x089f,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x08a9,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x091a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x091b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x091c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0926,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x092b,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x092d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0935,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0943,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x094b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0959,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x095b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0967,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0361,clif->pStoragePassword,0);
+ packet(0x0819,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0838,clif->pPartyInvite2,2);
+ packet(0x085d,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x085e,clif->pDropItem,2,4);
+ packet(0x085f,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0860,clif->pSolveCharName,2);
+ packet(0x086f,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0875,clif->pHomMenu,2,4);
+ packet(0x0879,clif->pReqClickBuyingStore,2);
+ packet(0x087a,clif->pWalkToXY,2);
+ packet(0x0885,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0888,clif->pFriendsListAdd,2);
+ packet(0x0890,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x089d,clif->pChangeDir,2,4);
+ packet(0x089f,clif->pItemListWindowSelected,2,4,8);
+ packet(0x08a9,clif->pMoveToKafra,2,4);
+ packet(0x091a,clif->pTakeItem,2);
+ packet(0x091b,clif->pGetCharNameRequest,2);
+ packet(0x091c,clif->pUseSkillToId,2,4,6);
+ packet(0x0926,clif->pDull/*,XXX*/);
+ packet(0x092b,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x092d,clif->pMoveFromKafra,2,4);
+ packet(0x0935,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0943,clif->pTickSend,2);
+ packet(0x094b,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0959,clif->pReqCloseBuyingStore,0);
+ packet(0x095b,clif->pActionRequest,2,6);
+ packet(0x0967,clif->pDull/*,XXX*/);
#endif
// 2016-08-17aRagexe
#if PACKETVER == 20160817
- packet(0x0364,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0437,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x07e4,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0811,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0819,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x083c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x085c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0867,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x086b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0875,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x087f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0886,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0891,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x089c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x08a5,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08a6,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x08a9,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x08ab,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x08ac,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x08ad,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x091b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0929,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x092d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0930,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0939,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x093c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0957,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0960,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0963,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0364,clif->pReqClickBuyingStore,2);
+ packet(0x0437,clif->pFriendsListAdd,2);
+ packet(0x07e4,clif->pGetCharNameRequest,2);
+ packet(0x0811,clif->pDull/*,XXX*/);
+ packet(0x0819,clif->pTickSend,2);
+ packet(0x083c,clif->pItemListWindowSelected,2,4,8);
+ packet(0x085c,clif->pTakeItem,2);
+ packet(0x0867,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x086b,clif->pSolveCharName,2);
+ packet(0x0875,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x087f,clif->pDropItem,2,4);
+ packet(0x0886,clif->pActionRequest,2,6);
+ packet(0x0891,clif->pUseSkillToId,2,4,6);
+ packet(0x089c,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x08a5,clif->pStoragePassword,0);
+ packet(0x08a6,clif->pPartyInvite2,2);
+ packet(0x08a9,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x08ab,clif->pHomMenu,2,4);
+ packet(0x08ac,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x08ad,clif->pMoveToKafra,2,4);
+ packet(0x091b,clif->pReqCloseBuyingStore,0);
+ packet(0x0929,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x092d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0930,clif->pWalkToXY,2);
+ packet(0x0939,clif->pMoveFromKafra,2,4);
+ packet(0x093c,clif->pDull/*,XXX*/);
+ packet(0x0957,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0960,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0963,clif->pChangeDir,2,4);
#endif
// 2016-08-24aRagexe
#if PACKETVER == 20160824
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0934,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0934,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-08-31aRagexe, 2016-08-31bRagexe
#if PACKETVER == 20160831
- packet(0x022d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0366,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x07ec,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0835,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0865,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x086d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0870,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0874,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0876,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0878,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x087c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x08a8,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x08a9,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0917,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x091b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x092c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x092e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0938,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x093a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0946,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x094a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x094f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0950,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0954,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0957,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x095e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0960,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0964,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0967,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x022d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0366,clif->pDropItem,2,4);
+ packet(0x07ec,clif->pReqClickBuyingStore,2);
+ packet(0x0835,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0865,clif->pWalkToXY,2);
+ packet(0x086d,clif->pReqCloseBuyingStore,0);
+ packet(0x0870,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0874,clif->pPartyInvite2,2);
+ packet(0x0876,clif->pDull/*,XXX*/);
+ packet(0x0878,clif->pActionRequest,2,6);
+ packet(0x087c,clif->pGetCharNameRequest,2);
+ packet(0x08a8,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x08a9,clif->pTickSend,2);
+ packet(0x0917,clif->pStoragePassword,0);
+ packet(0x091b,clif->pDull/*,XXX*/);
+ packet(0x092c,clif->pFriendsListAdd,2);
+ packet(0x092e,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0938,clif->pSearchStoreInfoNextPage,0);
+ packet(0x093a,clif->pHomMenu,2,4);
+ packet(0x0946,clif->pSolveCharName,2);
+ packet(0x094a,clif->pChangeDir,2,4);
+ packet(0x094f,clif->pMoveToKafra,2,4);
+ packet(0x0950,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0954,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0957,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x095e,clif->pMoveFromKafra,2,4);
+ packet(0x0960,clif->pTakeItem,2);
+ packet(0x0964,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0967,clif->pUseSkillToId,2,4,6);
#endif
// 2016-09-07aRagexe
#if PACKETVER == 20160907
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x091c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x091c,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-09-13aRagexe
#if PACKETVER == 20160913
- packet(0x0361,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0817,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x085b,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0865,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0874,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0875,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0879,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x087a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x087b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0887,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0889,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x088e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x088f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0891,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0892,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x089b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x089c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08a5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0928,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0935,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x093a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0949,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x094a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0950,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0952,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0954,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0962,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0963,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0968,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0361,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0817,clif->pMoveToKafra,2,4);
+ packet(0x085b,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0865,clif->pGetCharNameRequest,2);
+ packet(0x0874,clif->pReqClickBuyingStore,2);
+ packet(0x0875,clif->pTickSend,2);
+ packet(0x0879,clif->pDropItem,2,4);
+ packet(0x087a,clif->pDull/*,XXX*/);
+ packet(0x087b,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0887,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0889,clif->pTakeItem,2);
+ packet(0x088e,clif->pUseSkillToId,2,4,6);
+ packet(0x088f,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0891,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0892,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x089b,clif->pMoveFromKafra,2,4);
+ packet(0x089c,clif->pStoragePassword,0);
+ packet(0x08a5,clif->pChangeDir,2,4);
+ packet(0x0928,clif->pFriendsListAdd,2);
+ packet(0x0935,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x093a,clif->pHomMenu,2,4);
+ packet(0x0949,clif->pPartyInvite2,2);
+ packet(0x094a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0950,clif->pActionRequest,2,6);
+ packet(0x0952,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0954,clif->pWalkToXY,2);
+ packet(0x0962,clif->pDull/*,XXX*/);
+ packet(0x0963,clif->pSolveCharName,2);
+ packet(0x0968,clif->pReqCloseBuyingStore,0);
#endif
// 2016-09-21aRagexe
#if PACKETVER == 20160921
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x094a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x094a,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-09-28cRagexe
#if PACKETVER == 20160928
- packet(0x0202,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0366,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0436,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0811,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0838,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0864,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0866,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x086d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0872,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0878,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x087f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0889,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x088e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0897,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x089a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x08a2,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08a9,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0919,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x091e,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0927,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x092d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0944,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x094d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x094e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0953,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0955,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0957,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x095a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0202,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pGetCharNameRequest,2);
+ packet(0x0366,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0436,clif->pReqClickBuyingStore,2);
+ packet(0x0811,clif->pDull/*,XXX*/);
+ packet(0x0838,clif->pPartyInvite2,2);
+ packet(0x0864,clif->pMoveFromKafra,2,4);
+ packet(0x0866,clif->pSearchStoreInfoNextPage,0);
+ packet(0x086d,clif->pDropItem,2,4);
+ packet(0x0872,clif->pHomMenu,2,4);
+ packet(0x0878,clif->pSolveCharName,2);
+ packet(0x087f,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0889,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x088e,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0897,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x089a,clif->pActionRequest,2,6);
+ packet(0x08a2,clif->pStoragePassword,0);
+ packet(0x08a9,clif->pMoveToKafra,2,4);
+ packet(0x0919,clif->pWalkToXY,2);
+ packet(0x091e,clif->pTickSend,2);
+ packet(0x0927,clif->pUseSkillToId,2,4,6);
+ packet(0x092d,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0944,clif->pChangeDir,2,4);
+ packet(0x094d,clif->pReqCloseBuyingStore,0);
+ packet(0x094e,clif->pFriendsListAdd,2);
+ packet(0x0953,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0955,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0957,clif->pTakeItem,2);
+ packet(0x095a,clif->pDull/*,XXX*/);
#endif
// 2016-10-05aRagexe
#if PACKETVER == 20161005
- packet(0x0202,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0838,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0863,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0886,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x088e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0891,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0892,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x089b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x089c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08a0,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08ac,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x08ad,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0918,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0919,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x091e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x092b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0931,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0932,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x093b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0942,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0944,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0945,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x094a,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x094d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0952,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x095a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x095b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0967,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0202,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pActionRequest,2,6);
+ packet(0x0838,clif->pStoragePassword,0);
+ packet(0x0863,clif->pGetCharNameRequest,2);
+ packet(0x0886,clif->pItemListWindowSelected,2,4,8);
+ packet(0x088e,clif->pMoveFromKafra,2,4);
+ packet(0x0891,clif->pChangeDir,2,4);
+ packet(0x0892,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x089b,clif->pPartyInvite2,2);
+ packet(0x089c,clif->pTakeItem,2);
+ packet(0x08a0,clif->pMoveToKafra,2,4);
+ packet(0x08ac,clif->pReqCloseBuyingStore,0);
+ packet(0x08ad,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0918,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0919,clif->pSolveCharName,2);
+ packet(0x091e,clif->pDull/*,XXX*/);
+ packet(0x092b,clif->pTickSend,2);
+ packet(0x0931,clif->pFriendsListAdd,2);
+ packet(0x0932,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x093b,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0942,clif->pDropItem,2,4);
+ packet(0x0944,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0945,clif->pWalkToXY,2);
+ packet(0x094a,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x094d,clif->pHomMenu,2,4);
+ packet(0x0952,clif->pDull/*,XXX*/);
+ packet(0x095a,clif->pReqClickBuyingStore,2);
+ packet(0x095b,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0967,clif->pUseSkillToId,2,4,6);
#endif
// 2016-10-12aRagexe
#if PACKETVER == 20161012
- packet(0x023b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0364,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0365,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0369,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x07ec,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0819,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x085b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x085e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0863,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0868,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x086d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0872,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0875,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0880,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0893,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08a0,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x092d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0936,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0937,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0939,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0943,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0944,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x094f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0951,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x095c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0962,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0966,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0967,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x023b,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0364,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0365,clif->pTickSend,2);
+ packet(0x0369,clif->pPartyInvite2,2);
+ packet(0x07ec,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0819,clif->pFriendsListAdd,2);
+ packet(0x085b,clif->pDull/*,XXX*/);
+ packet(0x085e,clif->pReqCloseBuyingStore,0);
+ packet(0x0863,clif->pActionRequest,2,6);
+ packet(0x0868,clif->pTakeItem,2);
+ packet(0x086d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0872,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0875,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0880,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0893,clif->pMoveToKafra,2,4);
+ packet(0x08a0,clif->pChangeDir,2,4);
+ packet(0x092d,clif->pSolveCharName,2);
+ packet(0x0936,clif->pGetCharNameRequest,2);
+ packet(0x0937,clif->pReqClickBuyingStore,2);
+ packet(0x0939,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0943,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0944,clif->pMoveFromKafra,2,4);
+ packet(0x094f,clif->pDull/*,XXX*/);
+ packet(0x0951,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x095c,clif->pHomMenu,2,4);
+ packet(0x0962,clif->pUseSkillToId,2,4,6);
+ packet(0x0966,clif->pWalkToXY,2);
+ packet(0x0967,clif->pStoragePassword,0);
#endif
// 2016-10-19aRagexe
#if PACKETVER == 20161019
- packet(0x022d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0361,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0889,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0892,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0946,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0963,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x022d,clif->pReqClickBuyingStore,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pHomMenu,2,4);
+ packet(0x0361,clif->pWalkToXY,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pChangeDir,2,4);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0889,clif->pStoragePassword,0);
+ packet(0x0892,clif->pDull/*,XXX*/);
+ packet(0x0946,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0963,clif->pFriendsListAdd,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-10-26bRagexe, 2016-10-26cRagexe
#if PACKETVER == 20161026
- packet(0x0363,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0438,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x085a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x085f,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0861,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0862,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x086a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x086c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x086e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x087a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x087c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x087f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0886,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0891,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0894,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0898,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x091a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x091b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0926,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x092c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x092e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x092f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0930,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x094b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0953,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x095c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x095e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0962,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0363,clif->pStoragePassword,0);
+ packet(0x0438,clif->pWalkToXY,2);
+ packet(0x0802,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x085a,clif->pMoveToKafra,2,4);
+ packet(0x085f,clif->pActionRequest,2,6);
+ packet(0x0861,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0862,clif->pTickSend,2);
+ packet(0x086a,clif->pSearchStoreInfoNextPage,0);
+ packet(0x086c,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x086e,clif->pDull/*,XXX*/);
+ packet(0x087a,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x087c,clif->pDull/*,XXX*/);
+ packet(0x087f,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0886,clif->pDropItem,2,4);
+ packet(0x0891,clif->pReqClickBuyingStore,2);
+ packet(0x0894,clif->pUseSkillToId,2,4,6);
+ packet(0x0898,clif->pFriendsListAdd,2);
+ packet(0x091a,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x091b,clif->pTakeItem,2);
+ packet(0x0926,clif->pSolveCharName,2);
+ packet(0x092c,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x092e,clif->pHomMenu,2,4);
+ packet(0x092f,clif->pReqCloseBuyingStore,0);
+ packet(0x0930,clif->pGetCharNameRequest,2);
+ packet(0x094b,clif->pMoveFromKafra,2,4);
+ packet(0x0953,clif->pPartyInvite2,2);
+ packet(0x095c,clif->pItemListWindowSelected,2,4,8);
+ packet(0x095e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0962,clif->pChangeDir,2,4);
#endif
// 2016-11-02aRagexe, 2016-11-03aRagexe
#if PACKETVER == 20161102 || \
PACKETVER == 20161103
- packet(0x0361,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0367,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0436,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0802,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0838,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x083c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x085f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0869,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x086c,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x086f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0874,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0886,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x088f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0890,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x089f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x08a2,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x08aa,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x091b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0922,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0925,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0928,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x092f,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0936,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0946,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0949,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x095e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0964,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0965,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0966,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0361,clif->pMoveFromKafra,2,4);
+ packet(0x0367,clif->pDull/*,XXX*/);
+ packet(0x0436,clif->pActionRequest,2,6);
+ packet(0x0802,clif->pTakeItem,2);
+ packet(0x0838,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x083c,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x085f,clif->pUseSkillToId,2,4,6);
+ packet(0x0869,clif->pMoveToKafra,2,4);
+ packet(0x086c,clif->pSearchStoreInfoNextPage,0);
+ packet(0x086f,clif->pDull/*,XXX*/);
+ packet(0x0874,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0886,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x088f,clif->pHomMenu,2,4);
+ packet(0x0890,clif->pDropItem,2,4);
+ packet(0x089f,clif->pPartyInvite2,2);
+ packet(0x08a2,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x08aa,clif->pWalkToXY,2);
+ packet(0x091b,clif->pStoragePassword,0);
+ packet(0x0922,clif->pReqClickBuyingStore,2);
+ packet(0x0925,clif->pSolveCharName,2);
+ packet(0x0928,clif->pFriendsListAdd,2);
+ packet(0x092f,clif->pGetCharNameRequest,2);
+ packet(0x0936,clif->pReqCloseBuyingStore,0);
+ packet(0x0946,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0949,clif->pChangeDir,2,4);
+ packet(0x095e,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0964,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0965,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0966,clif->pTickSend,2);
#endif
// 2016-11-09aRagexe, 2016-11-09bRagexe
#if PACKETVER == 20161109
- packet(0x02c4,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0361,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0362,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0366,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x085d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x085e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0865,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x086a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x086d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0870,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0876,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x087a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0881,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x088e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0891,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0898,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x089a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x089d,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x089f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x08a7,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x08ad,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0927,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0937,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x093c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x093f,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0954,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0956,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x02c4,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0361,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0362,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pTickSend,2);
+ packet(0x0366,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSolveCharName,2);
+ packet(0x085d,clif->pReqCloseBuyingStore,0);
+ packet(0x085e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0865,clif->pWalkToXY,2);
+ packet(0x086a,clif->pActionRequest,2,6);
+ packet(0x086d,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0870,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0876,clif->pReqClickBuyingStore,2);
+ packet(0x087a,clif->pDull/*,XXX*/);
+ packet(0x0881,clif->pMoveToKafra,2,4);
+ packet(0x088e,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0891,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0898,clif->pTakeItem,2);
+ packet(0x089a,clif->pDropItem,2,4);
+ packet(0x089d,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x089f,clif->pDull/*,XXX*/);
+ packet(0x08a7,clif->pHomMenu,2,4);
+ packet(0x08ad,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0927,clif->pPartyInvite2,2);
+ packet(0x0937,clif->pFriendsListAdd,2);
+ packet(0x093c,clif->pStoragePassword,0);
+ packet(0x093f,clif->pGetCharNameRequest,2);
+ packet(0x0954,clif->pUseSkillToId,2,4,6);
+ packet(0x0956,clif->pChangeDir,2,4);
#endif
// 2016-11-16aRagexe
#if PACKETVER == 20161116
- packet(0x0368,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0369,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0835,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x085f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0864,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x086f,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0885,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x088b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x088d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x088f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0890,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0892,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0893,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x08a1,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08a2,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x08aa,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x08ac,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0920,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0925,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x092a,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0931,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x093c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x094a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0952,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0957,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x095b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x095d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x095f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0967,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0368,clif->pTickSend,2);
+ packet(0x0369,clif->pMoveToKafra,2,4);
+ packet(0x0835,clif->pFriendsListAdd,2);
+ packet(0x085f,clif->pDropItem,2,4);
+ packet(0x0864,clif->pPartyInvite2,2);
+ packet(0x086f,clif->pTakeItem,2);
+ packet(0x0885,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x088b,clif->pHomMenu,2,4);
+ packet(0x088d,clif->pReqClickBuyingStore,2);
+ packet(0x088f,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0890,clif->pWalkToXY,2);
+ packet(0x0892,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0893,clif->pActionRequest,2,6);
+ packet(0x08a1,clif->pChangeDir,2,4);
+ packet(0x08a2,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x08aa,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x08ac,clif->pMoveFromKafra,2,4);
+ packet(0x0920,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0925,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x092a,clif->pUseSkillToId,2,4,6);
+ packet(0x0931,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x093c,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x094a,clif->pGetCharNameRequest,2);
+ packet(0x0952,clif->pReqCloseBuyingStore,0);
+ packet(0x0957,clif->pSolveCharName,2);
+ packet(0x095b,clif->pStoragePassword,0);
+ packet(0x095d,clif->pDull/*,XXX*/);
+ packet(0x095f,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0967,clif->pDull/*,XXX*/);
#endif
// 2016-11-23aRagexe
#if PACKETVER == 20161123
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0362,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0437,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x085c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0861,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0862,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0866,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x086f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0871,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x087f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0880,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0882,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x088b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x089c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08a9,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x08aa,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x091a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0926,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x092a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x092f,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0930,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0941,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x094d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x094f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x095a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x095b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0962,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x096a,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0362,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0437,clif->pTickSend,2);
+ packet(0x085c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0861,clif->pWalkToXY,2);
+ packet(0x0862,clif->pReqCloseBuyingStore,0);
+ packet(0x0866,clif->pSearchStoreInfoNextPage,0);
+ packet(0x086f,clif->pDropItem,2,4);
+ packet(0x0871,clif->pDull/*,XXX*/);
+ packet(0x087f,clif->pPartyInvite2,2);
+ packet(0x0880,clif->pStoragePassword,0);
+ packet(0x0882,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x088b,clif->pGetCharNameRequest,2);
+ packet(0x089c,clif->pChangeDir,2,4);
+ packet(0x08a9,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x08aa,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x091a,clif->pMoveToKafra,2,4);
+ packet(0x0926,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x092a,clif->pReqClickBuyingStore,2);
+ packet(0x092f,clif->pTakeItem,2);
+ packet(0x0930,clif->pHomMenu,2,4);
+ packet(0x0941,clif->pFriendsListAdd,2);
+ packet(0x094d,clif->pUseSkillToId,2,4,6);
+ packet(0x094f,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x095a,clif->pDull/*,XXX*/);
+ packet(0x095b,clif->pActionRequest,2,6);
+ packet(0x0962,clif->pMoveFromKafra,2,4);
+ packet(0x096a,clif->pSolveCharName,2);
#endif
// 2016-11-30aRagexe, 2016-11-30bRagexe
#if PACKETVER == 20161130
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x088f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0931,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0943,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0954,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0959,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pChangeDir,2,4);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pTickSend,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x088f,clif->pDull/*,XXX*/);
+ packet(0x0931,clif->pHomMenu,2,4);
+ packet(0x0943,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0954,clif->pStoragePassword,0);
+ packet(0x0959,clif->pFriendsListAdd,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-12-07cRagexe, 2016-12-07eRagexe
#if PACKETVER == 20161207
- packet(0x023b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0867,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0868,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0875,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x087e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0886,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x08a1,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08a2,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08ad,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0918,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x091d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0943,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x095d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0965,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x023b,clif->pHomMenu,2,4);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0867,clif->pFriendsListAdd,2);
+ packet(0x0868,clif->pDull/*,XXX*/);
+ packet(0x0875,clif->pMoveToKafra,2,4);
+ packet(0x087e,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0886,clif->pActionRequest,2,6);
+ packet(0x08a1,clif->pChangeDir,2,4);
+ packet(0x08a2,clif->pTakeItem,2);
+ packet(0x08ad,clif->pDropItem,2,4);
+ packet(0x0918,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x091d,clif->pMoveFromKafra,2,4);
+ packet(0x0943,clif->pDull/*,XXX*/);
+ packet(0x095d,clif->pStoragePassword,0);
+ packet(0x0965,clif->pPartyInvite2,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-12-14bRagexe, 2016-12-14cRagexe
#if PACKETVER == 20161214
- packet(0x022d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0281,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x02c4,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0436,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0862,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x086d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0887,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0895,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0899,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08a6,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x092e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x093d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x022d,clif->pReqClickBuyingStore,2);
+ packet(0x0281,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x02c4,clif->pMoveFromKafra,2,4);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pHomMenu,2,4);
+ packet(0x0364,clif->pMoveToKafra,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0436,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pDull/*,XXX*/);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085a,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0862,clif->pFriendsListAdd,2);
+ packet(0x086d,clif->pPartyInvite2,2);
+ packet(0x0887,clif->pDropItem,2,4);
+ packet(0x0895,clif->pDull/*,XXX*/);
+ packet(0x0899,clif->pStoragePassword,0);
+ packet(0x08a6,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x092e,clif->pTakeItem,2);
+ packet(0x093d,clif->pChangeDir,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-12-21aRagexe, 2016-12-21bRagexe
#if PACKETVER == 20161221
- packet(0x035f,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0366,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0438,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0817,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x085b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0866,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0876,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0881,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0884,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0885,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x088c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0890,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0899,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x089a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x089b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x08aa,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x091e,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0926,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0928,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x092c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x092e,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0930,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0943,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0946,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x094b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x095a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0964,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0965,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x035f,clif->pTakeItem,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0366,clif->pSolveCharName,2);
+ packet(0x0438,clif->pWalkToXY,2);
+ packet(0x0817,clif->pMoveToKafra,2,4);
+ packet(0x085b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0866,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0876,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0881,clif->pGetCharNameRequest,2);
+ packet(0x0884,clif->pDull/*,XXX*/);
+ packet(0x0885,clif->pItemListWindowSelected,2,4,8);
+ packet(0x088c,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0890,clif->pStoragePassword,0);
+ packet(0x0899,clif->pDull/*,XXX*/);
+ packet(0x089a,clif->pMoveFromKafra,2,4);
+ packet(0x089b,clif->pActionRequest,2,6);
+ packet(0x08aa,clif->pTickSend,2);
+ packet(0x091e,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0926,clif->pPartyInvite2,2);
+ packet(0x0928,clif->pFriendsListAdd,2);
+ packet(0x092c,clif->pReqCloseBuyingStore,0);
+ packet(0x092e,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0930,clif->pHomMenu,2,4);
+ packet(0x0943,clif->pUseSkillToId,2,4,6);
+ packet(0x0946,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x094b,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x095a,clif->pReqClickBuyingStore,2);
+ packet(0x0964,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0965,clif->pChangeDir,2,4);
#endif
// 2016-12-28aRagexe
#if PACKETVER == 20161228
- packet(0x0362,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x085a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x085e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0865,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x086a,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x086c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x086d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0870,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0871,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0875,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x087f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0886,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0889,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0893,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x089f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08a2,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x08a3,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x08a5,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x08ab,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x08ac,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x08ad,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x091c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0929,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x092c,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0934,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0935,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0938,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x093d,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0944,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0362,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x085a,clif->pGetCharNameRequest,2);
+ packet(0x085e,clif->pHomMenu,2,4);
+ packet(0x0865,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x086a,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x086c,clif->pTakeItem,2);
+ packet(0x086d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0870,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0871,clif->pChangeDir,2,4);
+ packet(0x0875,clif->pReqCloseBuyingStore,0);
+ packet(0x087f,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0886,clif->pWalkToXY,2);
+ packet(0x0889,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0893,clif->pDropItem,2,4);
+ packet(0x089f,clif->pMoveToKafra,2,4);
+ packet(0x08a2,clif->pUseSkillToId,2,4,6);
+ packet(0x08a3,clif->pReqClickBuyingStore,2);
+ packet(0x08a5,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x08ab,clif->pMoveFromKafra,2,4);
+ packet(0x08ac,clif->pSolveCharName,2);
+ packet(0x08ad,clif->pStoragePassword,0);
+ packet(0x091c,clif->pFriendsListAdd,2);
+ packet(0x0929,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x092c,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0934,clif->pPartyInvite2,2);
+ packet(0x0935,clif->pDull/*,XXX*/);
+ packet(0x0938,clif->pDull/*,XXX*/);
+ packet(0x093d,clif->pActionRequest,2,6);
+ packet(0x0944,clif->pTickSend,2);
#endif
// 2017-01-04aRagexe
#if PACKETVER == 20170104
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x085a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x087f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0896,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x091b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0940,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x085a,clif->pFriendsListAdd,2);
+ packet(0x087f,clif->pStoragePassword,0);
+ packet(0x0896,clif->pChangeDir,2,4);
+ packet(0x091b,clif->pHomMenu,2,4);
+ packet(0x0940,clif->pUseSkillToId,2,4,6);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-01-11aRagexe
#if PACKETVER == 20170111
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0877,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x087f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x088a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08a1,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08a3,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08a6,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x091a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x091b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0940,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x094c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0961,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0969,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085d,clif->pHomMenu,2,4);
+ packet(0x0877,clif->pFriendsListAdd,2);
+ packet(0x087f,clif->pDull/*,XXX*/);
+ packet(0x088a,clif->pMoveToKafra,2,4);
+ packet(0x08a1,clif->pChangeDir,2,4);
+ packet(0x08a3,clif->pTakeItem,2);
+ packet(0x08a6,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x091a,clif->pStoragePassword,0);
+ packet(0x091b,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0940,clif->pDropItem,2,4);
+ packet(0x094c,clif->pMoveFromKafra,2,4);
+ packet(0x0961,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0969,clif->pPartyInvite2,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-01-18aRagexe
#if PACKETVER == 20170118
- packet(0x022d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0364,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0862,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0865,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x086f,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0873,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x089e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x08ad,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x091f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0927,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0933,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0958,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0962,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x096a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x022d,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0364,clif->pGetCharNameRequest,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pHomMenu,2,4);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0862,clif->pMoveFromKafra,2,4);
+ packet(0x0865,clif->pChangeDir,2,4);
+ packet(0x086f,clif->pTakeItem,2);
+ packet(0x0873,clif->pDull/*,XXX*/);
+ packet(0x089e,clif->pPartyInvite2,2);
+ packet(0x08ad,clif->pItemListWindowSelected,2,4,8);
+ packet(0x091f,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0927,clif->pDull/*,XXX*/);
+ packet(0x0933,clif->pDropItem,2,4);
+ packet(0x0958,clif->pStoragePassword,0);
+ packet(0x0962,clif->pFriendsListAdd,2);
+ packet(0x096a,clif->pMoveToKafra,2,4);
#endif
// 2017-01-25aRagexe
#if PACKETVER == 20170125
- packet(0x0438,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0811,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x086e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0876,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0877,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0879,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x087b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x087d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0881,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0884,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0893,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0894,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0895,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0898,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x089b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x08a5,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x091b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x091c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x091d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0920,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0929,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x092b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0930,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x093c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0943,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0944,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x095c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0965,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0968,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0438,clif->pActionRequest,2,6);
+ packet(0x0811,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x086e,clif->pPartyInvite2,2);
+ packet(0x0876,clif->pHomMenu,2,4);
+ packet(0x0877,clif->pDropItem,2,4);
+ packet(0x0879,clif->pUseSkillToId,2,4,6);
+ packet(0x087b,clif->pTakeItem,2);
+ packet(0x087d,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0881,clif->pChangeDir,2,4);
+ packet(0x0884,clif->pDull/*,XXX*/);
+ packet(0x0893,clif->pStoragePassword,0);
+ packet(0x0894,clif->pDull/*,XXX*/);
+ packet(0x0895,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0898,clif->pSolveCharName,2);
+ packet(0x089b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x08a5,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x091b,clif->pReqClickBuyingStore,2);
+ packet(0x091c,clif->pMoveToKafra,2,4);
+ packet(0x091d,clif->pReqCloseBuyingStore,0);
+ packet(0x0920,clif->pFriendsListAdd,2);
+ packet(0x0929,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x092b,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0930,clif->pWalkToXY,2);
+ packet(0x093c,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0943,clif->pTickSend,2);
+ packet(0x0944,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x095c,clif->pMoveFromKafra,2,4);
+ packet(0x0965,clif->pGetCharNameRequest,2);
+ packet(0x0968,clif->pSearchStoreInfoNextPage,0);
#endif
// 2017-02-01aRagexe
#if PACKETVER == 20170201
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0815,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x085e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0875,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0879,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0881,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0884,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0885,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0886,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x088b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x08a4,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0919,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0920,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0938,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0940,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x094c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0966,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0969,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0815,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085d,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x085e,clif->pChangeDir,2,4);
+ packet(0x0875,clif->pTakeItem,2);
+ packet(0x0879,clif->pDull/*,XXX*/);
+ packet(0x0881,clif->pMoveToKafra,2,4);
+ packet(0x0884,clif->pWalkToXY,2);
+ packet(0x0885,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0886,clif->pStoragePassword,0);
+ packet(0x088b,clif->pDropItem,2,4);
+ packet(0x08a4,clif->pDull/*,XXX*/);
+ packet(0x0919,clif->pFriendsListAdd,2);
+ packet(0x0920,clif->pPartyInvite2,2);
+ packet(0x0938,clif->pHomMenu,2,4);
+ packet(0x0940,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x094c,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0966,clif->pMoveFromKafra,2,4);
+ packet(0x0969,clif->pItemListWindowSelected,2,4,8);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-02-08bRagexe
#if PACKETVER == 20170208
- packet(0x02c4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0367,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0860,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x087a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x088c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0892,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x08a1,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x08ac,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0921,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0923,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x092d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0932,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0937,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x02c4,clif->pDull/*,XXX*/);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0367,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085c,clif->pPartyInvite2,2);
+ packet(0x0860,clif->pChangeDir,2,4);
+ packet(0x087a,clif->pDull/*,XXX*/);
+ packet(0x088c,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0892,clif->pFriendsListAdd,2);
+ packet(0x08a1,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x08ac,clif->pMoveToKafra,2,4);
+ packet(0x0921,clif->pDropItem,2,4);
+ packet(0x0923,clif->pTakeItem,2);
+ packet(0x092d,clif->pHomMenu,2,4);
+ packet(0x0932,clif->pMoveFromKafra,2,4);
+ packet(0x0937,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-02-15aRagexe
#if PACKETVER == 20170215
- packet(0x02c4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x035f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0360,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0811,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x083c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x085c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0876,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x087c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x087d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x087e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0883,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0884,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x088a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x088b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x088c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0890,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0896,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x089b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08a2,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x08a8,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x091c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0925,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x092b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x092d,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0942,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x094e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x095f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0962,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0969,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x02c4,clif->pStoragePassword,0);
+ packet(0x035f,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0360,clif->pTickSend,2);
+ packet(0x0811,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x083c,clif->pActionRequest,2,6);
+ packet(0x085c,clif->pDropItem,2,4);
+ packet(0x0876,clif->pFriendsListAdd,2);
+ packet(0x087c,clif->pItemListWindowSelected,2,4,8);
+ packet(0x087d,clif->pChangeDir,2,4);
+ packet(0x087e,clif->pUseSkillToId,2,4,6);
+ packet(0x0883,clif->pSolveCharName,2);
+ packet(0x0884,clif->pDull/*,XXX*/);
+ packet(0x088a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x088b,clif->pPartyInvite2,2);
+ packet(0x088c,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0890,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0896,clif->pDull/*,XXX*/);
+ packet(0x089b,clif->pMoveToKafra,2,4);
+ packet(0x08a2,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x08a8,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x091c,clif->pReqCloseBuyingStore,0);
+ packet(0x0925,clif->pMoveFromKafra,2,4);
+ packet(0x092b,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x092d,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0942,clif->pTakeItem,2);
+ packet(0x094e,clif->pGetCharNameRequest,2);
+ packet(0x095f,clif->pReqClickBuyingStore,2);
+ packet(0x0962,clif->pHomMenu,2,4);
+ packet(0x0969,clif->pWalkToXY,2);
#endif
// 2017-02-22aRagexe
#if PACKETVER == 20170222
- packet(0x0202,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0866,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0870,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0871,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0877,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0889,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0894,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08a3,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08a8,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0937,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0939,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0943,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x095d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0962,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pHomMenu,2,4);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085f,clif->pFriendsListAdd,2);
+ packet(0x0866,clif->pDropItem,2,4);
+ packet(0x0870,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0871,clif->pDull/*,XXX*/);
+ packet(0x0877,clif->pDull/*,XXX*/);
+ packet(0x0889,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0894,clif->pTakeItem,2);
+ packet(0x08a3,clif->pChangeDir,2,4);
+ packet(0x08a8,clif->pPartyInvite2,2);
+ packet(0x0937,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0939,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0943,clif->pStoragePassword,0);
+ packet(0x095d,clif->pMoveToKafra,2,4);
+ packet(0x0962,clif->pMoveFromKafra,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-02-28aRagexe, 2017-02-28bRagexe
#if PACKETVER == 20170228
- packet(0x022d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0360,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0362,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0819,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x085e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0863,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x086b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0873,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0874,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0876,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0883,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0884,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0889,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0893,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x089e,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08a0,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x08a2,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08a6,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x08a7,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x091f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x092a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x092e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0937,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x093e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0944,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0947,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0948,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0952,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0955,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x022d,clif->pDropItem,2,4);
+ packet(0x0360,clif->pActionRequest,2,6);
+ packet(0x0362,clif->pHomMenu,2,4);
+ packet(0x0819,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x085e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0863,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x086b,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0873,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0874,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0876,clif->pReqCloseBuyingStore,0);
+ packet(0x0883,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0884,clif->pWalkToXY,2);
+ packet(0x0889,clif->pChangeDir,2,4);
+ packet(0x0893,clif->pGetCharNameRequest,2);
+ packet(0x089e,clif->pMoveToKafra,2,4);
+ packet(0x08a0,clif->pFriendsListAdd,2);
+ packet(0x08a2,clif->pStoragePassword,0);
+ packet(0x08a6,clif->pDull/*,XXX*/);
+ packet(0x08a7,clif->pReqClickBuyingStore,2);
+ packet(0x091f,clif->pUseSkillToId,2,4,6);
+ packet(0x092a,clif->pTakeItem,2);
+ packet(0x092e,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0937,clif->pTickSend,2);
+ packet(0x093e,clif->pDull/*,XXX*/);
+ packet(0x0944,clif->pMoveFromKafra,2,4);
+ packet(0x0947,clif->pSolveCharName,2);
+ packet(0x0948,clif->pPartyInvite2,2);
+ packet(0x0952,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0955,clif->pPartyBookingRegisterReq,2,4);
#endif
// 2017-03-08aRagexe
#if PACKETVER == 20170308
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x087d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x087d,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-03-15cRagexe
#if PACKETVER == 20170315
- packet(0x02c4,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x035f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0360,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0366,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0436,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x07ec,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x085c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0863,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x086a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0872,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x087b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0884,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x088b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x088d,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x088f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0892,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x089c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x08aa,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x091a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x091b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x091d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0920,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0922,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0944,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x094a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x094e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0950,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0952,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x02c4,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x035f,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0360,clif->pChangeDir,2,4);
+ packet(0x0366,clif->pTakeItem,2);
+ packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0436,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x07ec,clif->pTickSend,2);
+ packet(0x085c,clif->pDull/*,XXX*/);
+ packet(0x0863,clif->pHomMenu,2,4);
+ packet(0x086a,clif->pMoveFromKafra,2,4);
+ packet(0x0872,clif->pFriendsListAdd,2);
+ packet(0x087b,clif->pPartyInvite2,2);
+ packet(0x0884,clif->pActionRequest,2,6);
+ packet(0x088b,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x088d,clif->pDull/*,XXX*/);
+ packet(0x088f,clif->pWalkToXY,2);
+ packet(0x0892,clif->pUseSkillToId,2,4,6);
+ packet(0x089c,clif->pReqCloseBuyingStore,0);
+ packet(0x08aa,clif->pMoveToKafra,2,4);
+ packet(0x091a,clif->pDropItem,2,4);
+ packet(0x091b,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x091d,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0920,clif->pSolveCharName,2);
+ packet(0x0922,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0944,clif->pGetCharNameRequest,2);
+ packet(0x094a,clif->pReqClickBuyingStore,2);
+ packet(0x094e,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0950,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0952,clif->pStoragePassword,0);
#endif
// 2017-03-22aRagexe, 2017-03-22bRagexe
#if PACKETVER == 20170322
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x091a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x091a,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-03-29bRagexe, 2017-03-29cRagexe
#if PACKETVER == 20170329
- packet(0x0281,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0363,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x087a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0888,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x08a8,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0917,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0926,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0929,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x092e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0937,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0939,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0949,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x095f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0281,clif->pPartyInvite2,2);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pHomMenu,2,4);
+ packet(0x0363,clif->pMoveToKafra,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085d,clif->pStoragePassword,0);
+ packet(0x087a,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0888,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x08a8,clif->pDropItem,2,4);
+ packet(0x0917,clif->pDull/*,XXX*/);
+ packet(0x0926,clif->pChangeDir,2,4);
+ packet(0x0929,clif->pTakeItem,2);
+ packet(0x092e,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0937,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0939,clif->pFriendsListAdd,2);
+ packet(0x0949,clif->pMoveFromKafra,2,4);
+ packet(0x095f,clif->pDull/*,XXX*/);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-04-05bRagexe, 2017-04-05cRagexe
#if PACKETVER == 20170405
- packet(0x022d,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0281,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0860,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0864,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0865,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x086f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0893,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x08a5,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x094c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x094f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0964,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x022d,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0281,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pActionRequest,2,6);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pTakeItem,2);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pHomMenu,2,4);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085f,clif->pMoveToKafra,2,4);
+ packet(0x0860,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0864,clif->pPartyInvite2,2);
+ packet(0x0865,clif->pChangeDir,2,4);
+ packet(0x086f,clif->pFriendsListAdd,2);
+ packet(0x0893,clif->pMoveFromKafra,2,4);
+ packet(0x08a5,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x094c,clif->pStoragePassword,0);
+ packet(0x094f,clif->pDull/*,XXX*/);
+ packet(0x0964,clif->pDropItem,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-04-12aRagexe
#if PACKETVER == 20170412
- packet(0x023b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0365,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0863,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0869,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x086d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0878,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0879,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x087b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x088b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0890,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0893,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0898,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x089a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x089c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x08a1,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x091a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x091e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0929,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x092e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0938,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0942,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0945,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0949,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x094f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0952,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0959,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x095b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x095c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x095d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x023b,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0365,clif->pReqClickBuyingStore,2);
+ packet(0x0863,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0869,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x086d,clif->pMoveFromKafra,2,4);
+ packet(0x0878,clif->pWalkToXY,2);
+ packet(0x0879,clif->pDull/*,XXX*/);
+ packet(0x087b,clif->pUseSkillToId,2,4,6);
+ packet(0x088b,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0890,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0893,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0898,clif->pSolveCharName,2);
+ packet(0x089a,clif->pHomMenu,2,4);
+ packet(0x089c,clif->pDropItem,2,4);
+ packet(0x08a1,clif->pActionRequest,2,6);
+ packet(0x091a,clif->pChangeDir,2,4);
+ packet(0x091e,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0929,clif->pTickSend,2);
+ packet(0x092e,clif->pDull/*,XXX*/);
+ packet(0x0938,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0942,clif->pFriendsListAdd,2);
+ packet(0x0945,clif->pMoveToKafra,2,4);
+ packet(0x0949,clif->pSearchStoreInfoNextPage,0);
+ packet(0x094f,clif->pPartyInvite2,2);
+ packet(0x0952,clif->pReqCloseBuyingStore,0);
+ packet(0x0959,clif->pTakeItem,2);
+ packet(0x095b,clif->pGetCharNameRequest,2);
+ packet(0x095c,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x095d,clif->pStoragePassword,0);
#endif
// 2017-04-19aRagexe
#if PACKETVER == 20170419
- packet(0x0811,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0819,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0838,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x085a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x085e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0862,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0868,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x086a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0872,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0881,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x088d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x088f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0897,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0898,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x089d,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x08aa,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x091b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0920,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0922,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0930,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0931,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0935,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x093a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x093f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0942,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x095c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x095d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0963,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0965,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0811,clif->pChangeDir,2,4);
+ packet(0x0819,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0838,clif->pGetCharNameRequest,2);
+ packet(0x085a,clif->pActionRequest,2,6);
+ packet(0x085e,clif->pWalkToXY,2);
+ packet(0x0862,clif->pPartyInvite2,2);
+ packet(0x0868,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x086a,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0872,clif->pDull/*,XXX*/);
+ packet(0x0881,clif->pStoragePassword,0);
+ packet(0x088d,clif->pItemListWindowSelected,2,4,8);
+ packet(0x088f,clif->pHomMenu,2,4);
+ packet(0x0897,clif->pDropItem,2,4);
+ packet(0x0898,clif->pTickSend,2);
+ packet(0x089d,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x08aa,clif->pMoveToKafra,2,4);
+ packet(0x091b,clif->pSolveCharName,2);
+ packet(0x0920,clif->pUseSkillToId,2,4,6);
+ packet(0x0922,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0930,clif->pMoveFromKafra,2,4);
+ packet(0x0931,clif->pReqCloseBuyingStore,0);
+ packet(0x0935,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x093a,clif->pFriendsListAdd,2);
+ packet(0x093f,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0942,clif->pSearchStoreInfoNextPage,0);
+ packet(0x095c,clif->pTakeItem,2);
+ packet(0x095d,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0963,clif->pDull/*,XXX*/);
+ packet(0x0965,clif->pReqClickBuyingStore,2);
#endif
// 2017-04-26bRagexe
#if PACKETVER == 20170426
- packet(0x0281,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0866,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x086f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x087a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0887,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0899,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x089c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x08a2,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x08a4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x091f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0927,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0940,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0958,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0963,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0281,clif->pStoragePassword,0);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0866,clif->pItemListWindowSelected,2,4,8);
+ packet(0x086f,clif->pDull/*,XXX*/);
+ packet(0x087a,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0887,clif->pSolveCharName,2);
+ packet(0x0899,clif->pMoveFromKafra,2,4);
+ packet(0x089c,clif->pHomMenu,2,4);
+ packet(0x08a2,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x08a4,clif->pTakeItem,2);
+ packet(0x091f,clif->pDull/*,XXX*/);
+ packet(0x0927,clif->pChangeDir,2,4);
+ packet(0x0940,clif->pDropItem,2,4);
+ packet(0x0958,clif->pFriendsListAdd,2);
+ packet(0x0963,clif->pMoveToKafra,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-05-02aRagexe, 2017-05-02bRagexe
#if PACKETVER == 20170502
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0875,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0894,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x089c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x093c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0950,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0875,clif->pStoragePassword,0);
+ packet(0x0894,clif->pChangeDir,2,4);
+ packet(0x089c,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x093c,clif->pFriendsListAdd,2);
+ packet(0x0950,clif->pHomMenu,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-05-17aRagexe
#if PACKETVER == 20170517
- packet(0x0364,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0367,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0815,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0817,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0868,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0875,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x087b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x087d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x088c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x088d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0894,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0896,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0899,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x089e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x089f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x08a2,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x08a8,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x08aa,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x091b,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0923,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x093b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0945,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0946,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0947,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0958,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0960,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0964,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0364,clif->pDull/*,XXX*/);
+ packet(0x0367,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0437,clif->pActionRequest,2,6);
+ packet(0x0802,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0815,clif->pUseSkillToId,2,4,6);
+ packet(0x0817,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0868,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0875,clif->pSearchStoreInfoNextPage,0);
+ packet(0x087b,clif->pSolveCharName,2);
+ packet(0x087d,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x088c,clif->pMoveFromKafra,2,4);
+ packet(0x088d,clif->pChangeDir,2,4);
+ packet(0x0894,clif->pGetCharNameRequest,2);
+ packet(0x0896,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0899,clif->pPartyInvite2,2);
+ packet(0x089e,clif->pDull/*,XXX*/);
+ packet(0x089f,clif->pReqCloseBuyingStore,0);
+ packet(0x08a2,clif->pTickSend,2);
+ packet(0x08a8,clif->pWalkToXY,2);
+ packet(0x08aa,clif->pMoveToKafra,2,4);
+ packet(0x091b,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0923,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x093b,clif->pDropItem,2,4);
+ packet(0x0945,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0946,clif->pReqClickBuyingStore,2);
+ packet(0x0947,clif->pStoragePassword,0);
+ packet(0x0958,clif->pHomMenu,2,4);
+ packet(0x0960,clif->pFriendsListAdd,2);
+ packet(0x0964,clif->pTakeItem,2);
#endif
// 2017-05-24aRagexe, 2017-05-24bRagexe
#if PACKETVER == 20170524
- packet(0x0364,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0368,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0802,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x085e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x085f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0860,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0864,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0866,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0868,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x086d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0873,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0874,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x087d,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0882,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x088d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0894,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x089c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x08a1,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x091e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0923,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0925,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0934,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0946,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0958,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x095a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x095b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0964,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0967,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0968,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0364,clif->pPartyInvite2,2);
+ packet(0x0368,clif->pStoragePassword,0);
+ packet(0x0802,clif->pDropItem,2,4);
+ packet(0x085e,clif->pActionRequest,2,6);
+ packet(0x085f,clif->pReqClickBuyingStore,2);
+ packet(0x0860,clif->pTickSend,2);
+ packet(0x0864,clif->pTakeItem,2);
+ packet(0x0866,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0868,clif->pMoveToKafra,2,4);
+ packet(0x086d,clif->pHomMenu,2,4);
+ packet(0x0873,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0874,clif->pSearchStoreInfoNextPage,0);
+ packet(0x087d,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0882,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x088d,clif->pUseSkillToId,2,4,6);
+ packet(0x0894,clif->pMoveFromKafra,2,4);
+ packet(0x089c,clif->pWalkToXY,2);
+ packet(0x08a1,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x091e,clif->pDull/*,XXX*/);
+ packet(0x0923,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0925,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0934,clif->pChangeDir,2,4);
+ packet(0x0946,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0958,clif->pDull/*,XXX*/);
+ packet(0x095a,clif->pGetCharNameRequest,2);
+ packet(0x095b,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0964,clif->pReqCloseBuyingStore,0);
+ packet(0x0967,clif->pFriendsListAdd,2);
+ packet(0x0968,clif->pSolveCharName,2);
#endif
// 2017-05-31aRagexe
#if PACKETVER == 20170531
- packet(0x0361,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0369,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x07e4,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x07ec,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0819,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x085b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x085f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0861,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0868,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0873,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0875,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0878,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x087b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0885,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x088b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x088d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0894,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x089a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x089c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x08a2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x08ac,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x08ad,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x092d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0933,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0937,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0940,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0945,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0963,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0968,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0361,clif->pChangeDir,2,4);
+ packet(0x0369,clif->pUseSkillToId,2,4,6);
+ packet(0x07e4,clif->pWalkToXY,2);
+ packet(0x07ec,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0819,clif->pTickSend,2);
+ packet(0x085b,clif->pDull/*,XXX*/);
+ packet(0x085f,clif->pSolveCharName,2);
+ packet(0x0861,clif->pFriendsListAdd,2);
+ packet(0x0868,clif->pDull/*,XXX*/);
+ packet(0x0873,clif->pReqCloseBuyingStore,0);
+ packet(0x0875,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0878,clif->pPartyInvite2,2);
+ packet(0x087b,clif->pActionRequest,2,6);
+ packet(0x0885,clif->pItemListWindowSelected,2,4,8);
+ packet(0x088b,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x088d,clif->pDropItem,2,4);
+ packet(0x0894,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x089a,clif->pStoragePassword,0);
+ packet(0x089c,clif->pHomMenu,2,4);
+ packet(0x08a2,clif->pSearchStoreInfoNextPage,0);
+ packet(0x08ac,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x08ad,clif->pMoveToKafra,2,4);
+ packet(0x092d,clif->pGetCharNameRequest,2);
+ packet(0x0933,clif->pMoveFromKafra,2,4);
+ packet(0x0937,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0940,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0945,clif->pReqClickBuyingStore,2);
+ packet(0x0963,clif->pTakeItem,2);
+ packet(0x0968,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
#endif
// 2017-06-07cRagexe
#if PACKETVER == 20170607
- packet(0x0361,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0364,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x07e4,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x085a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x085e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0862,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0863,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0864,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0871,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0873,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0875,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0885,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x088a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0897,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x089d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08a9,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x08ab,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0917,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0918,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0919,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0925,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0927,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0931,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0934,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0938,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x093d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0942,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0944,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0949,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0361,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0364,clif->pStoragePassword,0);
+ packet(0x07e4,clif->pTickSend,2);
+ packet(0x085a,clif->pChangeDir,2,4);
+ packet(0x085e,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0862,clif->pGetCharNameRequest,2);
+ packet(0x0863,clif->pReqClickBuyingStore,2);
+ packet(0x0864,clif->pDropItem,2,4);
+ packet(0x0871,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0873,clif->pDull/*,XXX*/);
+ packet(0x0875,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0885,clif->pFriendsListAdd,2);
+ packet(0x088a,clif->pMoveFromKafra,2,4);
+ packet(0x0897,clif->pTakeItem,2);
+ packet(0x089d,clif->pMoveToKafra,2,4);
+ packet(0x08a9,clif->pUseSkillToId,2,4,6);
+ packet(0x08ab,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0917,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0918,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0919,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0925,clif->pPartyInvite2,2);
+ packet(0x0927,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0931,clif->pDull/*,XXX*/);
+ packet(0x0934,clif->pWalkToXY,2);
+ packet(0x0938,clif->pActionRequest,2,6);
+ packet(0x093d,clif->pReqCloseBuyingStore,0);
+ packet(0x0942,clif->pHomMenu,2,4);
+ packet(0x0944,clif->pSolveCharName,2);
+ packet(0x0949,clif->pReqOpenBuyingStore,2,4,8,9,89);
#endif
// 2017-06-14bRagexe
#if PACKETVER == 20170614
- packet(0x023b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0361,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0364,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0367,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0437,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0838,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x083c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0860,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0865,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0866,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0867,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x086b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x086c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0877,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0879,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x087d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x087e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0889,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0899,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x089d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x08a2,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x08ad,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x091b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0928,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x092f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0936,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0944,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0957,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0963,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x023b,clif->pMoveFromKafra,2,4);
+ packet(0x0361,clif->pWalkToXY,2);
+ packet(0x0364,clif->pHomMenu,2,4);
+ packet(0x0367,clif->pDropItem,2,4);
+ packet(0x0437,clif->pStoragePassword,0);
+ packet(0x0838,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x083c,clif->pActionRequest,2,6);
+ packet(0x0860,clif->pReqClickBuyingStore,2);
+ packet(0x0865,clif->pDull/*,XXX*/);
+ packet(0x0866,clif->pTickSend,2);
+ packet(0x0867,clif->pFriendsListAdd,2);
+ packet(0x086b,clif->pReqCloseBuyingStore,0);
+ packet(0x086c,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0877,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0879,clif->pMoveToKafra,2,4);
+ packet(0x087d,clif->pSolveCharName,2);
+ packet(0x087e,clif->pChangeDir,2,4);
+ packet(0x0889,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0899,clif->pPartyInvite2,2);
+ packet(0x089d,clif->pItemListWindowSelected,2,4,8);
+ packet(0x08a2,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x08ad,clif->pTakeItem,2);
+ packet(0x091b,clif->pUseSkillToId,2,4,6);
+ packet(0x0928,clif->pSearchStoreInfoNextPage,0);
+ packet(0x092f,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0936,clif->pGetCharNameRequest,2);
+ packet(0x0944,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0957,clif->pDull/*,XXX*/);
+ packet(0x0963,clif->pSearchStoreInfoListItemClick,2,6,10);
#endif
// 2017-06-21bRagexe
#if PACKETVER == 20170621
- packet(0x0202,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0365,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0366,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0802,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x087d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0885,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0889,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x08a8,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0956,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0957,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x095b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x095c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0961,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pTakeItem,2);
+ packet(0x0365,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0366,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pFriendsListAdd,2);
+ packet(0x0802,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085d,clif->pChangeDir,2,4);
+ packet(0x087d,clif->pDropItem,2,4);
+ packet(0x0885,clif->pPartyInvite2,2);
+ packet(0x0889,clif->pMoveFromKafra,2,4);
+ packet(0x08a8,clif->pHomMenu,2,4);
+ packet(0x0956,clif->pDull/*,XXX*/);
+ packet(0x0957,clif->pStoragePassword,0);
+ packet(0x095b,clif->pDull/*,XXX*/);
+ packet(0x095c,clif->pMoveToKafra,2,4);
+ packet(0x0961,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-06-28bRagexe
#if PACKETVER == 20170628
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0863,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0863,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-07-05aRagexe
#if PACKETVER == 20170705
- packet(0x0202,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x02c4,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0879,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0886,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x088d,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x088e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x089a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x089d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x091a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x092f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0930,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0932,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0934,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x094c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pStoragePassword,0);
+ packet(0x02c4,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0879,clif->pMoveToKafra,2,4);
+ packet(0x0886,clif->pFriendsListAdd,2);
+ packet(0x088d,clif->pDull/*,XXX*/);
+ packet(0x088e,clif->pPartyInvite2,2);
+ packet(0x089a,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x089d,clif->pDropItem,2,4);
+ packet(0x091a,clif->pChangeDir,2,4);
+ packet(0x092f,clif->pDull/*,XXX*/);
+ packet(0x0930,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0932,clif->pTakeItem,2);
+ packet(0x0934,clif->pMoveFromKafra,2,4);
+ packet(0x094c,clif->pHomMenu,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-07-12bRagexe
#if PACKETVER == 20170712
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0944,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0944,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-07-19aRagexe
#if PACKETVER == 20170719
- packet(0x022d,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0367,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0368,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0369,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x07e4,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x085a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x085e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0863,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x086e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x087d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0881,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0882,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0885,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0891,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0898,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x089a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x089d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x08a6,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x08a8,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x091b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x091f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x092c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x092e,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x092f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x093d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x093e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0944,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0946,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0966,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x022d,clif->pActionRequest,2,6);
+ packet(0x0367,clif->pReqCloseBuyingStore,0);
+ packet(0x0368,clif->pDull/*,XXX*/);
+ packet(0x0369,clif->pHomMenu,2,4);
+ packet(0x07e4,clif->pGetCharNameRequest,2);
+ packet(0x085a,clif->pTickSend,2);
+ packet(0x085e,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0863,clif->pReqClickBuyingStore,2);
+ packet(0x086e,clif->pPartyInvite2,2);
+ packet(0x087d,clif->pTakeItem,2);
+ packet(0x0881,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0882,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0885,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0891,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0898,clif->pUseSkillToId,2,4,6);
+ packet(0x089a,clif->pStoragePassword,0);
+ packet(0x089d,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x08a6,clif->pMoveFromKafra,2,4);
+ packet(0x08a8,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x091b,clif->pDropItem,2,4);
+ packet(0x091f,clif->pSolveCharName,2);
+ packet(0x092c,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x092e,clif->pSearchStoreInfoNextPage,0);
+ packet(0x092f,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x093d,clif->pWalkToXY,2);
+ packet(0x093e,clif->pDull/*,XXX*/);
+ packet(0x0944,clif->pChangeDir,2,4);
+ packet(0x0946,clif->pFriendsListAdd,2);
+ packet(0x0966,clif->pMoveToKafra,2,4);
#endif
// 2017-07-26aRagexe
#if PACKETVER == 20170726
- packet(0x0363,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0366,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0369,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0438,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0838,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0873,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0874,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0878,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0881,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0888,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x088e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x08a3,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x08a7,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08aa,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x08ab,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08ac,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x091d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x091e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x091f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0921,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0923,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0943,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x094f,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0950,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0952,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0954,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x095a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0963,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0363,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0364,clif->pMoveToKafra,2,4);
+ packet(0x0366,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0369,clif->pUseSkillToId,2,4,6);
+ packet(0x0438,clif->pPartyInvite2,2);
+ packet(0x0838,clif->pReqCloseBuyingStore,0);
+ packet(0x0873,clif->pReqClickBuyingStore,2);
+ packet(0x0874,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0878,clif->pActionRequest,2,6);
+ packet(0x0881,clif->pDull/*,XXX*/);
+ packet(0x0888,clif->pSearchStoreInfoNextPage,0);
+ packet(0x088e,clif->pWalkToXY,2);
+ packet(0x08a3,clif->pDull/*,XXX*/);
+ packet(0x08a7,clif->pStoragePassword,0);
+ packet(0x08aa,clif->pGetCharNameRequest,2);
+ packet(0x08ab,clif->pTakeItem,2);
+ packet(0x08ac,clif->pTickSend,2);
+ packet(0x091d,clif->pFriendsListAdd,2);
+ packet(0x091e,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x091f,clif->pHomMenu,2,4);
+ packet(0x0921,clif->pSolveCharName,2);
+ packet(0x0923,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0943,clif->pDropItem,2,4);
+ packet(0x094f,clif->pMoveFromKafra,2,4);
+ packet(0x0950,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0952,clif->pChangeDir,2,4);
+ packet(0x0954,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x095a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0963,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
#endif
// 2017-08-01aRagexe, 2017-08-01bRagexe
#if PACKETVER == 20170801
- packet(0x022d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0281,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0362,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x087d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08a6,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x094f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x095a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x022d,clif->pDropItem,2,4);
+ packet(0x0281,clif->pChangeDir,2,4);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0362,clif->pHomMenu,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x087d,clif->pStoragePassword,0);
+ packet(0x08a6,clif->pDull/*,XXX*/);
+ packet(0x094f,clif->pFriendsListAdd,2);
+ packet(0x095a,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-08-09cRagexe
#if PACKETVER == 20170809
- packet(0x022d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0281,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0364,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0366,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0367,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x07e4,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0802,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0835,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0868,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x086e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x086f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0876,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x087d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0880,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x088c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0890,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0892,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0895,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0899,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x08a3,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x08a6,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0918,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0921,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x092a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x092b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0931,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0939,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x093b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0940,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x022d,clif->pDull/*,XXX*/);
+ packet(0x0281,clif->pMoveFromKafra,2,4);
+ packet(0x0364,clif->pPartyInvite2,2);
+ packet(0x0366,clif->pFriendsListAdd,2);
+ packet(0x0367,clif->pReqCloseBuyingStore,0);
+ packet(0x07e4,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0802,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0835,clif->pDropItem,2,4);
+ packet(0x0868,clif->pActionRequest,2,6);
+ packet(0x086e,clif->pChangeDir,2,4);
+ packet(0x086f,clif->pHomMenu,2,4);
+ packet(0x0876,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x087d,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0880,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x088c,clif->pUseSkillToId,2,4,6);
+ packet(0x0890,clif->pStoragePassword,0);
+ packet(0x0892,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0895,clif->pWalkToXY,2);
+ packet(0x0899,clif->pDull/*,XXX*/);
+ packet(0x08a3,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x08a6,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0918,clif->pTakeItem,2);
+ packet(0x0921,clif->pMoveToKafra,2,4);
+ packet(0x092a,clif->pGetCharNameRequest,2);
+ packet(0x092b,clif->pTickSend,2);
+ packet(0x0931,clif->pSolveCharName,2);
+ packet(0x0939,clif->pReqClickBuyingStore,2);
+ packet(0x093b,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0940,clif->pPartyBookingRegisterReq,2,4);
#endif
// 2017-08-16cRagexe, 2017-08-16dRagexe
#if PACKETVER == 20170816
- packet(0x022d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x035f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0361,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0362,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0438,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x085a,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0862,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0864,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x087e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0881,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0882,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0884,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0888,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0889,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x08a3,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x08a7,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x08a9,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x08ac,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x091c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0921,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0925,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x092c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x093a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x093d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0940,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0941,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0950,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0959,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0960,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x022d,clif->pGetCharNameRequest,2);
+ packet(0x035f,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0361,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0362,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0438,clif->pActionRequest,2,6);
+ packet(0x085a,clif->pSolveCharName,2);
+ packet(0x0862,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0864,clif->pReqCloseBuyingStore,0);
+ packet(0x087e,clif->pTakeItem,2);
+ packet(0x0881,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0882,clif->pStoragePassword,0);
+ packet(0x0884,clif->pDull/*,XXX*/);
+ packet(0x0888,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0889,clif->pTickSend,2);
+ packet(0x08a3,clif->pFriendsListAdd,2);
+ packet(0x08a7,clif->pDull/*,XXX*/);
+ packet(0x08a9,clif->pWalkToXY,2);
+ packet(0x08ac,clif->pHomMenu,2,4);
+ packet(0x091c,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0921,clif->pReqClickBuyingStore,2);
+ packet(0x0925,clif->pMoveFromKafra,2,4);
+ packet(0x092c,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x093a,clif->pPartyInvite2,2);
+ packet(0x093d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0940,clif->pUseSkillToId,2,4,6);
+ packet(0x0941,clif->pDropItem,2,4);
+ packet(0x0950,clif->pChangeDir,2,4);
+ packet(0x0959,clif->pMoveToKafra,2,4);
+ packet(0x0960,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
#endif
// 2017-08-23aRagexe
#if PACKETVER == 20170823
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x086c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x086d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08ac,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x095b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pPartyInvite2,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pChangeDir,2,4);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x086c,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x086d,clif->pStoragePassword,0);
+ packet(0x08ac,clif->pFriendsListAdd,2);
+ packet(0x095b,clif->pHomMenu,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-08-30aRagexe, 2017-08-30bRagexe
#if PACKETVER == 20170830
- packet(0x0281,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x02c4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0363,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0364,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0860,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0865,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x086a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0875,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0884,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0885,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0888,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0899,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x089a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x089e,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08a2,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08a8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x091e,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0921,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0925,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x092e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0939,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x093e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0940,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0942,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0943,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0947,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0951,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0959,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0281,clif->pChangeDir,2,4);
+ packet(0x02c4,clif->pTakeItem,2);
+ packet(0x0363,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0364,clif->pDull/*,XXX*/);
+ packet(0x0860,clif->pReqCloseBuyingStore,0);
+ packet(0x0865,clif->pWalkToXY,2);
+ packet(0x086a,clif->pPartyInvite2,2);
+ packet(0x0875,clif->pDull/*,XXX*/);
+ packet(0x0884,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0885,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0888,clif->pUseSkillToId,2,4,6);
+ packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0899,clif->pDropItem,2,4);
+ packet(0x089a,clif->pItemListWindowSelected,2,4,8);
+ packet(0x089e,clif->pMoveToKafra,2,4);
+ packet(0x08a2,clif->pStoragePassword,0);
+ packet(0x08a8,clif->pMoveFromKafra,2,4);
+ packet(0x091e,clif->pTickSend,2);
+ packet(0x0921,clif->pHomMenu,2,4);
+ packet(0x0925,clif->pReqClickBuyingStore,2);
+ packet(0x092e,clif->pGetCharNameRequest,2);
+ packet(0x0939,clif->pFriendsListAdd,2);
+ packet(0x093e,clif->pActionRequest,2,6);
+ packet(0x0940,clif->pSolveCharName,2);
+ packet(0x0942,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0943,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0947,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0951,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0959,clif->pUseSkillToPos,2,4,6,8);
#endif
// 2017-09-06cRagexe
#if PACKETVER == 20170906
- packet(0x0202,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0281,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x02c4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0366,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0802,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0860,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0866,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x086c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x087b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08a2,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x08a3,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x08a7,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x091a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x091e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0953,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pDull/*,XXX*/);
+ packet(0x0281,clif->pStoragePassword,0);
+ packet(0x02c4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0366,clif->pPartyInvite2,2);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0802,clif->pChangeDir,2,4);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0860,clif->pDropItem,2,4);
+ packet(0x0866,clif->pItemListWindowSelected,2,4,8);
+ packet(0x086c,clif->pDull/*,XXX*/);
+ packet(0x087b,clif->pMoveToKafra,2,4);
+ packet(0x08a2,clif->pMoveFromKafra,2,4);
+ packet(0x08a3,clif->pFriendsListAdd,2);
+ packet(0x08a7,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x091a,clif->pTakeItem,2);
+ packet(0x091e,clif->pHomMenu,2,4);
+ packet(0x0953,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-09-13cRagexe
#if PACKETVER == 20170913
- packet(0x0281,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x035f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0437,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x07e4,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0817,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0835,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x085a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0860,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0865,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0866,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x088c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0890,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0891,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0892,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08a6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x08a7,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x08aa,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x08ab,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x08ac,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08ad,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x091b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x091d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x091e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0920,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0923,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0925,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0927,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x095a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x095c,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0281,clif->pGetCharNameRequest,2);
+ packet(0x035f,clif->pFriendsListAdd,2);
+ packet(0x0437,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x07e4,clif->pMoveFromKafra,2,4);
+ packet(0x0817,clif->pActionRequest,2,6);
+ packet(0x0835,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x085a,clif->pReqCloseBuyingStore,0);
+ packet(0x0860,clif->pTakeItem,2);
+ packet(0x0865,clif->pPartyInvite2,2);
+ packet(0x0866,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x088c,clif->pHomMenu,2,4);
+ packet(0x0890,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0891,clif->pMoveToKafra,2,4);
+ packet(0x0892,clif->pStoragePassword,0);
+ packet(0x08a6,clif->pReqClickBuyingStore,2);
+ packet(0x08a7,clif->pDull/*,XXX*/);
+ packet(0x08aa,clif->pUseSkillToId,2,4,6);
+ packet(0x08ab,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x08ac,clif->pChangeDir,2,4);
+ packet(0x08ad,clif->pItemListWindowSelected,2,4,8);
+ packet(0x091b,clif->pTickSend,2);
+ packet(0x091d,clif->pDropItem,2,4);
+ packet(0x091e,clif->pDull/*,XXX*/);
+ packet(0x0920,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0923,clif->pWalkToXY,2);
+ packet(0x0925,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0927,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x095a,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x095c,clif->pSolveCharName,2);
#endif
// 2017-09-20aRagexe
#if PACKETVER == 20170920
- packet(0x0369,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0436,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x07ec,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x085a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0861,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0862,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0864,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0865,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x086a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x086c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0874,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0875,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0889,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x088e,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x089b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0919,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x091e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0921,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0923,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0926,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x092e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0937,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0939,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0945,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x094c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x095d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0961,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0966,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x096a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0369,clif->pTakeItem,2);
+ packet(0x0436,clif->pItemListWindowSelected,2,4,8);
+ packet(0x07ec,clif->pMoveFromKafra,2,4);
+ packet(0x085a,clif->pWalkToXY,2);
+ packet(0x0861,clif->pFriendsListAdd,2);
+ packet(0x0862,clif->pUseSkillToId,2,4,6);
+ packet(0x0864,clif->pStoragePassword,0);
+ packet(0x0865,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x086a,clif->pPartyInvite2,2);
+ packet(0x086c,clif->pDropItem,2,4);
+ packet(0x0874,clif->pReqCloseBuyingStore,0);
+ packet(0x0875,clif->pDull/*,XXX*/);
+ packet(0x0889,clif->pGetCharNameRequest,2);
+ packet(0x088e,clif->pTickSend,2);
+ packet(0x089b,clif->pActionRequest,2,6);
+ packet(0x0919,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x091e,clif->pDull/*,XXX*/);
+ packet(0x0921,clif->pSolveCharName,2);
+ packet(0x0923,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0926,clif->pMoveToKafra,2,4);
+ packet(0x092e,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0937,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0939,clif->pChangeDir,2,4);
+ packet(0x0945,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x094c,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x095d,clif->pHomMenu,2,4);
+ packet(0x0961,clif->pReqClickBuyingStore,2);
+ packet(0x0966,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x096a,clif->pSearchStoreInfoNextPage,0);
#endif
// 2017-09-27bRagexe, 2017-09-27cRagexe, 2017-09-27dRagexe
#if PACKETVER == 20170927
- packet(0x02c4,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x035f,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0361,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0362,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0366,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x085c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0873,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0875,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x087d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x087e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x088b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0899,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x089a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x089b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x08a3,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x08a5,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x08a6,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x08ad,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x091e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0922,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0923,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0927,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x093b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0942,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0945,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x094b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x094d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0959,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x095a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x02c4,clif->pHomMenu,2,4);
+ packet(0x035f,clif->pGetCharNameRequest,2);
+ packet(0x0361,clif->pDull/*,XXX*/);
+ packet(0x0362,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0366,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x085c,clif->pUseSkillToId,2,4,6);
+ packet(0x0873,clif->pSolveCharName,2);
+ packet(0x0875,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x087d,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x087e,clif->pChangeDir,2,4);
+ packet(0x088b,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0899,clif->pActionRequest,2,6);
+ packet(0x089a,clif->pStoragePassword,0);
+ packet(0x089b,clif->pMoveFromKafra,2,4);
+ packet(0x08a3,clif->pReqCloseBuyingStore,0);
+ packet(0x08a5,clif->pItemListWindowSelected,2,4,8);
+ packet(0x08a6,clif->pDull/*,XXX*/);
+ packet(0x08ad,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x091e,clif->pReqClickBuyingStore,2);
+ packet(0x0922,clif->pPartyInvite2,2);
+ packet(0x0923,clif->pDropItem,2,4);
+ packet(0x0927,clif->pWalkToXY,2);
+ packet(0x093b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0942,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0945,clif->pTickSend,2);
+ packet(0x094b,clif->pFriendsListAdd,2);
+ packet(0x094d,clif->pTakeItem,2);
+ packet(0x0959,clif->pMoveToKafra,2,4);
+ packet(0x095a,clif->pUseSkillToPos,2,4,6,8);
#endif
// 2017-10-02cRagexe
#if PACKETVER == 20171002
- packet(0x022d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0363,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0885,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0897,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0899,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x089d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0928,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x092d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0934,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x093b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x093d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x093e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0943,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x095f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x022d,clif->pDropItem,2,4);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0363,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pHomMenu,2,4);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0885,clif->pMoveToKafra,2,4);
+ packet(0x0897,clif->pChangeDir,2,4);
+ packet(0x0899,clif->pFriendsListAdd,2);
+ packet(0x089d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0928,clif->pItemListWindowSelected,2,4,8);
+ packet(0x092d,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0934,clif->pStoragePassword,0);
+ packet(0x093b,clif->pMoveFromKafra,2,4);
+ packet(0x093d,clif->pTakeItem,2);
+ packet(0x093e,clif->pDull/*,XXX*/);
+ packet(0x0943,clif->pPartyInvite2,2);
+ packet(0x095f,clif->pDull/*,XXX*/);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-10-11aRagexe, 2017-10-11bRagexe
#if PACKETVER == 20171011
- packet(0x023b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x087b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0882,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0950,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0954,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x023b,clif->pWalkToXY,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pStoragePassword,0);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x087b,clif->pFriendsListAdd,2);
+ packet(0x0882,clif->pHomMenu,2,4);
+ packet(0x0950,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0954,clif->pChangeDir,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-10-18aRagexe
#if PACKETVER == 20171018
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0363,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x086a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x087a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x087e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0889,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x089a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x089f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x08a6,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0938,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0944,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x094a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x094f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0363,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0364,clif->pMoveToKafra,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pTakeItem,2);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x086a,clif->pDull/*,XXX*/);
+ packet(0x087a,clif->pDull/*,XXX*/);
+ packet(0x087e,clif->pHomMenu,2,4);
+ packet(0x0889,clif->pMoveFromKafra,2,4);
+ packet(0x089a,clif->pDropItem,2,4);
+ packet(0x089f,clif->pPartyInvite2,2);
+ packet(0x08a6,clif->pChangeDir,2,4);
+ packet(0x0938,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0944,clif->pStoragePassword,0);
+ packet(0x094a,clif->pFriendsListAdd,2);
+ packet(0x094f,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-10-25bRagexe, 2017-10-25cRagexe, 2017-10-25dRagexe, 2017-10-25eRagexe
#if PACKETVER == 20171025
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x08a2,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x08a2,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-11-01aRagexe
#if PACKETVER == 20171101
- packet(0x022d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0368,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0369,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0438,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0835,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x085b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0860,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x086c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0872,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0876,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0886,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x088e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0890,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0895,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0899,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x089b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x089c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x08a0,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x08ab,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x08ad,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x091b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0939,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x094a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x094d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0957,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x095a,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0962,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0966,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x022d,clif->pStoragePassword,0);
+ packet(0x0368,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0369,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0438,clif->pTickSend,2);
+ packet(0x0835,clif->pDropItem,2,4);
+ packet(0x085b,clif->pHomMenu,2,4);
+ packet(0x0860,clif->pGetCharNameRequest,2);
+ packet(0x086c,clif->pUseSkillToId,2,4,6);
+ packet(0x0872,clif->pFriendsListAdd,2);
+ packet(0x0876,clif->pChangeDir,2,4);
+ packet(0x0886,clif->pDull/*,XXX*/);
+ packet(0x088e,clif->pReqClickBuyingStore,2);
+ packet(0x0890,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0895,clif->pDull/*,XXX*/);
+ packet(0x0899,clif->pPartyInvite2,2);
+ packet(0x089b,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x089c,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x08a0,clif->pMoveFromKafra,2,4);
+ packet(0x08ab,clif->pItemListWindowSelected,2,4,8);
+ packet(0x08ad,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x091b,clif->pMoveToKafra,2,4);
+ packet(0x0939,clif->pWalkToXY,2);
+ packet(0x094a,clif->pReqCloseBuyingStore,0);
+ packet(0x094d,clif->pSolveCharName,2);
+ packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0957,clif->pActionRequest,2,6);
+ packet(0x095a,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0962,clif->pTakeItem,2);
+ packet(0x0966,clif->pUseSkillToPos,2,4,6,8);
#endif
// 2017-11-08aRagexe
#if PACKETVER == 20171108
- packet(0x0202,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0361,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x07e4,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0815,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0819,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0838,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x085d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0863,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0878,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x087e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0884,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0896,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0897,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x08a2,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x08a9,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x08ad,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x091d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x091f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0940,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0941,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0945,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0947,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0949,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x094e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0958,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x095a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0963,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0965,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0967,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0202,clif->pTickSend,2);
+ packet(0x0361,clif->pSearchStoreInfoNextPage,0);
+ packet(0x07e4,clif->pSolveCharName,2);
+ packet(0x0815,clif->pStoragePassword,0);
+ packet(0x0819,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0838,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x085d,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0863,clif->pWalkToXY,2);
+ packet(0x0878,clif->pFriendsListAdd,2);
+ packet(0x087e,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0884,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0896,clif->pDull/*,XXX*/);
+ packet(0x0897,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x08a2,clif->pUseSkillToId,2,4,6);
+ packet(0x08a9,clif->pHomMenu,2,4);
+ packet(0x08ad,clif->pGetCharNameRequest,2);
+ packet(0x091d,clif->pReqCloseBuyingStore,0);
+ packet(0x091f,clif->pChangeDir,2,4);
+ packet(0x0940,clif->pReqClickBuyingStore,2);
+ packet(0x0941,clif->pMoveToKafra,2,4);
+ packet(0x0945,clif->pTakeItem,2);
+ packet(0x0947,clif->pDull/*,XXX*/);
+ packet(0x0949,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x094e,clif->pPartyInvite2,2);
+ packet(0x0958,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x095a,clif->pMoveFromKafra,2,4);
+ packet(0x0963,clif->pActionRequest,2,6);
+ packet(0x0965,clif->pDropItem,2,4);
+ packet(0x0967,clif->pUseSkillToPos,2,4,6,8);
#endif
// 2017-11-15aRagexe
#if PACKETVER == 20171115
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0365,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0802,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x086d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x086f,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x087e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0883,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x088b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0890,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0898,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08a4,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0926,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0958,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x095a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0365,clif->pDropItem,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pReqClickBuyingStore,2);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0802,clif->pFriendsListAdd,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x086d,clif->pDull/*,XXX*/);
+ packet(0x086f,clif->pItemListWindowSelected,2,4,8);
+ packet(0x087e,clif->pMoveFromKafra,2,4);
+ packet(0x0883,clif->pDull/*,XXX*/);
+ packet(0x088b,clif->pMoveToKafra,2,4);
+ packet(0x0890,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0898,clif->pStoragePassword,0);
+ packet(0x08a4,clif->pChangeDir,2,4);
+ packet(0x0926,clif->pTakeItem,2);
+ packet(0x0958,clif->pHomMenu,2,4);
+ packet(0x095a,clif->pPartyInvite2,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-11-22aRagexe
#if PACKETVER == 20171122
- packet(0x0281,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x02c4,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x035f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0838,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x083c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x085b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0862,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0867,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0877,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0885,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0890,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0891,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0893,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0897,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0898,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x089a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x089e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x08a6,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x08a9,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x091e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0920,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0923,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0934,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x093b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0945,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0946,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0947,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0962,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0968,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0281,clif->pSolveCharName,2);
+ packet(0x02c4,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x035f,clif->pDull/*,XXX*/);
+ packet(0x0838,clif->pMoveToKafra,2,4);
+ packet(0x083c,clif->pHomMenu,2,4);
+ packet(0x085b,clif->pGetCharNameRequest,2);
+ packet(0x0862,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0867,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0877,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0885,clif->pDull/*,XXX*/);
+ packet(0x0890,clif->pTickSend,2);
+ packet(0x0891,clif->pTakeItem,2);
+ packet(0x0893,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0897,clif->pChangeDir,2,4);
+ packet(0x0898,clif->pDropItem,2,4);
+ packet(0x089a,clif->pMoveFromKafra,2,4);
+ packet(0x089e,clif->pActionRequest,2,6);
+ packet(0x08a6,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x08a9,clif->pReqClickBuyingStore,2);
+ packet(0x091e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0920,clif->pReqCloseBuyingStore,0);
+ packet(0x0923,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0934,clif->pStoragePassword,0);
+ packet(0x093b,clif->pUseSkillToId,2,4,6);
+ packet(0x0945,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0946,clif->pFriendsListAdd,2);
+ packet(0x0947,clif->pWalkToXY,2);
+ packet(0x0962,clif->pPartyInvite2,2);
+ packet(0x0968,clif->pReqOpenBuyingStore,2,4,8,9,89);
#endif
// 2017-11-29aRagexe
#if PACKETVER == 20171129
- packet(0x02c4,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x035f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0363,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0365,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0862,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x086d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0876,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0878,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x088a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x089c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x08a5,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0940,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x094b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0953,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0966,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x02c4,clif->pChangeDir,2,4);
+ packet(0x035f,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0363,clif->pFriendsListAdd,2);
+ packet(0x0365,clif->pDropItem,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pPartyInvite2,2);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0862,clif->pTakeItem,2);
+ packet(0x086d,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0876,clif->pDull/*,XXX*/);
+ packet(0x0878,clif->pStoragePassword,0);
+ packet(0x088a,clif->pItemListWindowSelected,2,4,8);
+ packet(0x089c,clif->pHomMenu,2,4);
+ packet(0x08a5,clif->pMoveToKafra,2,4);
+ packet(0x0940,clif->pTickSend,2);
+ packet(0x094b,clif->pDull/*,XXX*/);
+ packet(0x0953,clif->pMoveFromKafra,2,4);
+ packet(0x0966,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-12-06bRagexe, 2017-12-06cRagexe
#if PACKETVER == 20171206
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0867,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x086a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x086e,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0885,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0888,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0897,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x089d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08a2,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x08a4,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x091d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0923,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x092e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0936,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0942,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0958,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0961,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0867,clif->pDropItem,2,4);
+ packet(0x086a,clif->pDull/*,XXX*/);
+ packet(0x086e,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0885,clif->pTickSend,2);
+ packet(0x0888,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0897,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x089d,clif->pStoragePassword,0);
+ packet(0x08a2,clif->pPartyInvite2,2);
+ packet(0x08a4,clif->pMoveFromKafra,2,4);
+ packet(0x091d,clif->pFriendsListAdd,2);
+ packet(0x0923,clif->pMoveToKafra,2,4);
+ packet(0x092e,clif->pDull/*,XXX*/);
+ packet(0x0936,clif->pChangeDir,2,4);
+ packet(0x0942,clif->pHomMenu,2,4);
+ packet(0x0958,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0961,clif->pTakeItem,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-12-13bRagexe
#if PACKETVER == 20171213
- packet(0x0202,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0860,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0881,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0890,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x091a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0957,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pPartyInvite2,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pFriendsListAdd,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0860,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0881,clif->pDull/*,XXX*/);
+ packet(0x0890,clif->pStoragePassword,0);
+ packet(0x091a,clif->pChangeDir,2,4);
+ packet(0x0957,clif->pHomMenu,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-12-20aRagexe
#if PACKETVER == 20171220
- packet(0x0281,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0366,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0369,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0436,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0437,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x085e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0861,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0872,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0873,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0880,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0882,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0885,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x088c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0899,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x089e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x08a7,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x091b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x091e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0924,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0929,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0933,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x093e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0941,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0946,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x094e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0951,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0957,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0960,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0964,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0281,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0366,clif->pMoveFromKafra,2,4);
+ packet(0x0369,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0436,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0437,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x085e,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0861,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0872,clif->pUseSkillToId,2,4,6);
+ packet(0x0873,clif->pGetCharNameRequest,2);
+ packet(0x0880,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0882,clif->pTickSend,2);
+ packet(0x0885,clif->pItemListWindowSelected,2,4,8);
+ packet(0x088c,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0899,clif->pStoragePassword,0);
+ packet(0x089e,clif->pWalkToXY,2);
+ packet(0x08a7,clif->pReqCloseBuyingStore,0);
+ packet(0x091b,clif->pTakeItem,2);
+ packet(0x091e,clif->pSolveCharName,2);
+ packet(0x0924,clif->pMoveToKafra,2,4);
+ packet(0x0929,clif->pDropItem,2,4);
+ packet(0x0933,clif->pChangeDir,2,4);
+ packet(0x093e,clif->pActionRequest,2,6);
+ packet(0x0941,clif->pReqClickBuyingStore,2);
+ packet(0x0946,clif->pDull/*,XXX*/);
+ packet(0x094e,clif->pDull/*,XXX*/);
+ packet(0x0951,clif->pHomMenu,2,4);
+ packet(0x0957,clif->pFriendsListAdd,2);
+ packet(0x0960,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0964,clif->pPartyInvite2,2);
#endif
// 2017-12-27aRagexe
#if PACKETVER == 20171227
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0802,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x087d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0888,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x088a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x088d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08a0,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08a5,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x092c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x092e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0938,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0945,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0946,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0969,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x096a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pActionRequest,2,6);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pChangeDir,2,4);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0802,clif->pGetCharNameRequest,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x087d,clif->pStoragePassword,0);
+ packet(0x0888,clif->pMoveFromKafra,2,4);
+ packet(0x088a,clif->pDull/*,XXX*/);
+ packet(0x088d,clif->pTakeItem,2);
+ packet(0x08a0,clif->pMoveToKafra,2,4);
+ packet(0x08a5,clif->pHomMenu,2,4);
+ packet(0x092c,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x092e,clif->pDull/*,XXX*/);
+ packet(0x0938,clif->pPartyInvite2,2);
+ packet(0x0945,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0946,clif->pFriendsListAdd,2);
+ packet(0x0969,clif->pDropItem,2,4);
+ packet(0x096a,clif->pPartyBookingRegisterReq,2,4);
#endif
// 2018-01-03aRagexe, 2018-01-03bRagexe
#if PACKETVER == 20180103
- packet(0x02c4,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0363,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0865,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x086b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x086d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0872,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0876,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0879,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x088e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0899,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x089f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x08a9,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08ab,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x08ac,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x091d,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0922,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0926,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0927,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x092c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0935,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0938,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0941,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0946,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0948,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x094e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x095d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x095f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0960,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x02c4,clif->pMoveToKafra,2,4);
+ packet(0x0363,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0865,clif->pDull/*,XXX*/);
+ packet(0x086b,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x086d,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0872,clif->pReqClickBuyingStore,2);
+ packet(0x0876,clif->pTickSend,2);
+ packet(0x0879,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x088e,clif->pReqCloseBuyingStore,0);
+ packet(0x0899,clif->pFriendsListAdd,2);
+ packet(0x089f,clif->pSolveCharName,2);
+ packet(0x08a9,clif->pChangeDir,2,4);
+ packet(0x08ab,clif->pGetCharNameRequest,2);
+ packet(0x08ac,clif->pItemListWindowSelected,2,4,8);
+ packet(0x091d,clif->pActionRequest,2,6);
+ packet(0x0922,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0926,clif->pDull/*,XXX*/);
+ packet(0x0927,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x092c,clif->pMoveFromKafra,2,4);
+ packet(0x0935,clif->pTakeItem,2);
+ packet(0x0938,clif->pUseSkillToId,2,4,6);
+ packet(0x0941,clif->pWalkToXY,2);
+ packet(0x0946,clif->pStoragePassword,0);
+ packet(0x0948,clif->pHomMenu,2,4);
+ packet(0x094e,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x095d,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x095f,clif->pDropItem,2,4);
+ packet(0x0960,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
#endif
// 2018-01-17aRagexe
#if PACKETVER == 20180117
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0875,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0875,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2018-01-24bRagexe, 2018-01-31Ragexe
#if PACKETVER == 20180124 || \
PACKETVER == 20180131
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0802,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0868,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x086a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x086f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x087a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0888,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0890,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0919,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0940,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0946,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x094d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0958,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0961,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pMoveToKafra,2,4);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0802,clif->pDropItem,2,4);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085f,clif->pStoragePassword,0);
+ packet(0x0868,clif->pDull/*,XXX*/);
+ packet(0x086a,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x086f,clif->pDull/*,XXX*/);
+ packet(0x087a,clif->pPartyInvite2,2);
+ packet(0x0888,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0890,clif->pMoveFromKafra,2,4);
+ packet(0x0919,clif->pFriendsListAdd,2);
+ packet(0x0940,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0946,clif->pItemListWindowSelected,2,4,8);
+ packet(0x094d,clif->pTakeItem,2);
+ packet(0x0958,clif->pChangeDir,2,4);
+ packet(0x0961,clif->pHomMenu,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2018-02-07bRagexe, 2018-02-07cRagexe
#if PACKETVER == 20180207
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0360,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0870,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0881,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x092c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x092e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0940,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0950,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pReqClickBuyingStore,2);
+ packet(0x0360,clif->pDull/*,XXX*/);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0870,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0881,clif->pFriendsListAdd,2);
+ packet(0x092c,clif->pHomMenu,2,4);
+ packet(0x092e,clif->pChangeDir,2,4);
+ packet(0x0940,clif->pTickSend,2);
+ packet(0x0950,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2018-02-13aRagexe, 2018-02-13bRagexe
#if PACKETVER == 20180213
- packet(0x0369,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0802,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0817,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x085a,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x086f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0874,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0875,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0878,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x087b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0882,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x088c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0892,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0898,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x089c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x08a3,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x08a5,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x08a9,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x08ad,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0917,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0922,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0924,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0926,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0933,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0936,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x093c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0943,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0955,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x095a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0962,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0369,clif->pStoragePassword,0);
+ packet(0x0802,clif->pDropItem,2,4);
+ packet(0x0817,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x085a,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x086f,clif->pPartyInvite2,2);
+ packet(0x0874,clif->pTickSend,2);
+ packet(0x0875,clif->pMoveFromKafra,2,4);
+ packet(0x0878,clif->pChangeDir,2,4);
+ packet(0x087b,clif->pReqClickBuyingStore,2);
+ packet(0x0882,clif->pUseSkillToId,2,4,6);
+ packet(0x088c,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0892,clif->pTakeItem,2);
+ packet(0x0898,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x089c,clif->pDull/*,XXX*/);
+ packet(0x08a3,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x08a5,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x08a9,clif->pReqCloseBuyingStore,0);
+ packet(0x08ad,clif->pSolveCharName,2);
+ packet(0x0917,clif->pFriendsListAdd,2);
+ packet(0x0922,clif->pWalkToXY,2);
+ packet(0x0924,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0926,clif->pDull/*,XXX*/);
+ packet(0x0933,clif->pActionRequest,2,6);
+ packet(0x0936,clif->pSearchStoreInfoNextPage,0);
+ packet(0x093c,clif->pGetCharNameRequest,2);
+ packet(0x0943,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0955,clif->pMoveToKafra,2,4);
+ packet(0x095a,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0962,clif->pHomMenu,2,4);
#endif
// 2018-02-21bRagexe
#if PACKETVER == 20180221
- packet(0x0202,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0366,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0436,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0838,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0867,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x086c,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x086f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0871,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0876,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0879,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x087d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0880,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0881,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0883,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x088f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0891,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0897,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0899,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x089d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0917,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x091e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0929,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x093d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x094b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x094d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x094e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0957,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0964,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x096a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0202,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0366,clif->pDull/*,XXX*/);
+ packet(0x0436,clif->pFriendsListAdd,2);
+ packet(0x0838,clif->pChangeDir,2,4);
+ packet(0x0867,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x086c,clif->pReqClickBuyingStore,2);
+ packet(0x086f,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0871,clif->pDropItem,2,4);
+ packet(0x0876,clif->pHomMenu,2,4);
+ packet(0x0879,clif->pMoveToKafra,2,4);
+ packet(0x087d,clif->pWalkToXY,2);
+ packet(0x0880,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0881,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0883,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x088f,clif->pSolveCharName,2);
+ packet(0x0891,clif->pDull/*,XXX*/);
+ packet(0x0897,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0899,clif->pSearchStoreInfoNextPage,0);
+ packet(0x089d,clif->pTickSend,2);
+ packet(0x0917,clif->pStoragePassword,0);
+ packet(0x091e,clif->pMoveFromKafra,2,4);
+ packet(0x0929,clif->pReqCloseBuyingStore,0);
+ packet(0x093d,clif->pPartyInvite2,2);
+ packet(0x094b,clif->pUseSkillToId,2,4,6);
+ packet(0x094d,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x094e,clif->pTakeItem,2);
+ packet(0x0957,clif->pGetCharNameRequest,2);
+ packet(0x0964,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x096a,clif->pActionRequest,2,6);
#endif
// 2018-03-07bRagexe, 2018-03-09aRagexe
#if PACKETVER == 20180307 || \
PACKETVER == 20180309
- packet(0x0281,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x035f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0437,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x07e4,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0861,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0862,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0864,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x086c,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0870,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0872,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0877,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x088d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0893,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x089b,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x08a6,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x08aa,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x08ab,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0917,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0920,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0937,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0939,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x093d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0941,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0944,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0948,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0951,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0954,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0957,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0969,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0281,clif->pDull/*,XXX*/);
+ packet(0x035f,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0437,clif->pDropItem,2,4);
+ packet(0x07e4,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0861,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0862,clif->pReqClickBuyingStore,2);
+ packet(0x0864,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x086c,clif->pTickSend,2);
+ packet(0x0870,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0872,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0877,clif->pWalkToXY,2);
+ packet(0x088d,clif->pMoveFromKafra,2,4);
+ packet(0x0893,clif->pUseSkillToId,2,4,6);
+ packet(0x089b,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x08a6,clif->pSearchStoreInfoNextPage,0);
+ packet(0x08aa,clif->pFriendsListAdd,2);
+ packet(0x08ab,clif->pChangeDir,2,4);
+ packet(0x0917,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0920,clif->pMoveToKafra,2,4);
+ packet(0x0937,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0939,clif->pStoragePassword,0);
+ packet(0x093d,clif->pReqCloseBuyingStore,0);
+ packet(0x0941,clif->pGetCharNameRequest,2);
+ packet(0x0944,clif->pHomMenu,2,4);
+ packet(0x0948,clif->pPartyInvite2,2);
+ packet(0x0951,clif->pDull/*,XXX*/);
+ packet(0x0954,clif->pTakeItem,2);
+ packet(0x0957,clif->pSolveCharName,2);
+ packet(0x0969,clif->pActionRequest,2,6);
#endif
// 2018-03-14nRagexe
#if PACKETVER == 20180314
- packet(0x0361,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0366,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0369,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0436,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x085a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0862,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0863,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0868,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x086e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0874,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x087a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0888,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x088a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x088d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0894,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x089b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0921,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0927,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x092f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0933,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0935,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0945,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x094d,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x094e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0956,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0959,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x095f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0962,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0967,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
-#endif
-
-// 2018-11-21bRagexe, 2018-11-28aRagexe, 2018-11-28bRagexe, 2018-11-28cRagexe, 2018-12-05aRagexe, 2018-12-12aRagexe, 2018-12-12bRagexe, 2018-12-19bRagexe, 2018-12-26aRagexe, 2019-01-09aRagexe, 2019-01-16bRagexe, 2019-01-16cRagexe, 2019-01-23dRagexe, 2019-02-13bRagexe, 2019-02-13eRagexe, 2019-02-27aRagexe, 2019-02-28aRagexe, 2019-03-06bRagexe, 2019-03-06cRagexe, 2019-03-13aRagexe, 2019-03-20aRagexe, 2019-03-22aRagexe, 2019-03-27bRagexe, 2019-04-03aRagexe, 2019-04-17aRagexe, 2019-04-18aRagexe, 2019-05-08cRagexe, 2019-05-22bRagexe, 2019-05-22cRagexe, 2019-05-23aRagexe, 2019-05-29aRagexe, 2019-05-29cRagexe, 2019-05-30aRagexe, 2019-06-05fRagexe, 2019-06-05KRagexe, 2019-06-19bRagexe, 2019-06-19eRagexe, 2019-06-19hRagexe, 2019-07-03aRagexe, 2019-07-17aRagexe, 2019-07-17dRagexe, 2019-07-24aRagexe, 2019-07-31bRagexe, 2019-08-02aRagexe, 2019-08-07aRagexe, 2019-08-21aRagexe, 2019-08-28aRagexe
-#if PACKETVER == 20181121 || \
- PACKETVER == 20181128 || \
- PACKETVER == 20181205 || \
- PACKETVER == 20181212 || \
- PACKETVER == 20181219 || \
- PACKETVER == 20181226 || \
- PACKETVER == 20190109 || \
- PACKETVER == 20190116 || \
- PACKETVER == 20190123 || \
- PACKETVER == 20190213 || \
- PACKETVER == 20190227 || \
- PACKETVER == 20190228 || \
- PACKETVER == 20190306 || \
- PACKETVER == 20190313 || \
- PACKETVER == 20190320 || \
- PACKETVER == 20190322 || \
- PACKETVER == 20190327 || \
- PACKETVER == 20190403 || \
- PACKETVER == 20190417 || \
- PACKETVER == 20190418 || \
- PACKETVER == 20190508 || \
- PACKETVER == 20190522 || \
- PACKETVER == 20190523 || \
- PACKETVER == 20190529 || \
- PACKETVER == 20190530 || \
- PACKETVER == 20190605 || \
- PACKETVER == 20190619 || \
- PACKETVER == 20190703 || \
- PACKETVER == 20190717 || \
- PACKETVER == 20190724 || \
- PACKETVER == 20190731 || \
- PACKETVER == 20190802 || \
- PACKETVER == 20190807 || \
- PACKETVER == 20190821 || \
- PACKETVER >= 20190828
- packet(0x0202,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x022d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x023b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0281,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x02c4,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x035f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0360,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0361,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0362,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0363,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0365,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0366,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0436,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0438,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x07e4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x07ec,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0811,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0815,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0817,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0835,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0838,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 14
-#endif
-
-// 2019-09-04aRagexe, 2019-09-04bRagexe, 2019-09-18bRagexe, 2019-09-25aRagexe, 2019-09-25bRagexe, 2019-10-02cRagexe, 2019-10-02dRagexe, 2019-10-16fRagexe, 2019-10-16gRagexe, 2019-10-18aRagexe, 2019-10-23aRagexe, 2019-10-30cRagexe, 2019-11-06aRagexe, 2019-11-07aRagexe, 2019-11-13cRagexe, 2019-11-13eRagexe, 2019-11-20aRagexe, 2019-11-20dRagexe, 2019-11-27aRagexe, 2019-11-27bRagexe, 2019-12-04aRagexe, 2019-12-04bRagexe, 2019-12-11aRagexe, 2019-12-18bRagexe, 2019-12-24aRagexe, 2019-12-24bRagexe, 2020-01-08aRagexe, 2020-01-22cRagexe, 2020-01-29bRagexe, 2020-01-30aRagexe, 2020-02-05aRagexe, 2020-02-06aRagexe
-#if PACKETVER == 20190904 || \
- PACKETVER == 20190918 || \
- PACKETVER == 20190925 || \
- PACKETVER == 20191002 || \
- PACKETVER == 20191016 || \
- PACKETVER == 20191018 || \
- PACKETVER == 20191023 || \
- PACKETVER == 20191030 || \
- PACKETVER == 20191106 || \
- PACKETVER == 20191107 || \
- PACKETVER == 20191113 || \
- PACKETVER == 20191120 || \
- PACKETVER == 20191127 || \
- PACKETVER == 20191204 || \
- PACKETVER == 20191211 || \
- PACKETVER == 20191218 || \
- PACKETVER == 20191224 || \
- PACKETVER == 20200108 || \
- PACKETVER == 20200122 || \
- PACKETVER == 20200129 || \
- PACKETVER == 20200130 || \
- PACKETVER == 20200205 || \
- PACKETVER == 20200206
- packet(0x0202,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x022d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x023b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0281,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x02c4,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x035f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0360,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0361,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0362,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0363,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0365,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0366,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 31
- packet(0x0368,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0436,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0438,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x07e4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x07ec,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0811,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0815,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0817,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0835,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0838,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 14
+ packet(0x0361,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0366,clif->pUseSkillToId,2,4,6);
+ packet(0x0369,clif->pHomMenu,2,4);
+ packet(0x0436,clif->pDropItem,2,4);
+ packet(0x085a,clif->pGetCharNameRequest,2);
+ packet(0x0862,clif->pTakeItem,2);
+ packet(0x0863,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0868,clif->pDull/*,XXX*/);
+ packet(0x086e,clif->pMoveFromKafra,2,4);
+ packet(0x0874,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x087a,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0888,clif->pChangeDir,2,4);
+ packet(0x088a,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x088d,clif->pStoragePassword,0);
+ packet(0x0894,clif->pReqCloseBuyingStore,0);
+ packet(0x089b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0921,clif->pActionRequest,2,6);
+ packet(0x0927,clif->pSearchStoreInfoNextPage,0);
+ packet(0x092f,clif->pWalkToXY,2);
+ packet(0x0933,clif->pMoveToKafra,2,4);
+ packet(0x0935,clif->pPartyInvite2,2);
+ packet(0x0945,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x094d,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x094e,clif->pFriendsListAdd,2);
+ packet(0x0956,clif->pDull/*,XXX*/);
+ packet(0x0959,clif->pReqClickBuyingStore,2);
+ packet(0x095f,clif->pTickSend,2);
+ packet(0x0962,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0967,clif->pSolveCharName,2);
#endif
diff --git a/src/map/packets_shuffle_re.h b/src/map/packets_shuffle_re.h
index 757cfee55..e7ed71a3b 100644
--- a/src/map/packets_shuffle_re.h
+++ b/src/map/packets_shuffle_re.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2020 Hercules Dev Team
- * Copyright (C) 2018-2020 Andrei Karas (4144)
+ * Copyright (C) 2013-2020 Hercules Dev Team
+ * Copyright (C) 2018-2020 Andrei Karas (4144)
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -40,9585 +40,9585 @@
// 2012-07-10aRagexeRE, 2012-07-12aRagexeRE
#if PACKETVER == 20120710 || \
PACKETVER == 20120712
- packet(0x0202,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x02c4,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0362,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0365,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0367,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0436,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x07e4,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0811,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x085b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0877,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0878,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x087f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x088d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0893,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0899,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08a3,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x08a6,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x08a8,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x08aa,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x092d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0936,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0948,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x094b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x094e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0953,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0956,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0958,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0960,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0202,clif->pSolveCharName,2);
+ packet(0x02c4,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0362,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0365,clif->pFriendsListAdd,2);
+ packet(0x0367,clif->pMoveToKafra,2,4);
+ packet(0x0436,clif->pActionRequest,2,6);
+ packet(0x07e4,clif->pTickSend,2);
+ packet(0x0811,clif->pReqClickBuyingStore,2);
+ packet(0x085b,clif->pUseSkillToId,2,4,6);
+ packet(0x0877,clif->pGetCharNameRequest,2);
+ packet(0x0878,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x087f,clif->pWalkToXY,2);
+ packet(0x088d,clif->pChangeDir,2,4);
+ packet(0x0893,clif->pStoragePassword,0);
+ packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0899,clif->pTakeItem,2);
+ packet(0x08a3,clif->pDropItem,2,4);
+ packet(0x08a6,clif->pItemListWindowSelected,2,4,8);
+ packet(0x08a8,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x08aa,clif->pMoveFromKafra,2,4);
+ packet(0x092d,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0936,clif->pDull/*,XXX*/);
+ packet(0x0948,clif->pReqCloseBuyingStore,0);
+ packet(0x094b,clif->pHomMenu,2,4);
+ packet(0x094e,clif->pPartyInvite2,2);
+ packet(0x0953,clif->pDull/*,XXX*/);
+ packet(0x0956,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0958,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0960,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
#endif
// 2012-07-16aRagexeRE
#if PACKETVER == 20120716
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x089f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x089f,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2012-07-24aRagexeRE
#if PACKETVER == 20120724
- packet(0x035f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0815,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0835,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0865,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0866,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0872,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0877,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x087c,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0887,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0888,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x088e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x08a1,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x08a9,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x08ab,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x091c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x091f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0928,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0929,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x092b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0935,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0938,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x093c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0945,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0957,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0959,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0963,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0965,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0966,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x035f,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pReqClickBuyingStore,2);
+ packet(0x0815,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0835,clif->pPartyInvite2,2);
+ packet(0x0865,clif->pReqCloseBuyingStore,0);
+ packet(0x0866,clif->pDull/*,XXX*/);
+ packet(0x0872,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0877,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x087c,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0887,clif->pChangeDir,2,4);
+ packet(0x0888,clif->pHomMenu,2,4);
+ packet(0x088e,clif->pUseSkillToId,2,4,6);
+ packet(0x08a1,clif->pGetCharNameRequest,2);
+ packet(0x08a9,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x08ab,clif->pTakeItem,2);
+ packet(0x091c,clif->pWalkToXY,2);
+ packet(0x091f,clif->pTickSend,2);
+ packet(0x0928,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0929,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x092b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0935,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0938,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x093c,clif->pMoveToKafra,2,4);
+ packet(0x0945,clif->pActionRequest,2,6);
+ packet(0x0957,clif->pStoragePassword,0);
+ packet(0x0959,clif->pFriendsListAdd,2);
+ packet(0x0963,clif->pDropItem,2,4);
+ packet(0x0965,clif->pSolveCharName,2);
+ packet(0x0966,clif->pMoveFromKafra,2,4);
#endif
// 2012-08-01aRagexeRE, 2012-08-01bRagexeRE
#if PACKETVER == 20120801
- packet(0x0360,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0438,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x085d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x086a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x086b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x086f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0873,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0875,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x087b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x088b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0890,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0895,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x089c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x089d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x089f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x08a2,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x08aa,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08ab,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0917,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x091d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x092a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x092e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0930,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0934,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x093c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0941,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0946,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x094e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0964,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0360,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0438,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x085d,clif->pSolveCharName,2);
+ packet(0x086a,clif->pItemListWindowSelected,2,4,8);
+ packet(0x086b,clif->pGetCharNameRequest,2);
+ packet(0x086f,clif->pReqCloseBuyingStore,0);
+ packet(0x0873,clif->pUseSkillToId,2,4,6);
+ packet(0x0875,clif->pTakeItem,2);
+ packet(0x087b,clif->pSearchStoreInfoNextPage,0);
+ packet(0x088b,clif->pHomMenu,2,4);
+ packet(0x0890,clif->pActionRequest,2,6);
+ packet(0x0895,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x089c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x089d,clif->pDropItem,2,4);
+ packet(0x089f,clif->pWalkToXY,2);
+ packet(0x08a2,clif->pFriendsListAdd,2);
+ packet(0x08aa,clif->pChangeDir,2,4);
+ packet(0x08ab,clif->pMoveFromKafra,2,4);
+ packet(0x0917,clif->pStoragePassword,0);
+ packet(0x091d,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x092a,clif->pDull/*,XXX*/);
+ packet(0x092e,clif->pReqClickBuyingStore,2);
+ packet(0x0930,clif->pTickSend,2);
+ packet(0x0934,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x093c,clif->pPartyInvite2,2);
+ packet(0x0941,clif->pMoveToKafra,2,4);
+ packet(0x0946,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x094e,clif->pDull/*,XXX*/);
+ packet(0x0964,clif->pSearchStoreInfoListItemClick,2,6,10);
#endif
// 2012-08-08aRagexeRE, 2012-08-08bRagexeRE, 2012-08-08cRagexeRE, 2012-08-08dRagexeRE
#if PACKETVER == 20120808
- packet(0x0202,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x088f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x093d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0940,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0366,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pFriendsListAdd,2);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085f,clif->pStoragePassword,0);
+ packet(0x088f,clif->pChangeDir,2,4);
+ packet(0x093d,clif->pHomMenu,2,4);
+ packet(0x0940,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2012-08-14aRagexeRE, 2012-08-14bRagexeRE
#if PACKETVER == 20120814
- packet(0x0281,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0361,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0365,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0366,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0438,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x07ec,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0815,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0838,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x085e,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0861,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0862,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0865,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0868,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x086f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0875,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x087f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0882,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x088b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x088d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0895,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x08a8,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x091f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0920,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0929,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0932,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0934,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0941,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0967,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0969,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0281,clif->pHomMenu,2,4);
+ packet(0x0361,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0365,clif->pSolveCharName,2);
+ packet(0x0366,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0438,clif->pTickSend,2);
+ packet(0x07ec,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0815,clif->pDropItem,2,4);
+ packet(0x0838,clif->pReqCloseBuyingStore,0);
+ packet(0x085e,clif->pMoveToKafra,2,4);
+ packet(0x0861,clif->pReqClickBuyingStore,2);
+ packet(0x0862,clif->pTakeItem,2);
+ packet(0x0865,clif->pMoveFromKafra,2,4);
+ packet(0x0868,clif->pActionRequest,2,6);
+ packet(0x086f,clif->pStoragePassword,0);
+ packet(0x0875,clif->pWalkToXY,2);
+ packet(0x087f,clif->pPartyInvite2,2);
+ packet(0x0882,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x088b,clif->pFriendsListAdd,2);
+ packet(0x088d,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0895,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x08a8,clif->pDull/*,XXX*/);
+ packet(0x091f,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0920,clif->pGetCharNameRequest,2);
+ packet(0x0929,clif->pDull/*,XXX*/);
+ packet(0x0932,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0934,clif->pUseSkillToId,2,4,6);
+ packet(0x0941,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0967,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0969,clif->pChangeDir,2,4);
#endif
// 2012-08-22aRagexeRE, 2012-08-22bRagexeRE, 2012-08-22cRagexeRE
#if PACKETVER == 20120822
- packet(0x0365,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0437,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x085a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x085c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x085d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x086b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x086e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0872,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x087c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x087d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0885,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x088a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0899,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x089f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x08a5,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x08ab,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0917,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0924,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0927,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0935,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0937,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0940,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0943,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x094d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x094e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0953,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0955,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0958,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x095b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0365,clif->pFriendsListAdd,2);
+ packet(0x0437,clif->pTakeItem,2);
+ packet(0x085a,clif->pWalkToXY,2);
+ packet(0x085c,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x085d,clif->pUseSkillToId,2,4,6);
+ packet(0x086b,clif->pSolveCharName,2);
+ packet(0x086e,clif->pChangeDir,2,4);
+ packet(0x0872,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x087c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x087d,clif->pTickSend,2);
+ packet(0x0885,clif->pDull/*,XXX*/);
+ packet(0x088a,clif->pMoveToKafra,2,4);
+ packet(0x0899,clif->pPartyInvite2,2);
+ packet(0x089f,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x08a5,clif->pDull/*,XXX*/);
+ packet(0x08ab,clif->pActionRequest,2,6);
+ packet(0x0917,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0924,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0927,clif->pGetCharNameRequest,2);
+ packet(0x0935,clif->pHomMenu,2,4);
+ packet(0x0937,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0940,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0943,clif->pMoveFromKafra,2,4);
+ packet(0x094d,clif->pStoragePassword,0);
+ packet(0x094e,clif->pDropItem,2,4);
+ packet(0x0953,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0955,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0958,clif->pReqCloseBuyingStore,0);
+ packet(0x095b,clif->pReqClickBuyingStore,2);
#endif
// 2012-08-30aRagexeRE, 2012-08-30bRagexeRE
#if PACKETVER == 20120830
- packet(0x022d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0364,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0802,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0838,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0861,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0872,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0887,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0888,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0890,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x091d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0926,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0934,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0945,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x094b,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0964,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x022d,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0364,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pPartyInvite2,2);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0802,clif->pStoragePassword,0);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pMoveToKafra,2,4);
+ packet(0x0838,clif->pHomMenu,2,4);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0861,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0872,clif->pFriendsListAdd,2);
+ packet(0x0887,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0888,clif->pDull/*,XXX*/);
+ packet(0x0890,clif->pDull/*,XXX*/);
+ packet(0x091d,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0926,clif->pMoveFromKafra,2,4);
+ packet(0x0934,clif->pChangeDir,2,4);
+ packet(0x0945,clif->pDropItem,2,4);
+ packet(0x094b,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0964,clif->pTakeItem,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2012-09-05aRagexeRE
#if PACKETVER == 20120905
- packet(0x022d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0365,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0817,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x085a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x085d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x086f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0876,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0877,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0878,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x087a,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x087b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x087e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0887,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0895,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0897,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08a0,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x08a6,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0917,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0918,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x091a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0927,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x093c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0944,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0945,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0950,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0954,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0959,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0960,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0967,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x022d,clif->pMoveToKafra,2,4);
+ packet(0x0365,clif->pDull/*,XXX*/);
+ packet(0x0817,clif->pStoragePassword,0);
+ packet(0x085a,clif->pSearchStoreInfoNextPage,0);
+ packet(0x085d,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x086f,clif->pSolveCharName,2);
+ packet(0x0876,clif->pHomMenu,2,4);
+ packet(0x0877,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0878,clif->pWalkToXY,2);
+ packet(0x087a,clif->pUseSkillToId,2,4,6);
+ packet(0x087b,clif->pTickSend,2);
+ packet(0x087e,clif->pMoveFromKafra,2,4);
+ packet(0x0887,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0895,clif->pChangeDir,2,4);
+ packet(0x0897,clif->pTakeItem,2);
+ packet(0x08a0,clif->pDull/*,XXX*/);
+ packet(0x08a6,clif->pFriendsListAdd,2);
+ packet(0x0917,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0918,clif->pItemListWindowSelected,2,4,8);
+ packet(0x091a,clif->pGetCharNameRequest,2);
+ packet(0x0927,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x093c,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0944,clif->pPartyInvite2,2);
+ packet(0x0945,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0950,clif->pDropItem,2,4);
+ packet(0x0954,clif->pReqCloseBuyingStore,0);
+ packet(0x0959,clif->pReqClickBuyingStore,2);
+ packet(0x0960,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0967,clif->pActionRequest,2,6);
#endif
// 2012-09-11aRagexeRE
#if PACKETVER == 20120911
- packet(0x0438,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0819,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0868,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x086f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0876,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0877,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0879,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x087a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x088a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x088f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x08a4,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x08a5,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x08a6,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x08a7,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x08ad,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0930,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0935,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x093e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0948,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0949,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x094b,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0958,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0959,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0962,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0963,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0966,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0968,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x096a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0438,clif->pTickSend,2);
+ packet(0x0819,clif->pMoveFromKafra,2,4);
+ packet(0x0868,clif->pTakeItem,2);
+ packet(0x086f,clif->pWalkToXY,2);
+ packet(0x0876,clif->pHomMenu,2,4);
+ packet(0x0877,clif->pPartyInvite2,2);
+ packet(0x0879,clif->pReqClickBuyingStore,2);
+ packet(0x087a,clif->pDull/*,XXX*/);
+ packet(0x088a,clif->pGetCharNameRequest,2);
+ packet(0x088f,clif->pFriendsListAdd,2);
+ packet(0x08a4,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x08a5,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x08a6,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x08a7,clif->pDropItem,2,4);
+ packet(0x08ad,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0930,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0935,clif->pReqCloseBuyingStore,0);
+ packet(0x093e,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0948,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0949,clif->pDull/*,XXX*/);
+ packet(0x094b,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0958,clif->pUseSkillToId,2,4,6);
+ packet(0x0959,clif->pActionRequest,2,6);
+ packet(0x0962,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0963,clif->pSolveCharName,2);
+ packet(0x0966,clif->pMoveToKafra,2,4);
+ packet(0x0968,clif->pChangeDir,2,4);
+ packet(0x096a,clif->pStoragePassword,0);
#endif
// 2012-09-19aRagexeRE
#if PACKETVER == 20120919
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0956,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0956,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2012-09-25aRagexeRE, 2012-09-26aRagexeRE
#if PACKETVER == 20120925 || \
PACKETVER == 20120926
- packet(0x07e4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0815,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0819,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0835,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0838,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x085d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0869,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0873,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x087a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x087e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0887,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x088a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x088d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x088f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x089d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x08a4,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x091c,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x091e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0923,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0927,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0932,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0942,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0948,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0950,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0956,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0957,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0958,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x095e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0963,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x07e4,clif->pDull/*,XXX*/);
+ packet(0x0815,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0819,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0835,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0838,clif->pGetCharNameRequest,2);
+ packet(0x085d,clif->pHomMenu,2,4);
+ packet(0x0869,clif->pMoveToKafra,2,4);
+ packet(0x0873,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x087a,clif->pDropItem,2,4);
+ packet(0x087e,clif->pFriendsListAdd,2);
+ packet(0x0887,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x088a,clif->pPartyInvite2,2);
+ packet(0x088d,clif->pUseSkillToId,2,4,6);
+ packet(0x088f,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x089d,clif->pItemListWindowSelected,2,4,8);
+ packet(0x08a4,clif->pActionRequest,2,6);
+ packet(0x091c,clif->pSearchStoreInfoNextPage,0);
+ packet(0x091e,clif->pReqCloseBuyingStore,0);
+ packet(0x0923,clif->pTakeItem,2);
+ packet(0x0927,clif->pReqClickBuyingStore,2);
+ packet(0x0932,clif->pTickSend,2);
+ packet(0x0942,clif->pStoragePassword,0);
+ packet(0x0948,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0950,clif->pWalkToXY,2);
+ packet(0x0956,clif->pDull/*,XXX*/);
+ packet(0x0957,clif->pChangeDir,2,4);
+ packet(0x0958,clif->pSolveCharName,2);
+ packet(0x095e,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0963,clif->pMoveFromKafra,2,4);
#endif
// 2012-10-10aRagexeRE, 2012-10-10bRagexeRE, 2012-10-11aRagexeRE
#if PACKETVER == 20121010 || \
PACKETVER == 20121011
- packet(0x0202,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0817,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x085a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0869,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x086c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0874,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x087d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0883,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0888,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x088f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0891,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0896,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0898,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08a1,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x08a6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x08a9,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0925,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0934,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x093c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0942,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0946,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0947,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x094c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0957,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0958,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0959,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x095c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0964,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0969,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0202,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0817,clif->pGetCharNameRequest,2);
+ packet(0x085a,clif->pReqCloseBuyingStore,0);
+ packet(0x0869,clif->pTakeItem,2);
+ packet(0x086c,clif->pDull/*,XXX*/);
+ packet(0x0874,clif->pMoveFromKafra,2,4);
+ packet(0x087d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0883,clif->pWalkToXY,2);
+ packet(0x0888,clif->pDull/*,XXX*/);
+ packet(0x088f,clif->pPartyInvite2,2);
+ packet(0x0891,clif->pUseSkillToId,2,4,6);
+ packet(0x0896,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0898,clif->pStoragePassword,0);
+ packet(0x08a1,clif->pActionRequest,2,6);
+ packet(0x08a6,clif->pSolveCharName,2);
+ packet(0x08a9,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0925,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0934,clif->pTickSend,2);
+ packet(0x093c,clif->pMoveToKafra,2,4);
+ packet(0x0942,clif->pReqClickBuyingStore,2);
+ packet(0x0946,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0947,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x094c,clif->pDropItem,2,4);
+ packet(0x0957,clif->pChangeDir,2,4);
+ packet(0x0958,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0959,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x095c,clif->pHomMenu,2,4);
+ packet(0x0964,clif->pFriendsListAdd,2);
+ packet(0x0969,clif->pPartyBookingRegisterReq,2,4,6);
#endif
// 2012-10-17aRagexeRE, 2012-10-17bRagexeRE
#if PACKETVER == 20121017
- packet(0x023b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0365,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0868,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x086b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0887,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0888,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0897,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x089a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x08a6,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0918,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0920,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0960,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0962,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0965,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x023b,clif->pPartyInvite2,2);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0365,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pMoveFromKafra,2,4);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0868,clif->pDull/*,XXX*/);
+ packet(0x086b,clif->pDropItem,2,4);
+ packet(0x0887,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0888,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0897,clif->pMoveToKafra,2,4);
+ packet(0x089a,clif->pFriendsListAdd,2);
+ packet(0x08a6,clif->pChangeDir,2,4);
+ packet(0x0918,clif->pStoragePassword,0);
+ packet(0x0920,clif->pDull/*,XXX*/);
+ packet(0x0960,clif->pHomMenu,2,4);
+ packet(0x0962,clif->pTakeItem,2);
+ packet(0x0965,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2012-10-24aRagexeRE
#if PACKETVER == 20121024
- packet(0x0436,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0437,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0438,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0817,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0838,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x085a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0868,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0872,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0875,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x087a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x087b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x087e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0882,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0888,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0889,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x088a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x089c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x08a9,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x08aa,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0931,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0938,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x093a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0942,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0947,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0954,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0955,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x095d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x095e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0965,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0436,clif->pWalkToXY,2);
+ packet(0x0437,clif->pUseSkillToId,2,4,6);
+ packet(0x0438,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0817,clif->pActionRequest,2,6);
+ packet(0x0838,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x085a,clif->pMoveFromKafra,2,4);
+ packet(0x0868,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0872,clif->pGetCharNameRequest,2);
+ packet(0x0875,clif->pDull/*,XXX*/);
+ packet(0x087a,clif->pMoveToKafra,2,4);
+ packet(0x087b,clif->pItemListWindowSelected,2,4,8);
+ packet(0x087e,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0882,clif->pStoragePassword,0);
+ packet(0x0888,clif->pHomMenu,2,4);
+ packet(0x0889,clif->pDropItem,2,4);
+ packet(0x088a,clif->pReqClickBuyingStore,2);
+ packet(0x089c,clif->pPartyInvite2,2);
+ packet(0x08a9,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x08aa,clif->pChangeDir,2,4);
+ packet(0x0931,clif->pTakeItem,2);
+ packet(0x0938,clif->pReqCloseBuyingStore,0);
+ packet(0x093a,clif->pDull/*,XXX*/);
+ packet(0x0942,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0947,clif->pTickSend,2);
+ packet(0x0954,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0955,clif->pSearchStoreInfoNextPage,0);
+ packet(0x095d,clif->pFriendsListAdd,2);
+ packet(0x095e,clif->pSolveCharName,2);
+ packet(0x0965,clif->pWantToConnection,2,6,10,14,18);
#endif
// 2012-10-31aRagexeRE
#if PACKETVER == 20121031
- packet(0x022d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0871,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0877,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0898,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x092b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x022d,clif->pTickSend,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pHomMenu,2,4);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085a,clif->pFriendsListAdd,2);
+ packet(0x0871,clif->pChangeDir,2,4);
+ packet(0x0877,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0898,clif->pStoragePassword,0);
+ packet(0x092b,clif->pDull/*,XXX*/);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2012-11-07aRagexeRE
#if PACKETVER == 20121107
- packet(0x0360,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0361,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0365,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x085c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0861,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0865,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x086c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x086d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0871,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0873,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0878,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x087f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x088f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0890,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0891,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0896,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x089a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x089b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x08a2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x08ad,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0922,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0934,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x093b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0945,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x094d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0960,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0963,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0966,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x096a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0360,clif->pTakeItem,2);
+ packet(0x0361,clif->pStoragePassword,0);
+ packet(0x0365,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x085c,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0861,clif->pTickSend,2);
+ packet(0x0865,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x086c,clif->pHomMenu,2,4);
+ packet(0x086d,clif->pSolveCharName,2);
+ packet(0x0871,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0873,clif->pMoveToKafra,2,4);
+ packet(0x0878,clif->pPartyInvite2,2);
+ packet(0x087f,clif->pChangeDir,2,4);
+ packet(0x088f,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0890,clif->pUseSkillToId,2,4,6);
+ packet(0x0891,clif->pMoveFromKafra,2,4);
+ packet(0x0896,clif->pReqClickBuyingStore,2);
+ packet(0x089a,clif->pActionRequest,2,6);
+ packet(0x089b,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x08a2,clif->pReqCloseBuyingStore,0);
+ packet(0x08ad,clif->pGetCharNameRequest,2);
+ packet(0x0922,clif->pDull/*,XXX*/);
+ packet(0x0934,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x093b,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0945,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x094d,clif->pWalkToXY,2);
+ packet(0x0960,clif->pDropItem,2,4);
+ packet(0x0963,clif->pDull/*,XXX*/);
+ packet(0x0966,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x096a,clif->pFriendsListAdd,2);
#endif
// 2012-11-14aRagexeRE
#if PACKETVER == 20121114
- packet(0x0364,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0365,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0437,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0815,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0838,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0862,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0876,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0879,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0881,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0898,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0899,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x08a9,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x08aa,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x08ab,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x091a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0930,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0935,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0938,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x093b,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x093c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0941,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0944,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0949,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x094a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x094b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x094f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x095c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0965,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x096a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0364,clif->pStoragePassword,0);
+ packet(0x0365,clif->pHomMenu,2,4);
+ packet(0x0437,clif->pDropItem,2,4);
+ packet(0x0815,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0838,clif->pPartyInvite2,2);
+ packet(0x0862,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0876,clif->pSolveCharName,2);
+ packet(0x0879,clif->pGetCharNameRequest,2);
+ packet(0x0881,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0898,clif->pActionRequest,2,6);
+ packet(0x0899,clif->pWalkToXY,2);
+ packet(0x08a9,clif->pTickSend,2);
+ packet(0x08aa,clif->pReqCloseBuyingStore,0);
+ packet(0x08ab,clif->pChangeDir,2,4);
+ packet(0x091a,clif->pMoveFromKafra,2,4);
+ packet(0x0930,clif->pDull/*,XXX*/);
+ packet(0x0935,clif->pUseSkillToId,2,4,6);
+ packet(0x0938,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x093b,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x093c,clif->pMoveToKafra,2,4);
+ packet(0x0941,clif->pFriendsListAdd,2);
+ packet(0x0944,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0949,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x094a,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x094b,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x094f,clif->pReqClickBuyingStore,2);
+ packet(0x095c,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0965,clif->pTakeItem,2);
+ packet(0x096a,clif->pDull/*,XXX*/);
#endif
// 2012-11-21aRagexeRE
#if PACKETVER == 20121121
- packet(0x0202,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0362,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0437,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0863,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x086a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x086c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x086d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x086f,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0872,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0875,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x087e,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0880,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0892,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0899,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x089a,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x08a7,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x08aa,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x091a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0921,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0927,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0929,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0938,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0946,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x094d,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0950,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0952,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0954,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0957,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0958,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0202,clif->pUseSkillToId,2,4,6);
+ packet(0x0362,clif->pReqCloseBuyingStore,0);
+ packet(0x0437,clif->pTakeItem,2);
+ packet(0x0863,clif->pItemListWindowSelected,2,4,8);
+ packet(0x086a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x086c,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x086d,clif->pSolveCharName,2);
+ packet(0x086f,clif->pMoveFromKafra,2,4);
+ packet(0x0872,clif->pGetCharNameRequest,2);
+ packet(0x0875,clif->pMoveToKafra,2,4);
+ packet(0x087e,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0880,clif->pChangeDir,2,4);
+ packet(0x0892,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0899,clif->pFriendsListAdd,2);
+ packet(0x089a,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x08a7,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x08aa,clif->pActionRequest,2,6);
+ packet(0x091a,clif->pTickSend,2);
+ packet(0x0921,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0927,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0929,clif->pDull/*,XXX*/);
+ packet(0x0938,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0946,clif->pWalkToXY,2);
+ packet(0x094d,clif->pDull/*,XXX*/);
+ packet(0x0950,clif->pHomMenu,2,4);
+ packet(0x0952,clif->pDropItem,2,4);
+ packet(0x0954,clif->pStoragePassword,0);
+ packet(0x0957,clif->pPartyInvite2,2);
+ packet(0x0958,clif->pReqClickBuyingStore,2);
#endif
// 2012-11-28aRagexeRE
#if PACKETVER == 20121128
- packet(0x0362,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0363,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x07ec,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0802,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0861,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0867,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x086c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x086e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0872,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0888,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x088b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0894,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0895,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08a8,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x08ad,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x091b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x091c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x091e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x091f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0921,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0922,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x092f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0931,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0945,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0947,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0950,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0953,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0954,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0960,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0362,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0363,clif->pFriendsListAdd,2);
+ packet(0x07ec,clif->pPartyInvite2,2);
+ packet(0x0802,clif->pStoragePassword,0);
+ packet(0x0861,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0867,clif->pTickSend,2);
+ packet(0x086c,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x086e,clif->pDull/*,XXX*/);
+ packet(0x0872,clif->pUseSkillToId,2,4,6);
+ packet(0x0888,clif->pChangeDir,2,4);
+ packet(0x088b,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0894,clif->pDull/*,XXX*/);
+ packet(0x0895,clif->pTakeItem,2);
+ packet(0x08a8,clif->pItemListWindowSelected,2,4,8);
+ packet(0x08ad,clif->pWalkToXY,2);
+ packet(0x091b,clif->pSolveCharName,2);
+ packet(0x091c,clif->pGetCharNameRequest,2);
+ packet(0x091e,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x091f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0921,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0922,clif->pMoveFromKafra,2,4);
+ packet(0x092f,clif->pReqClickBuyingStore,2);
+ packet(0x0931,clif->pActionRequest,2,6);
+ packet(0x0945,clif->pHomMenu,2,4);
+ packet(0x0947,clif->pReqCloseBuyingStore,0);
+ packet(0x0950,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0953,clif->pDropItem,2,4);
+ packet(0x0954,clif->pMoveToKafra,2,4);
+ packet(0x0960,clif->pReqTradeBuyingStore,2,4,8,12);
#endif
// 2012-12-05aRagexeRE, 2012-12-05bRagexeRE
#if PACKETVER == 20121205
- packet(0x035f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0360,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0815,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0863,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0864,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x086c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0870,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0873,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0875,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0878,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0888,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0889,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x088b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x089a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x089d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x08ad,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x091a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x091c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0921,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x093a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x093e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x093f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0946,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x094b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0954,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0959,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0966,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0968,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x035f,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0360,clif->pWalkToXY,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0815,clif->pTakeItem,2);
+ packet(0x0863,clif->pTickSend,2);
+ packet(0x0864,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x086c,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0870,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0873,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0875,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0878,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0888,clif->pStoragePassword,0);
+ packet(0x0889,clif->pDropItem,2,4);
+ packet(0x088b,clif->pDull/*,XXX*/);
+ packet(0x089a,clif->pFriendsListAdd,2);
+ packet(0x089d,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x08ad,clif->pSolveCharName,2);
+ packet(0x091a,clif->pReqCloseBuyingStore,0);
+ packet(0x091c,clif->pMoveFromKafra,2,4);
+ packet(0x0921,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x093a,clif->pReqClickBuyingStore,2);
+ packet(0x093e,clif->pDull/*,XXX*/);
+ packet(0x093f,clif->pUseSkillToId,2,4,6);
+ packet(0x0946,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x094b,clif->pGetCharNameRequest,2);
+ packet(0x0954,clif->pActionRequest,2,6);
+ packet(0x0959,clif->pPartyInvite2,2);
+ packet(0x0966,clif->pMoveToKafra,2,4);
+ packet(0x0968,clif->pChangeDir,2,4);
#endif
// 2012-12-12aRagexeRE, 2012-12-12bRagexeRE, 2012-12-12cRagexeRE
#if PACKETVER == 20121212
- packet(0x0362,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0368,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0369,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0436,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0438,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0817,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x085c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0877,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x087d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x087f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0893,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0895,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x08a3,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x08a7,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x08a9,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08aa,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x08ac,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0917,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x091a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0920,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0932,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0947,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0951,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0953,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0957,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x095b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0965,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0966,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0362,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0368,clif->pFriendsListAdd,2);
+ packet(0x0369,clif->pPartyInvite2,2);
+ packet(0x0436,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0438,clif->pReqCloseBuyingStore,0);
+ packet(0x0817,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x085c,clif->pActionRequest,2,6);
+ packet(0x0877,clif->pTickSend,2);
+ packet(0x087d,clif->pUseSkillToId,2,4,6);
+ packet(0x087f,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0893,clif->pSolveCharName,2);
+ packet(0x0895,clif->pReqClickBuyingStore,2);
+ packet(0x08a3,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x08a7,clif->pWalkToXY,2);
+ packet(0x08a9,clif->pStoragePassword,0);
+ packet(0x08aa,clif->pDull/*,XXX*/);
+ packet(0x08ac,clif->pDropItem,2,4);
+ packet(0x0917,clif->pMoveFromKafra,2,4);
+ packet(0x091a,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0920,clif->pChangeDir,2,4);
+ packet(0x0932,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0947,clif->pHomMenu,2,4);
+ packet(0x0951,clif->pDull/*,XXX*/);
+ packet(0x0953,clif->pTakeItem,2);
+ packet(0x0957,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x095b,clif->pMoveToKafra,2,4);
+ packet(0x0965,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0966,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2012-12-18aRagexeRE, 2012-12-18bRagexeRE
#if PACKETVER == 20121218
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0363,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0867,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0872,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x087a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x087b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0886,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0889,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0890,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x091a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x091c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0935,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0946,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0957,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pUseSkillToId,2,4,6);
+ packet(0x0363,clif->pTakeItem,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pDropItem,2,4);
+ packet(0x0867,clif->pHomMenu,2,4);
+ packet(0x0872,clif->pDull/*,XXX*/);
+ packet(0x087a,clif->pChangeDir,2,4);
+ packet(0x087b,clif->pPartyInvite2,2);
+ packet(0x0886,clif->pMoveToKafra,2,4);
+ packet(0x0889,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0890,clif->pDull/*,XXX*/);
+ packet(0x091a,clif->pMoveFromKafra,2,4);
+ packet(0x091c,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0935,clif->pFriendsListAdd,2);
+ packet(0x0946,clif->pStoragePassword,0);
+ packet(0x0957,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2012-12-27aRagexeRE
#if PACKETVER == 20121227
- packet(0x0202,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x02c4,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0361,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0368,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0437,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0860,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0870,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0872,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x087a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0886,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0888,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x088e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0890,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0894,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0896,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x08a6,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08aa,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0917,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x091f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0920,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0932,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0933,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0940,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0943,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0947,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0953,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0958,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x095d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0962,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0202,clif->pHomMenu,2,4);
+ packet(0x02c4,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0361,clif->pStoragePassword,0);
+ packet(0x0368,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0437,clif->pDropItem,2,4);
+ packet(0x0860,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0870,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0872,clif->pReqClickBuyingStore,2);
+ packet(0x087a,clif->pActionRequest,2,6);
+ packet(0x0886,clif->pMoveFromKafra,2,4);
+ packet(0x0888,clif->pTickSend,2);
+ packet(0x088e,clif->pChangeDir,2,4);
+ packet(0x0890,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0894,clif->pFriendsListAdd,2);
+ packet(0x0896,clif->pSolveCharName,2);
+ packet(0x08a6,clif->pTakeItem,2);
+ packet(0x08aa,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0917,clif->pReqCloseBuyingStore,0);
+ packet(0x091f,clif->pDull/*,XXX*/);
+ packet(0x0920,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0932,clif->pWalkToXY,2);
+ packet(0x0933,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0940,clif->pUseSkillToId,2,4,6);
+ packet(0x0943,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0947,clif->pGetCharNameRequest,2);
+ packet(0x0953,clif->pDull/*,XXX*/);
+ packet(0x0958,clif->pMoveToKafra,2,4);
+ packet(0x095d,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0962,clif->pPartyInvite2,2);
#endif
// 2013-01-03aRagexeRE
#if PACKETVER == 20130103
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0940,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pDull/*,XXX*/);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pStoragePassword,0);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0940,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-01-09aRagexeRE
#if PACKETVER == 20130109
- packet(0x0281,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0365,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0368,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0838,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0866,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0886,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0888,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x088a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x088e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0891,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0892,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x08a2,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x08aa,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x08ac,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0918,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x091b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0922,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0927,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0928,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0930,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0931,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0938,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x093e,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x094f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0950,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0951,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0955,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x095e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0281,clif->pGetCharNameRequest,2);
+ packet(0x0365,clif->pDull/*,XXX*/);
+ packet(0x0368,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0437,clif->pActionRequest,2,6);
+ packet(0x0838,clif->pMoveFromKafra,2,4);
+ packet(0x0866,clif->pWalkToXY,2);
+ packet(0x0886,clif->pMoveToKafra,2,4);
+ packet(0x0888,clif->pChangeDir,2,4);
+ packet(0x088a,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x088e,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0891,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0892,clif->pUseSkillToId,2,4,6);
+ packet(0x08a2,clif->pSolveCharName,2);
+ packet(0x08aa,clif->pDull/*,XXX*/);
+ packet(0x08ac,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0918,clif->pFriendsListAdd,2);
+ packet(0x091b,clif->pDropItem,2,4);
+ packet(0x0922,clif->pReqClickBuyingStore,2);
+ packet(0x0927,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0928,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0930,clif->pHomMenu,2,4);
+ packet(0x0931,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0938,clif->pPartyInvite2,2);
+ packet(0x093e,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x094f,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0950,clif->pStoragePassword,0);
+ packet(0x0951,clif->pTickSend,2);
+ packet(0x0955,clif->pReqCloseBuyingStore,0);
+ packet(0x095e,clif->pTakeItem,2);
#endif
// 2013-01-15aRagexeRE, 2013-01-16aRagexeRE
#if PACKETVER == 20130115 || \
PACKETVER == 20130116
- packet(0x0361,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x07ec,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0817,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x085e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0861,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0863,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x086b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0870,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0871,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0877,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0879,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x087c,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0888,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x088b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0894,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0895,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x08a0,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x08a4,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x08ac,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0918,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0928,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x092d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x092e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0939,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0946,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x094b,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x094c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x094e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x095a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0361,clif->pDull/*,XXX*/);
+ packet(0x07ec,clif->pDull/*,XXX*/);
+ packet(0x0817,clif->pWalkToXY,2);
+ packet(0x085e,clif->pReqCloseBuyingStore,0);
+ packet(0x0861,clif->pMoveFromKafra,2,4);
+ packet(0x0863,clif->pActionRequest,2,6);
+ packet(0x086b,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0870,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0871,clif->pFriendsListAdd,2);
+ packet(0x0877,clif->pReqClickBuyingStore,2);
+ packet(0x0879,clif->pChangeDir,2,4);
+ packet(0x087c,clif->pSolveCharName,2);
+ packet(0x0888,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x088b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0894,clif->pHomMenu,2,4);
+ packet(0x0895,clif->pTickSend,2);
+ packet(0x08a0,clif->pPartyInvite2,2);
+ packet(0x08a4,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x08ac,clif->pMoveToKafra,2,4);
+ packet(0x0918,clif->pUseSkillToId,2,4,6);
+ packet(0x0928,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x092d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x092e,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0939,clif->pGetCharNameRequest,2);
+ packet(0x0946,clif->pItemListWindowSelected,2,4,8);
+ packet(0x094b,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x094c,clif->pTakeItem,2);
+ packet(0x094e,clif->pDropItem,2,4);
+ packet(0x095a,clif->pStoragePassword,0);
#endif
// 2013-01-21aRagexeRE
#if PACKETVER == 20130121
- packet(0x023b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x035f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07ec,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0802,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0815,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0817,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x085d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x086c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0874,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0884,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0893,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x091f,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0940,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x094f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0956,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x095b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0963,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0969,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x023b,clif->pReqCloseBuyingStore,0);
+ packet(0x035f,clif->pDull/*,XXX*/);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07ec,clif->pTickSend,2);
+ packet(0x0802,clif->pActionRequest,2,6);
+ packet(0x0815,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0817,clif->pStoragePassword,0);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085a,clif->pDull/*,XXX*/);
+ packet(0x085d,clif->pHomMenu,2,4);
+ packet(0x086c,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0874,clif->pMoveToKafra,2,4);
+ packet(0x0884,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0893,clif->pFriendsListAdd,2);
+ packet(0x091f,clif->pTakeItem,2);
+ packet(0x0940,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x094f,clif->pDropItem,2,4);
+ packet(0x0956,clif->pChangeDir,2,4);
+ packet(0x095b,clif->pPartyInvite2,2);
+ packet(0x0963,clif->pMoveFromKafra,2,4);
+ packet(0x0969,clif->pItemListWindowSelected,2,4,8);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-01-30aRagexeRE
#if PACKETVER == 20130130
- packet(0x035f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0362,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0367,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0368,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0437,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x085f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0862,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x086b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x087d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x087f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0885,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0886,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0887,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0889,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x089a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x089f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x08a0,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x08a4,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x08a9,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x091a,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0920,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0924,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x093a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x093d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0956,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0957,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x095b,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x095c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x095d,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x035f,clif->pMoveToKafra,2,4);
+ packet(0x0362,clif->pHomMenu,2,4);
+ packet(0x0367,clif->pGetCharNameRequest,2);
+ packet(0x0368,clif->pChangeDir,2,4);
+ packet(0x0437,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x085f,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0862,clif->pReqCloseBuyingStore,0);
+ packet(0x086b,clif->pDull/*,XXX*/);
+ packet(0x087d,clif->pWalkToXY,2);
+ packet(0x087f,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0885,clif->pActionRequest,2,6);
+ packet(0x0886,clif->pTakeItem,2);
+ packet(0x0887,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0889,clif->pTickSend,2);
+ packet(0x089a,clif->pPartyInvite2,2);
+ packet(0x089f,clif->pDropItem,2,4);
+ packet(0x08a0,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x08a4,clif->pUseSkillToId,2,4,6);
+ packet(0x08a9,clif->pDull/*,XXX*/);
+ packet(0x091a,clif->pSolveCharName,2);
+ packet(0x0920,clif->pFriendsListAdd,2);
+ packet(0x0924,clif->pReqClickBuyingStore,2);
+ packet(0x093a,clif->pStoragePassword,0);
+ packet(0x093d,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0956,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0957,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x095b,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x095c,clif->pMoveFromKafra,2,4);
+ packet(0x095d,clif->pSearchStoreInfoNextPage,0);
#endif
// 2013-02-06aRagexeRE
#if PACKETVER == 20130206
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0811,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0876,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0883,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0885,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0899,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x08a0,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08ac,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0920,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0925,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x093a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x093c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0950,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pStoragePassword,0);
+ packet(0x0811,clif->pTakeItem,2);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085d,clif->pMoveFromKafra,2,4);
+ packet(0x0876,clif->pDull/*,XXX*/);
+ packet(0x0883,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0885,clif->pMoveToKafra,2,4);
+ packet(0x0899,clif->pItemListWindowSelected,2,4,8);
+ packet(0x08a0,clif->pChangeDir,2,4);
+ packet(0x08ac,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0920,clif->pPartyInvite2,2);
+ packet(0x0925,clif->pDropItem,2,4);
+ packet(0x093a,clif->pHomMenu,2,4);
+ packet(0x093c,clif->pFriendsListAdd,2);
+ packet(0x0950,clif->pDull/*,XXX*/);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-02-15aRagexeRE
#if PACKETVER == 20130215
- packet(0x023b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0366,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0802,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0869,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x086f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0886,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x089e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x089f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x08ad,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0923,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0941,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0956,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x095d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0962,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x023b,clif->pReqClickBuyingStore,2);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pStoragePassword,0);
+ packet(0x0366,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0802,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0869,clif->pMoveToKafra,2,4);
+ packet(0x086f,clif->pDull/*,XXX*/);
+ packet(0x0886,clif->pDropItem,2,4);
+ packet(0x089e,clif->pItemListWindowSelected,2,4,8);
+ packet(0x089f,clif->pDull/*,XXX*/);
+ packet(0x08ad,clif->pTakeItem,2);
+ packet(0x0923,clif->pHomMenu,2,4);
+ packet(0x0941,clif->pFriendsListAdd,2);
+ packet(0x0956,clif->pPartyInvite2,2);
+ packet(0x095d,clif->pChangeDir,2,4);
+ packet(0x0962,clif->pMoveFromKafra,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-02-20bRagexeRE
#if PACKETVER == 20130220
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x094b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x094b,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-02-27aRagexeRE
#if PACKETVER == 20130227
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x035f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0360,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0811,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0815,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0817,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x085a,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0863,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0867,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0869,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x086e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x087b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0893,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0898,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08a0,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x08a1,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x091b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x091f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0924,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x092b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x092f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0936,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0946,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0951,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x095b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x095e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x095f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0967,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x035f,clif->pHomMenu,2,4);
+ packet(0x0360,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0811,clif->pTickSend,2);
+ packet(0x0815,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0817,clif->pReqClickBuyingStore,2);
+ packet(0x085a,clif->pUseSkillToId,2,4,6);
+ packet(0x0863,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0867,clif->pTakeItem,2);
+ packet(0x0869,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x086e,clif->pDull/*,XXX*/);
+ packet(0x087b,clif->pPartyInvite2,2);
+ packet(0x0893,clif->pMoveFromKafra,2,4);
+ packet(0x0898,clif->pChangeDir,2,4);
+ packet(0x08a0,clif->pReqCloseBuyingStore,0);
+ packet(0x08a1,clif->pDull/*,XXX*/);
+ packet(0x091b,clif->pGetCharNameRequest,2);
+ packet(0x091f,clif->pDropItem,2,4);
+ packet(0x0924,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x092b,clif->pItemListWindowSelected,2,4,8);
+ packet(0x092f,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0936,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0946,clif->pMoveToKafra,2,4);
+ packet(0x0951,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x095b,clif->pSolveCharName,2);
+ packet(0x095e,clif->pStoragePassword,0);
+ packet(0x095f,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0967,clif->pActionRequest,2,6);
#endif
// 2013-03-06aRagexeRE, 2013-03-06bRagexeRE
#if PACKETVER == 20130306
- packet(0x022d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0367,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0368,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0802,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0817,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x085b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x085c,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0860,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x086d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0881,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0890,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0898,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x089f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x08a4,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x08ac,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0917,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x091e,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0926,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0934,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0936,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0943,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0944,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0945,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0946,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x094a,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x094e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0951,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0960,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0962,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x022d,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0367,clif->pSolveCharName,2);
+ packet(0x0368,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0802,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0817,clif->pHomMenu,2,4);
+ packet(0x085b,clif->pWalkToXY,2);
+ packet(0x085c,clif->pReqClickBuyingStore,2);
+ packet(0x0860,clif->pChangeDir,2,4);
+ packet(0x086d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0881,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0890,clif->pDull/*,XXX*/);
+ packet(0x0898,clif->pActionRequest,2,6);
+ packet(0x089f,clif->pTickSend,2);
+ packet(0x08a4,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x08ac,clif->pDull/*,XXX*/);
+ packet(0x0917,clif->pMoveFromKafra,2,4);
+ packet(0x091e,clif->pMoveToKafra,2,4);
+ packet(0x0926,clif->pStoragePassword,0);
+ packet(0x0934,clif->pFriendsListAdd,2);
+ packet(0x0936,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0943,clif->pUseSkillToId,2,4,6);
+ packet(0x0944,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0945,clif->pReqCloseBuyingStore,0);
+ packet(0x0946,clif->pPartyInvite2,2);
+ packet(0x094a,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x094e,clif->pGetCharNameRequest,2);
+ packet(0x0951,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0960,clif->pDropItem,2,4);
+ packet(0x0962,clif->pTakeItem,2);
#endif
// 2013-03-13aRagexeRE, 2013-03-13bRagexeRE, 2013-03-13cRagexeRE
#if PACKETVER == 20130313
- packet(0x0202,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0887,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0920,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x092d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0947,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pPartyInvite2,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pFriendsListAdd,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0887,clif->pChangeDir,2,4);
+ packet(0x0920,clif->pStoragePassword,0);
+ packet(0x092d,clif->pHomMenu,2,4);
+ packet(0x0947,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-03-20bRagexeRE, 2013-03-20cRagexeRE
#if PACKETVER == 20130320
- packet(0x035f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0363,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0365,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0438,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x085a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x085d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0868,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x086d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x086f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0874,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0881,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0886,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0888,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x088e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0890,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0897,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0898,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x089b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x08ac,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0922,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x092e,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0933,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0938,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x093f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0947,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x094c,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x094e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0959,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x095a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x035f,clif->pReqClickBuyingStore,2);
+ packet(0x0363,clif->pTickSend,2);
+ packet(0x0365,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0438,clif->pDropItem,2,4);
+ packet(0x085a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x085d,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0868,clif->pItemListWindowSelected,2,4,8);
+ packet(0x086d,clif->pPartyInvite2,2);
+ packet(0x086f,clif->pFriendsListAdd,2);
+ packet(0x0874,clif->pMoveFromKafra,2,4);
+ packet(0x0881,clif->pWalkToXY,2);
+ packet(0x0886,clif->pReqCloseBuyingStore,0);
+ packet(0x0888,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x088e,clif->pActionRequest,2,6);
+ packet(0x0890,clif->pDull/*,XXX*/);
+ packet(0x0897,clif->pChangeDir,2,4);
+ packet(0x0898,clif->pGetCharNameRequest,2);
+ packet(0x089b,clif->pUseSkillToId,2,4,6);
+ packet(0x08ac,clif->pMoveToKafra,2,4);
+ packet(0x0922,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x092e,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0933,clif->pTakeItem,2);
+ packet(0x0938,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x093f,clif->pHomMenu,2,4);
+ packet(0x0947,clif->pStoragePassword,0);
+ packet(0x094c,clif->pSolveCharName,2);
+ packet(0x094e,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0959,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x095a,clif->pDull/*,XXX*/);
#endif
// 2013-03-27bRagexeRE
#if PACKETVER == 20130327
- packet(0x02c4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x07ec,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0835,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x086d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0873,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0878,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x087a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0885,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x088f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0891,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0893,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0899,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08a1,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x08a2,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x091f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x092b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x092d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x092e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x092f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0933,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0938,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0939,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x094a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x094b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x094f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0955,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0960,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0961,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0967,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x02c4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x07ec,clif->pReqClickBuyingStore,2);
+ packet(0x0835,clif->pHomMenu,2,4);
+ packet(0x086d,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0873,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0878,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x087a,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0885,clif->pDropItem,2,4);
+ packet(0x088f,clif->pUseSkillToId,2,4,6);
+ packet(0x0891,clif->pMoveToKafra,2,4);
+ packet(0x0893,clif->pReqCloseBuyingStore,0);
+ packet(0x0899,clif->pTakeItem,2);
+ packet(0x08a1,clif->pGetCharNameRequest,2);
+ packet(0x08a2,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x091f,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x092b,clif->pWalkToXY,2);
+ packet(0x092d,clif->pPartyInvite2,2);
+ packet(0x092e,clif->pDull/*,XXX*/);
+ packet(0x092f,clif->pDull/*,XXX*/);
+ packet(0x0933,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0938,clif->pMoveFromKafra,2,4);
+ packet(0x0939,clif->pTickSend,2);
+ packet(0x094a,clif->pChangeDir,2,4);
+ packet(0x094b,clif->pStoragePassword,0);
+ packet(0x094f,clif->pFriendsListAdd,2);
+ packet(0x0955,clif->pActionRequest,2,6);
+ packet(0x0960,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0961,clif->pSolveCharName,2);
+ packet(0x0967,clif->pItemListWindowSelected,2,4,8);
#endif
// 2013-04-03aRagexeRE
#if PACKETVER == 20130403
- packet(0x023b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0884,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x08a5,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0926,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0942,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0950,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x023b,clif->pReqClickBuyingStore,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pStoragePassword,0);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0884,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x08a5,clif->pDull/*,XXX*/);
+ packet(0x0926,clif->pHomMenu,2,4);
+ packet(0x0942,clif->pChangeDir,2,4);
+ packet(0x0950,clif->pFriendsListAdd,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-04-10aRagexeRE
#if PACKETVER == 20130410
- packet(0x0367,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0437,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0860,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0865,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x086c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0879,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x087c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x087d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0881,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x088c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x088d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0890,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0891,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x089c,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x089e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x08a0,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x08a4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x08a7,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0917,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x091d,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0933,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0939,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x093d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0944,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0945,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0955,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0960,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0967,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x096a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0367,clif->pReqClickBuyingStore,2);
+ packet(0x0437,clif->pTakeItem,2);
+ packet(0x0860,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0865,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x086c,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0879,clif->pMoveToKafra,2,4);
+ packet(0x087c,clif->pWalkToXY,2);
+ packet(0x087d,clif->pGetCharNameRequest,2);
+ packet(0x0881,clif->pReqCloseBuyingStore,0);
+ packet(0x088c,clif->pStoragePassword,0);
+ packet(0x088d,clif->pHomMenu,2,4);
+ packet(0x0890,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0891,clif->pDull/*,XXX*/);
+ packet(0x089c,clif->pSolveCharName,2);
+ packet(0x089e,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x08a0,clif->pTickSend,2);
+ packet(0x08a4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x08a7,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0917,clif->pPartyInvite2,2);
+ packet(0x091d,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0933,clif->pUseSkillToId,2,4,6);
+ packet(0x0939,clif->pActionRequest,2,6);
+ packet(0x093d,clif->pMoveFromKafra,2,4);
+ packet(0x0944,clif->pDull/*,XXX*/);
+ packet(0x0945,clif->pChangeDir,2,4);
+ packet(0x0955,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0960,clif->pFriendsListAdd,2);
+ packet(0x0967,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x096a,clif->pDropItem,2,4);
#endif
// 2013-04-17aRagexeRE
#if PACKETVER == 20130417
- packet(0x0202,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x086b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0875,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0929,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0962,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0969,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x096a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0202,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pFriendsListAdd,2);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x086b,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0875,clif->pStoragePassword,0);
+ packet(0x0929,clif->pChangeDir,2,4);
+ packet(0x0962,clif->pHomMenu,2,4);
+ packet(0x0969,clif->pGetCharNameRequest,2);
+ packet(0x096a,clif->pDull/*,XXX*/);
#endif
// 2013-04-24aRagexeRE
#if PACKETVER == 20130424
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0969,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0969,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-05-02aRagexeRE
#if PACKETVER == 20130502
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x07ec,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0867,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0870,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0874,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0875,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0877,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x087c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0888,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0889,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x08a1,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x08a3,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0961,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0967,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pStoragePassword,0);
+ packet(0x07ec,clif->pChangeDir,2,4);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085a,clif->pDull/*,XXX*/);
+ packet(0x0867,clif->pHomMenu,2,4);
+ packet(0x0870,clif->pPartyInvite2,2);
+ packet(0x0874,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0875,clif->pFriendsListAdd,2);
+ packet(0x0877,clif->pMoveToKafra,2,4);
+ packet(0x087c,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0888,clif->pGetCharNameRequest,2);
+ packet(0x0889,clif->pDull/*,XXX*/);
+ packet(0x08a1,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x08a3,clif->pDropItem,2,4);
+ packet(0x0961,clif->pMoveFromKafra,2,4);
+ packet(0x0967,clif->pTakeItem,2);
#endif
// 2013-05-08bRagexeRE
#if PACKETVER == 20130508
- packet(0x022d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0868,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0878,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x088b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0893,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0895,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0897,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x08ab,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x092d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0944,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x094d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0957,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x095c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x022d,clif->pMoveToKafra,2,4);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pFriendsListAdd,2);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0868,clif->pStoragePassword,0);
+ packet(0x0878,clif->pItemListWindowSelected,2,4,8);
+ packet(0x088b,clif->pTakeItem,2);
+ packet(0x0893,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0895,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0897,clif->pDull/*,XXX*/);
+ packet(0x08ab,clif->pPartyInvite2,2);
+ packet(0x092d,clif->pDropItem,2,4);
+ packet(0x0944,clif->pDull/*,XXX*/);
+ packet(0x094d,clif->pHomMenu,2,4);
+ packet(0x0957,clif->pMoveFromKafra,2,4);
+ packet(0x095c,clif->pChangeDir,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-05-15aRagexeRE
#if PACKETVER == 20130515
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0862,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0887,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08a1,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08aa,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x08ac,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x092d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0931,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x093e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0943,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0944,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0947,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0962,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0963,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pChangeDir,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0862,clif->pDull/*,XXX*/);
+ packet(0x0887,clif->pMoveToKafra,2,4);
+ packet(0x08a1,clif->pTakeItem,2);
+ packet(0x08aa,clif->pDull/*,XXX*/);
+ packet(0x08ac,clif->pMoveFromKafra,2,4);
+ packet(0x092d,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0931,clif->pHomMenu,2,4);
+ packet(0x093e,clif->pStoragePassword,0);
+ packet(0x0943,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0944,clif->pDropItem,2,4);
+ packet(0x0947,clif->pPartyInvite2,2);
+ packet(0x0962,clif->pFriendsListAdd,2);
+ packet(0x0963,clif->pItemListWindowSelected,2,4,8);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-05-22aRagexeRE
#if PACKETVER == 20130522
- packet(0x0360,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0362,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0368,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x07ec,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0811,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x086a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x086e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0874,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x087e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x088e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x089b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x089c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x08a2,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x08a3,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08a6,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x08a9,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x08aa,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x08ac,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0925,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0926,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x093e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0950,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0952,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x095b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x095c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x095e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0964,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0965,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0360,clif->pWalkToXY,2);
+ packet(0x0362,clif->pFriendsListAdd,2);
+ packet(0x0368,clif->pReqClickBuyingStore,2);
+ packet(0x0369,clif->pSolveCharName,2);
+ packet(0x07ec,clif->pTickSend,2);
+ packet(0x0811,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x086a,clif->pItemListWindowSelected,2,4,8);
+ packet(0x086e,clif->pReqCloseBuyingStore,0);
+ packet(0x0874,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x087e,clif->pMoveFromKafra,2,4);
+ packet(0x088e,clif->pStoragePassword,0);
+ packet(0x089b,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x089c,clif->pDropItem,2,4);
+ packet(0x08a2,clif->pActionRequest,2,6);
+ packet(0x08a3,clif->pMoveToKafra,2,4);
+ packet(0x08a6,clif->pGetCharNameRequest,2);
+ packet(0x08a9,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x08aa,clif->pSearchStoreInfoNextPage,0);
+ packet(0x08ac,clif->pDull/*,XXX*/);
+ packet(0x0925,clif->pChangeDir,2,4);
+ packet(0x0926,clif->pHomMenu,2,4);
+ packet(0x093e,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0950,clif->pPartyInvite2,2);
+ packet(0x0952,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x095b,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x095c,clif->pUseSkillToId,2,4,6);
+ packet(0x095e,clif->pTakeItem,2);
+ packet(0x0964,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0965,clif->pDull/*,XXX*/);
#endif
// 2013-05-29aRagexeRE
#if PACKETVER == 20130529
- packet(0x023b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0438,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085a,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x085e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0863,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0869,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0874,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0876,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0877,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0888,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x088e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0890,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0892,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0895,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0897,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x08a7,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x08a8,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0917,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0918,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0919,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0936,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0937,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0938,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0941,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0951,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0956,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0957,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0958,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0964,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x023b,clif->pHomMenu,2,4);
+ packet(0x0438,clif->pUseSkillToId,2,4,6);
+ packet(0x085a,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x085e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0863,clif->pGetCharNameRequest,2);
+ packet(0x0869,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0874,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0876,clif->pWalkToXY,2);
+ packet(0x0877,clif->pFriendsListAdd,2);
+ packet(0x0888,clif->pDull/*,XXX*/);
+ packet(0x088e,clif->pDull/*,XXX*/);
+ packet(0x0890,clif->pActionRequest,2,6);
+ packet(0x0892,clif->pReqClickBuyingStore,2);
+ packet(0x0895,clif->pTakeItem,2);
+ packet(0x0897,clif->pTickSend,2);
+ packet(0x08a7,clif->pDropItem,2,4);
+ packet(0x08a8,clif->pPartyInvite2,2);
+ packet(0x0917,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0918,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0919,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0936,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0937,clif->pSolveCharName,2);
+ packet(0x0938,clif->pMoveToKafra,2,4);
+ packet(0x0941,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0951,clif->pChangeDir,2,4);
+ packet(0x0956,clif->pStoragePassword,0);
+ packet(0x0957,clif->pMoveFromKafra,2,4);
+ packet(0x0958,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0964,clif->pReqCloseBuyingStore,0);
#endif
// 2013-06-05cRagexeRE
#if PACKETVER == 20130605
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0883,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0883,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-06-12bRagexeRE
#if PACKETVER == 20130612
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x087e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0919,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x093a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0940,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0964,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x087e,clif->pChangeDir,2,4);
+ packet(0x0919,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x093a,clif->pHomMenu,2,4);
+ packet(0x0940,clif->pFriendsListAdd,2);
+ packet(0x0964,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-06-18#1aRagexeRE
#if PACKETVER == 20130618
- packet(0x0281,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x02c4,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0363,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x085a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0862,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0864,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0878,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x087a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0885,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0887,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0889,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x088e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0890,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0891,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x08a6,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08a7,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0917,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0930,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0932,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0936,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0942,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0944,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0945,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x094f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0951,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0953,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x095b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0962,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x096a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0281,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x02c4,clif->pHomMenu,2,4);
+ packet(0x0363,clif->pSearchStoreInfoNextPage,0);
+ packet(0x085a,clif->pReqCloseBuyingStore,0);
+ packet(0x0862,clif->pReqClickBuyingStore,2);
+ packet(0x0864,clif->pStoragePassword,0);
+ packet(0x0878,clif->pDull/*,XXX*/);
+ packet(0x087a,clif->pDull/*,XXX*/);
+ packet(0x0885,clif->pMoveToKafra,2,4);
+ packet(0x0887,clif->pPartyInvite2,2);
+ packet(0x0889,clif->pActionRequest,2,6);
+ packet(0x088e,clif->pWalkToXY,2);
+ packet(0x0890,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0891,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x08a6,clif->pChangeDir,2,4);
+ packet(0x08a7,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0917,clif->pDropItem,2,4);
+ packet(0x0930,clif->pTickSend,2);
+ packet(0x0932,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0936,clif->pMoveFromKafra,2,4);
+ packet(0x0942,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0944,clif->pGetCharNameRequest,2);
+ packet(0x0945,clif->pSolveCharName,2);
+ packet(0x094f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0951,clif->pUseSkillToId,2,4,6);
+ packet(0x0953,clif->pFriendsListAdd,2);
+ packet(0x095b,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0962,clif->pTakeItem,2);
+ packet(0x096a,clif->pUseSkillToPos,2,4,6,8);
#endif
// 2013-06-26_3bRagexeRE, 2013-06-26aRagexeRE
#if PACKETVER == 20130626
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0365,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0860,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x088b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x088c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x088f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0894,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0895,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x08a5,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x08ab,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0921,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0930,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x094d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0952,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0960,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0365,clif->pReqCloseBuyingStore,0);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pMoveFromKafra,2,4);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0860,clif->pDull/*,XXX*/);
+ packet(0x088b,clif->pTakeItem,2);
+ packet(0x088c,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x088f,clif->pDull/*,XXX*/);
+ packet(0x0894,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0895,clif->pPartyInvite2,2);
+ packet(0x08a5,clif->pItemListWindowSelected,2,4,8);
+ packet(0x08ab,clif->pFriendsListAdd,2);
+ packet(0x0921,clif->pMoveToKafra,2,4);
+ packet(0x0930,clif->pStoragePassword,0);
+ packet(0x094d,clif->pChangeDir,2,4);
+ packet(0x0952,clif->pDropItem,2,4);
+ packet(0x0960,clif->pHomMenu,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-07-03bRagexeRE
#if PACKETVER == 20130703
- packet(0x0202,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0873,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0930,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x094a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pReqClickBuyingStore,2);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pFriendsListAdd,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0873,clif->pStoragePassword,0);
+ packet(0x0930,clif->pChangeDir,2,4);
+ packet(0x094a,clif->pHomMenu,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-07-10aRagexeRE, 2013-07-10bRagexeRE, 2013-07-10cRagexeRE, 2013-07-10dRagexeRE, 2013-07-10eRagexeRE
#if PACKETVER == 20130710
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0880,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0880,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-07-17cRagexeRE, 2013-07-17dRagexeRE, 2013-07-17eRagexeRE
#if PACKETVER == 20130717
- packet(0x02c4,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0819,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x083c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0862,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0863,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x086b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x086c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0882,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x088a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x088c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0897,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0898,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x089b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08a6,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x08a9,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08aa,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0917,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0918,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x091d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x091e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x092f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x093b,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0956,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0958,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x095b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0960,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0967,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x096a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x02c4,clif->pTickSend,2);
+ packet(0x0819,clif->pSearchStoreInfoNextPage,0);
+ packet(0x083c,clif->pWalkToXY,2);
+ packet(0x0862,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0863,clif->pFriendsListAdd,2);
+ packet(0x086b,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x086c,clif->pDull/*,XXX*/);
+ packet(0x0882,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x088a,clif->pHomMenu,2,4);
+ packet(0x088c,clif->pChangeDir,2,4);
+ packet(0x0897,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0898,clif->pReqClickBuyingStore,2);
+ packet(0x089b,clif->pMoveToKafra,2,4);
+ packet(0x08a6,clif->pDull/*,XXX*/);
+ packet(0x08a9,clif->pTakeItem,2);
+ packet(0x08aa,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0917,clif->pDropItem,2,4);
+ packet(0x0918,clif->pActionRequest,2,6);
+ packet(0x091d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x091e,clif->pUseSkillToId,2,4,6);
+ packet(0x092f,clif->pPartyInvite2,2);
+ packet(0x093b,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0956,clif->pMoveFromKafra,2,4);
+ packet(0x0958,clif->pGetCharNameRequest,2);
+ packet(0x095b,clif->pStoragePassword,0);
+ packet(0x0960,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0967,clif->pSolveCharName,2);
+ packet(0x096a,clif->pReqCloseBuyingStore,0);
#endif
// 2013-07-24eRagexeRE, 2013-07-24fRagexeRE
#if PACKETVER == 20130724
- packet(0x023b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0437,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x085a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x085e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0860,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0867,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x086a,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0874,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0876,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0890,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0891,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0893,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x089c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x08ab,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0921,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0924,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0927,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x092b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x092e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x094a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0953,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0954,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0956,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0958,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x095c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x095d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0965,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0966,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x023b,clif->pReqCloseBuyingStore,0);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0437,clif->pDull/*,XXX*/);
+ packet(0x085a,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x085e,clif->pMoveFromKafra,2,4);
+ packet(0x0860,clif->pStoragePassword,0);
+ packet(0x0867,clif->pGetCharNameRequest,2);
+ packet(0x086a,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0874,clif->pHomMenu,2,4);
+ packet(0x0876,clif->pActionRequest,2,6);
+ packet(0x0890,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0891,clif->pDropItem,2,4);
+ packet(0x0893,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x089c,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x08ab,clif->pDull/*,XXX*/);
+ packet(0x0921,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0924,clif->pReqClickBuyingStore,2);
+ packet(0x0927,clif->pPartyInvite2,2);
+ packet(0x092b,clif->pFriendsListAdd,2);
+ packet(0x092e,clif->pItemListWindowSelected,2,4,8);
+ packet(0x094a,clif->pTakeItem,2);
+ packet(0x0953,clif->pWalkToXY,2);
+ packet(0x0954,clif->pSolveCharName,2);
+ packet(0x0956,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0958,clif->pUseSkillToId,2,4,6);
+ packet(0x095c,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x095d,clif->pMoveToKafra,2,4);
+ packet(0x0965,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0966,clif->pChangeDir,2,4);
#endif
// 2013-07-31cRagexeRE
#if PACKETVER == 20130731
- packet(0x022d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0366,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0863,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0865,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0878,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x087e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0884,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0889,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x088b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0894,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0895,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0923,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0925,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x092b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x092d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0935,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0941,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x094c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0956,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0957,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0958,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x095b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x095d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x095f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0962,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x022d,clif->pFriendsListAdd,2);
+ packet(0x0366,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pChangeDir,2,4);
+ packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0863,clif->pReqClickBuyingStore,2);
+ packet(0x0865,clif->pUseSkillToId,2,4,6);
+ packet(0x0878,clif->pActionRequest,2,6);
+ packet(0x087e,clif->pReqCloseBuyingStore,0);
+ packet(0x0884,clif->pStoragePassword,0);
+ packet(0x0889,clif->pDull/*,XXX*/);
+ packet(0x088b,clif->pGetCharNameRequest,2);
+ packet(0x0894,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0895,clif->pDull/*,XXX*/);
+ packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0923,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0925,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x092b,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x092d,clif->pHomMenu,2,4);
+ packet(0x0935,clif->pTakeItem,2);
+ packet(0x0941,clif->pMoveToKafra,2,4);
+ packet(0x094c,clif->pMoveFromKafra,2,4);
+ packet(0x0956,clif->pPartyInvite2,2);
+ packet(0x0957,clif->pSolveCharName,2);
+ packet(0x0958,clif->pItemListWindowSelected,2,4,8);
+ packet(0x095b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x095d,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x095f,clif->pTickSend,2);
+ packet(0x0962,clif->pDropItem,2,4);
#endif
// 2013-08-07aRagexeRE
#if PACKETVER == 20130807
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0887,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0887,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-08-14aRagexeRE
#if PACKETVER == 20130814
- packet(0x0202,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0281,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0368,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0815,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0835,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0868,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0873,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0874,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0885,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0887,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0889,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x088a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x088c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0895,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0896,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x08a4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0923,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0926,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0927,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0936,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0937,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x093a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0941,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0947,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x094e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0958,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0959,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x095f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0962,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0202,clif->pMoveToKafra,2,4);
+ packet(0x0281,clif->pFriendsListAdd,2);
+ packet(0x0368,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0815,clif->pDull/*,XXX*/);
+ packet(0x0835,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0868,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0873,clif->pMoveFromKafra,2,4);
+ packet(0x0874,clif->pActionRequest,2,6);
+ packet(0x0885,clif->pStoragePassword,0);
+ packet(0x0887,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0889,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x088a,clif->pTickSend,2);
+ packet(0x088c,clif->pChangeDir,2,4);
+ packet(0x0895,clif->pReqClickBuyingStore,2);
+ packet(0x0896,clif->pDull/*,XXX*/);
+ packet(0x08a4,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0923,clif->pSolveCharName,2);
+ packet(0x0926,clif->pTakeItem,2);
+ packet(0x0927,clif->pPartyInvite2,2);
+ packet(0x0936,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0937,clif->pGetCharNameRequest,2);
+ packet(0x093a,clif->pWalkToXY,2);
+ packet(0x0941,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0947,clif->pUseSkillToId,2,4,6);
+ packet(0x094e,clif->pReqCloseBuyingStore,0);
+ packet(0x0958,clif->pHomMenu,2,4);
+ packet(0x0959,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x095f,clif->pDropItem,2,4);
+ packet(0x0962,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
#endif
// 2013-08-21dRagexeRE
#if PACKETVER == 20130821
- packet(0x0202,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0360,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0437,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0438,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x07ec,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0815,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0862,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0863,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x086e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0879,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0881,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x088d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x088f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0892,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x08a6,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x08ad,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x091d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0923,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x092d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x093e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0947,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0954,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x095e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0962,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0964,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0967,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0969,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0202,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0360,clif->pStoragePassword,0);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0437,clif->pMoveToKafra,2,4);
+ packet(0x0438,clif->pDull/*,XXX*/);
+ packet(0x07ec,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0815,clif->pWalkToXY,2);
+ packet(0x0862,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0863,clif->pActionRequest,2,6);
+ packet(0x086e,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0879,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0881,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x088d,clif->pTickSend,2);
+ packet(0x088f,clif->pFriendsListAdd,2);
+ packet(0x0892,clif->pReqClickBuyingStore,2);
+ packet(0x08a6,clif->pReqCloseBuyingStore,0);
+ packet(0x08ad,clif->pDull/*,XXX*/);
+ packet(0x091d,clif->pChangeDir,2,4);
+ packet(0x0923,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x092d,clif->pGetCharNameRequest,2);
+ packet(0x093e,clif->pMoveFromKafra,2,4);
+ packet(0x0947,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0954,clif->pUseSkillToId,2,4,6);
+ packet(0x095e,clif->pSolveCharName,2);
+ packet(0x0962,clif->pTakeItem,2);
+ packet(0x0964,clif->pDropItem,2,4);
+ packet(0x0967,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0969,clif->pPartyInvite2,2);
#endif
// 2013-08-28bRagexeRE, 2013-08-28cRagexeRE
#if PACKETVER == 20130828
- packet(0x023b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0361,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0364,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x07ec,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0817,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0873,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x087e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0889,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0893,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x089e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x089f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08a3,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x08ac,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0917,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0919,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x091e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0923,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0924,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0928,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0929,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0930,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0944,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0946,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x094a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x094c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x094f,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x095d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0966,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x096a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x023b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0361,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0364,clif->pDull/*,XXX*/);
+ packet(0x07ec,clif->pReqClickBuyingStore,2);
+ packet(0x0817,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0873,clif->pSearchStoreInfoNextPage,0);
+ packet(0x087e,clif->pDropItem,2,4);
+ packet(0x0889,clif->pHomMenu,2,4);
+ packet(0x0893,clif->pStoragePassword,0);
+ packet(0x089e,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x089f,clif->pChangeDir,2,4);
+ packet(0x08a3,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x08ac,clif->pGetCharNameRequest,2);
+ packet(0x0917,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0919,clif->pReqCloseBuyingStore,0);
+ packet(0x091e,clif->pTakeItem,2);
+ packet(0x0923,clif->pUseSkillToId,2,4,6);
+ packet(0x0924,clif->pTickSend,2);
+ packet(0x0928,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0929,clif->pMoveFromKafra,2,4);
+ packet(0x0930,clif->pSolveCharName,2);
+ packet(0x0944,clif->pFriendsListAdd,2);
+ packet(0x0946,clif->pDull/*,XXX*/);
+ packet(0x094a,clif->pPartyInvite2,2);
+ packet(0x094c,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x094f,clif->pActionRequest,2,6);
+ packet(0x095d,clif->pWalkToXY,2);
+ packet(0x0966,clif->pMoveToKafra,2,4);
+ packet(0x096a,clif->pWantToConnection,2,6,10,14,18);
#endif
// 2013-09-04bRagexeRE
#if PACKETVER == 20130904
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0838,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0937,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x093a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0940,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0956,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pChangeDir,2,4);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0838,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0937,clif->pFriendsListAdd,2);
+ packet(0x093a,clif->pHomMenu,2,4);
+ packet(0x0940,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0956,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-09-11aRagexeRE, 2013-09-11bRagexeRE
#if PACKETVER == 20130911
- packet(0x035f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0364,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0868,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x086b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x086d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x087b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0889,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0891,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x08a4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x091e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x093a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0940,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0948,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0967,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x096a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x035f,clif->pReqClickBuyingStore,2);
+ packet(0x0364,clif->pGetCharNameRequest,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085c,clif->pPartyInvite2,2);
+ packet(0x0868,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x086b,clif->pStoragePassword,0);
+ packet(0x086d,clif->pMoveFromKafra,2,4);
+ packet(0x087b,clif->pDull/*,XXX*/);
+ packet(0x0889,clif->pTakeItem,2);
+ packet(0x0891,clif->pHomMenu,2,4);
+ packet(0x08a4,clif->pItemListWindowSelected,2,4,8);
+ packet(0x091e,clif->pChangeDir,2,4);
+ packet(0x093a,clif->pDull/*,XXX*/);
+ packet(0x0940,clif->pTickSend,2);
+ packet(0x0948,clif->pFriendsListAdd,2);
+ packet(0x0967,clif->pDropItem,2,4);
+ packet(0x096a,clif->pMoveToKafra,2,4);
#endif
// 2013-09-17aRagexeRE
#if PACKETVER == 20130917
- packet(0x035f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0811,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0838,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x083c,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0863,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0868,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x086e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x086f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x087a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x087e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x088a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0895,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x089b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x089d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x08a0,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08a2,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x08a8,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0918,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x091c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x091e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0921,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0923,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0934,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x094c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x094e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0957,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0959,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x095b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x096a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x035f,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0811,clif->pActionRequest,2,6);
+ packet(0x0838,clif->pReqClickBuyingStore,2);
+ packet(0x083c,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0863,clif->pMoveFromKafra,2,4);
+ packet(0x0868,clif->pPartyInvite2,2);
+ packet(0x086e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x086f,clif->pTickSend,2);
+ packet(0x087a,clif->pTakeItem,2);
+ packet(0x087e,clif->pUseSkillToId,2,4,6);
+ packet(0x088a,clif->pStoragePassword,0);
+ packet(0x0895,clif->pSolveCharName,2);
+ packet(0x089b,clif->pReqCloseBuyingStore,0);
+ packet(0x089d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x08a0,clif->pMoveToKafra,2,4);
+ packet(0x08a2,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x08a8,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0918,clif->pChangeDir,2,4);
+ packet(0x091c,clif->pDropItem,2,4);
+ packet(0x091e,clif->pDull/*,XXX*/);
+ packet(0x0921,clif->pGetCharNameRequest,2);
+ packet(0x0923,clif->pHomMenu,2,4);
+ packet(0x0934,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x094c,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x094e,clif->pDull/*,XXX*/);
+ packet(0x0957,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0959,clif->pItemListWindowSelected,2,4,8);
+ packet(0x095b,clif->pWalkToXY,2);
+ packet(0x096a,clif->pFriendsListAdd,2);
#endif
// 2013-09-25aRagexeRE, 2013-09-25bRagexeRE
#if PACKETVER == 20130925
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x086d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x086e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0875,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0876,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x087d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0885,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0887,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x088f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0890,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0940,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0958,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x095a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x095b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x095c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0969,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x086d,clif->pStoragePassword,0);
+ packet(0x086e,clif->pPartyInvite2,2);
+ packet(0x0875,clif->pHomMenu,2,4);
+ packet(0x0876,clif->pMoveFromKafra,2,4);
+ packet(0x087d,clif->pDropItem,2,4);
+ packet(0x0885,clif->pChangeDir,2,4);
+ packet(0x0887,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x088f,clif->pFriendsListAdd,2);
+ packet(0x0890,clif->pDull/*,XXX*/);
+ packet(0x0940,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0958,clif->pTakeItem,2);
+ packet(0x095a,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x095b,clif->pItemListWindowSelected,2,4,8);
+ packet(0x095c,clif->pMoveToKafra,2,4);
+ packet(0x0969,clif->pDull/*,XXX*/);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-10-02aRagexeRE
#if PACKETVER == 20131002
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0940,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pStoragePassword,0);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pTickSend,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0940,clif->pWalkToXY,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-10-08bRagexeRE
#if PACKETVER == 20131008
- packet(0x0202,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0362,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x07e4,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x083c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x085d,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x085e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0863,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x086c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x086d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0883,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0884,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0885,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0896,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x089c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08a9,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0917,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x091c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0923,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0927,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0932,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0934,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0936,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x093c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0947,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0952,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0954,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0956,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x095d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0969,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0202,clif->pGetCharNameRequest,2);
+ packet(0x0362,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x07e4,clif->pActionRequest,2,6);
+ packet(0x083c,clif->pReqCloseBuyingStore,0);
+ packet(0x085d,clif->pDull/*,XXX*/);
+ packet(0x085e,clif->pWalkToXY,2);
+ packet(0x0863,clif->pPartyInvite2,2);
+ packet(0x086c,clif->pItemListWindowSelected,2,4,8);
+ packet(0x086d,clif->pSolveCharName,2);
+ packet(0x0883,clif->pMoveToKafra,2,4);
+ packet(0x0884,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0885,clif->pDull/*,XXX*/);
+ packet(0x0896,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x089c,clif->pChangeDir,2,4);
+ packet(0x08a9,clif->pUseSkillToId,2,4,6);
+ packet(0x0917,clif->pMoveFromKafra,2,4);
+ packet(0x091c,clif->pTakeItem,2);
+ packet(0x0923,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0927,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0932,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0934,clif->pTickSend,2);
+ packet(0x0936,clif->pReqClickBuyingStore,2);
+ packet(0x093c,clif->pHomMenu,2,4);
+ packet(0x0947,clif->pStoragePassword,0);
+ packet(0x0952,clif->pDropItem,2,4);
+ packet(0x0954,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0956,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x095d,clif->pFriendsListAdd,2);
+ packet(0x0969,clif->pReqOpenBuyingStore,2,4,8,9,89);
#endif
// 2013-10-16aRagexeRE, 2013-10-16bRagexeRE
#if PACKETVER == 20131016
- packet(0x022d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0281,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0361,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0364,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0366,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x07ec,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0802,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x085a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x085d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0863,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0864,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0867,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x086c,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0870,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0875,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0887,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0888,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x088b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0890,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0894,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x091a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x091e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x091f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0927,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0946,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x094e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x095e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0962,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0966,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pMoveToKafra,2,4);
+ packet(0x0281,clif->pPartyInvite2,2);
+ packet(0x0361,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0364,clif->pDropItem,2,4);
+ packet(0x0366,clif->pReqClickBuyingStore,2);
+ packet(0x07ec,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0802,clif->pDull/*,XXX*/);
+ packet(0x085a,clif->pDull/*,XXX*/);
+ packet(0x085d,clif->pGetCharNameRequest,2);
+ packet(0x0863,clif->pUseSkillToId,2,4,6);
+ packet(0x0864,clif->pStoragePassword,0);
+ packet(0x0867,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x086c,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0870,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0875,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0887,clif->pTakeItem,2);
+ packet(0x0888,clif->pHomMenu,2,4);
+ packet(0x088b,clif->pFriendsListAdd,2);
+ packet(0x0890,clif->pSolveCharName,2);
+ packet(0x0894,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x091a,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x091e,clif->pMoveFromKafra,2,4);
+ packet(0x091f,clif->pWalkToXY,2);
+ packet(0x0927,clif->pTickSend,2);
+ packet(0x0946,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x094e,clif->pReqCloseBuyingStore,0);
+ packet(0x095e,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0962,clif->pActionRequest,2,6);
+ packet(0x0966,clif->pChangeDir,2,4);
#endif
// 2013-10-23aRagexeRE
#if PACKETVER == 20131023
- packet(0x0366,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0438,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0819,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0835,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x085b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0862,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x086e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0872,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0876,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x087f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0885,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x088a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x088b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x088f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08a7,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x08ab,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08ac,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0919,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x091d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0923,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0924,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0935,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0937,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0944,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x094a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0951,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0954,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x095b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0366,clif->pReqCloseBuyingStore,0);
+ packet(0x0438,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0819,clif->pDropItem,2,4);
+ packet(0x0835,clif->pDull/*,XXX*/);
+ packet(0x085b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0862,clif->pDull/*,XXX*/);
+ packet(0x086e,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0872,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0876,clif->pUseSkillToId,2,4,6);
+ packet(0x087f,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0885,clif->pStoragePassword,0);
+ packet(0x088a,clif->pItemListWindowSelected,2,4,8);
+ packet(0x088b,clif->pTakeItem,2);
+ packet(0x088f,clif->pMoveToKafra,2,4);
+ packet(0x08a7,clif->pHomMenu,2,4);
+ packet(0x08ab,clif->pChangeDir,2,4);
+ packet(0x08ac,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0919,clif->pSolveCharName,2);
+ packet(0x091d,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0923,clif->pActionRequest,2,6);
+ packet(0x0924,clif->pTickSend,2);
+ packet(0x0935,clif->pReqClickBuyingStore,2);
+ packet(0x0937,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0944,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x094a,clif->pFriendsListAdd,2);
+ packet(0x0951,clif->pGetCharNameRequest,2);
+ packet(0x0954,clif->pMoveFromKafra,2,4);
+ packet(0x095b,clif->pWalkToXY,2);
#endif
// 2013-10-30aRagexeRE
#if PACKETVER == 20131030
- packet(0x022d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x087d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0887,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08a2,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0925,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x022d,clif->pHomMenu,2,4);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x087d,clif->pFriendsListAdd,2);
+ packet(0x0887,clif->pStoragePassword,0);
+ packet(0x08a2,clif->pDull/*,XXX*/);
+ packet(0x0925,clif->pChangeDir,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-11-06aRagexeRE
#if PACKETVER == 20131106
- packet(0x0281,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0363,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0369,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0436,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0802,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0817,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0866,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0867,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0870,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0875,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0887,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0891,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0893,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0894,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x08a2,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0919,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x091d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0929,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0935,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x093b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0942,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0946,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0947,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0948,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0950,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0954,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x095d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0962,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0967,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0281,clif->pGetCharNameRequest,2);
+ packet(0x0363,clif->pUseSkillToId,2,4,6);
+ packet(0x0369,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0436,clif->pStoragePassword,0);
+ packet(0x0802,clif->pChangeDir,2,4);
+ packet(0x0817,clif->pDull/*,XXX*/);
+ packet(0x0866,clif->pWalkToXY,2);
+ packet(0x0867,clif->pMoveToKafra,2,4);
+ packet(0x0870,clif->pReqCloseBuyingStore,0);
+ packet(0x0875,clif->pDropItem,2,4);
+ packet(0x0887,clif->pTickSend,2);
+ packet(0x0891,clif->pSolveCharName,2);
+ packet(0x0893,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0894,clif->pHomMenu,2,4);
+ packet(0x08a2,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0919,clif->pSearchStoreInfoNextPage,0);
+ packet(0x091d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0929,clif->pMoveFromKafra,2,4);
+ packet(0x0935,clif->pFriendsListAdd,2);
+ packet(0x093b,clif->pTakeItem,2);
+ packet(0x0942,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0946,clif->pReqClickBuyingStore,2);
+ packet(0x0947,clif->pActionRequest,2,6);
+ packet(0x0948,clif->pDull/*,XXX*/);
+ packet(0x0950,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0954,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x095d,clif->pPartyInvite2,2);
+ packet(0x0962,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0967,clif->pReqTradeBuyingStore,2,4,8,12);
#endif
// 2013-11-13aRagexeRE
#if PACKETVER == 20131113
- packet(0x0364,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x086d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0879,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x088c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x088f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x089a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x08a4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x08a8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x091c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0920,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0926,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0927,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0928,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0929,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x092b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x092c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x092d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x092e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x092f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0934,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0936,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x093c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0949,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0950,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x095d,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x095f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0960,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0964,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0969,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0364,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x086d,clif->pReqCloseBuyingStore,0);
+ packet(0x0879,clif->pSearchStoreInfoNextPage,0);
+ packet(0x088c,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x088f,clif->pDropItem,2,4);
+ packet(0x089a,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x08a4,clif->pItemListWindowSelected,2,4,8);
+ packet(0x08a8,clif->pDull/*,XXX*/);
+ packet(0x091c,clif->pMoveFromKafra,2,4);
+ packet(0x0920,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0926,clif->pHomMenu,2,4);
+ packet(0x0927,clif->pPartyInvite2,2);
+ packet(0x0928,clif->pStoragePassword,0);
+ packet(0x0929,clif->pTickSend,2);
+ packet(0x092b,clif->pTakeItem,2);
+ packet(0x092c,clif->pFriendsListAdd,2);
+ packet(0x092d,clif->pReqClickBuyingStore,2);
+ packet(0x092e,clif->pGetCharNameRequest,2);
+ packet(0x092f,clif->pSolveCharName,2);
+ packet(0x0934,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0936,clif->pWalkToXY,2);
+ packet(0x093c,clif->pChangeDir,2,4);
+ packet(0x0949,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0950,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x095d,clif->pActionRequest,2,6);
+ packet(0x095f,clif->pUseSkillToId,2,4,6);
+ packet(0x0960,clif->pMoveToKafra,2,4);
+ packet(0x0964,clif->pDull/*,XXX*/);
+ packet(0x0969,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
#endif
// 2013-11-20eRagexeRE
#if PACKETVER == 20131120
- packet(0x0361,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0368,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0802,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0811,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0817,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x085a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x085f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0862,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0884,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x088c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x088d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x089e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08a1,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x08a4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08a8,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0917,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0926,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0927,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x092b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x092d,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x093e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x093f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0940,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0950,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0953,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0955,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0956,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x095e,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0361,clif->pSolveCharName,2);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0368,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0802,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0811,clif->pDull/*,XXX*/);
+ packet(0x0817,clif->pTickSend,2);
+ packet(0x085a,clif->pItemListWindowSelected,2,4,8);
+ packet(0x085f,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0862,clif->pReqCloseBuyingStore,0);
+ packet(0x0884,clif->pUseSkillToId,2,4,6);
+ packet(0x088c,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x088d,clif->pFriendsListAdd,2);
+ packet(0x089e,clif->pTakeItem,2);
+ packet(0x08a1,clif->pHomMenu,2,4);
+ packet(0x08a4,clif->pStoragePassword,0);
+ packet(0x08a8,clif->pActionRequest,2,6);
+ packet(0x0917,clif->pDropItem,2,4);
+ packet(0x0926,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0927,clif->pMoveToKafra,2,4);
+ packet(0x092b,clif->pWalkToXY,2);
+ packet(0x092d,clif->pSearchStoreInfoNextPage,0);
+ packet(0x093e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x093f,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0940,clif->pDull/*,XXX*/);
+ packet(0x0950,clif->pGetCharNameRequest,2);
+ packet(0x0953,clif->pPartyInvite2,2);
+ packet(0x0955,clif->pReqClickBuyingStore,2);
+ packet(0x0956,clif->pChangeDir,2,4);
+ packet(0x095e,clif->pPartyBookingRegisterReq,2,4);
#endif
// 2013-11-27aRagexeRE, 2013-11-27bRagexeRE
#if PACKETVER == 20131127
- packet(0x035f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0364,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0365,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0366,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0881,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0884,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x088d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0894,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x089e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0930,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x093a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0940,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x094c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x094f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x095c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0967,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x096a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x035f,clif->pReqClickBuyingStore,2);
+ packet(0x0364,clif->pGetCharNameRequest,2);
+ packet(0x0365,clif->pWalkToXY,2);
+ packet(0x0366,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pMoveFromKafra,2,4);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0881,clif->pDull/*,XXX*/);
+ packet(0x0884,clif->pHomMenu,2,4);
+ packet(0x088d,clif->pChangeDir,2,4);
+ packet(0x0894,clif->pStoragePassword,0);
+ packet(0x089e,clif->pDull/*,XXX*/);
+ packet(0x0930,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x093a,clif->pFriendsListAdd,2);
+ packet(0x0940,clif->pTickSend,2);
+ packet(0x094c,clif->pTakeItem,2);
+ packet(0x094f,clif->pDropItem,2,4);
+ packet(0x095c,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0967,clif->pPartyInvite2,2);
+ packet(0x096a,clif->pMoveToKafra,2,4);
#endif
// 2013-12-04dRagexeRE, 2013-12-04eRagexeRE
#if PACKETVER == 20131204
- packet(0x0365,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0366,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x07e4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x07ec,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x085a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0862,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0869,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x086c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0877,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0879,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x087f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0882,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x08a0,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x08a4,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x08a7,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08ad,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x091f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0928,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x092d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x092f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0932,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x093b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0941,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0951,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0958,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0959,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x095b,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0961,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0967,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0365,clif->pReqCloseBuyingStore,0);
+ packet(0x0366,clif->pTickSend,2);
+ packet(0x07e4,clif->pStoragePassword,0);
+ packet(0x07ec,clif->pReqClickBuyingStore,2);
+ packet(0x085a,clif->pPartyInvite2,2);
+ packet(0x0862,clif->pChangeDir,2,4);
+ packet(0x0869,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x086c,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0877,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0879,clif->pSolveCharName,2);
+ packet(0x087f,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0882,clif->pFriendsListAdd,2);
+ packet(0x08a0,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x08a4,clif->pDropItem,2,4);
+ packet(0x08a7,clif->pTakeItem,2);
+ packet(0x08ad,clif->pGetCharNameRequest,2);
+ packet(0x091f,clif->pHomMenu,2,4);
+ packet(0x0928,clif->pActionRequest,2,6);
+ packet(0x092d,clif->pUseSkillToId,2,4,6);
+ packet(0x092f,clif->pWalkToXY,2);
+ packet(0x0932,clif->pSearchStoreInfoNextPage,0);
+ packet(0x093b,clif->pDull/*,XXX*/);
+ packet(0x0941,clif->pMoveToKafra,2,4);
+ packet(0x0951,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0958,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0959,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x095b,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0961,clif->pDull/*,XXX*/);
+ packet(0x0967,clif->pMoveFromKafra,2,4);
#endif
// 2013-12-11cRagexeRE, 2013-12-11eRagexeRE
#if PACKETVER == 20131211
- packet(0x0202,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0366,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0865,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x086e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0873,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0881,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0886,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0892,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08a3,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x08a4,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08ab,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x092b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0931,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x094c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pUseSkillToId,2,4,6);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0366,clif->pTakeItem,2);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pFriendsListAdd,2);
+ packet(0x0865,clif->pPartyInvite2,2);
+ packet(0x086e,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0873,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0881,clif->pDull/*,XXX*/);
+ packet(0x0886,clif->pHomMenu,2,4);
+ packet(0x0892,clif->pMoveToKafra,2,4);
+ packet(0x08a3,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x08a4,clif->pChangeDir,2,4);
+ packet(0x08ab,clif->pDropItem,2,4);
+ packet(0x092b,clif->pStoragePassword,0);
+ packet(0x0931,clif->pMoveFromKafra,2,4);
+ packet(0x094c,clif->pDull/*,XXX*/);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-12-18aRagexeRE
#if PACKETVER == 20131218
- packet(0x022d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x087b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x08ab,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x092f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0947,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x022d,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pHomMenu,2,4);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085c,clif->pStoragePassword,0);
+ packet(0x087b,clif->pDull/*,XXX*/);
+ packet(0x08ab,clif->pFriendsListAdd,2);
+ packet(0x092f,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0947,clif->pChangeDir,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-12-23bRagexeRE, 2013-12-23xRagexeRE
#if PACKETVER == 20131223
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x08a4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x08a4,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2013-12-30aRagexeRE
#if PACKETVER == 20131230
- packet(0x022d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x02c4,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x035f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0365,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0369,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0438,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0860,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0871,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x087b,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x087e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x087f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0895,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0898,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x089c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x08a9,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x091d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x091e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x091f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0926,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x092a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x093d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x093e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0943,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0949,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x094a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x094c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0968,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0969,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x096a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x022d,clif->pItemListWindowSelected,2,4,8);
+ packet(0x02c4,clif->pUseSkillToId,2,4,6);
+ packet(0x035f,clif->pWalkToXY,2);
+ packet(0x0365,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0369,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0438,clif->pTickSend,2);
+ packet(0x0860,clif->pDropItem,2,4);
+ packet(0x0871,clif->pActionRequest,2,6);
+ packet(0x087b,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x087e,clif->pDull/*,XXX*/);
+ packet(0x087f,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0895,clif->pMoveFromKafra,2,4);
+ packet(0x0898,clif->pSolveCharName,2);
+ packet(0x089c,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x08a9,clif->pPartyInvite2,2);
+ packet(0x091d,clif->pStoragePassword,0);
+ packet(0x091e,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x091f,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0926,clif->pGetCharNameRequest,2);
+ packet(0x092a,clif->pTakeItem,2);
+ packet(0x093d,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x093e,clif->pDull/*,XXX*/);
+ packet(0x0943,clif->pFriendsListAdd,2);
+ packet(0x0949,clif->pHomMenu,2,4);
+ packet(0x094a,clif->pChangeDir,2,4);
+ packet(0x094c,clif->pReqCloseBuyingStore,0);
+ packet(0x0968,clif->pMoveToKafra,2,4);
+ packet(0x0969,clif->pReqClickBuyingStore,2);
+ packet(0x096a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
#endif
// 2014-01-08bRagexeRE, 2014-01-08cRagexeRE
#if PACKETVER == 20140108
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0936,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0936,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2014-01-15cRagexeRE, 2014-01-15dRagexeRE, 2014-01-15eRagexeRE
#if PACKETVER == 20140115
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0367,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0802,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0865,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0887,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x088a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x088e,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x089b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x08a7,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x092d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0940,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x095b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x095d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0965,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0966,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x096a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pDropItem,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0367,clif->pMoveFromKafra,2,4);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0802,clif->pGetCharNameRequest,2);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0865,clif->pStoragePassword,0);
+ packet(0x0887,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x088a,clif->pDull/*,XXX*/);
+ packet(0x088e,clif->pMoveToKafra,2,4);
+ packet(0x089b,clif->pFriendsListAdd,2);
+ packet(0x08a7,clif->pChangeDir,2,4);
+ packet(0x092d,clif->pHomMenu,2,4);
+ packet(0x0940,clif->pTakeItem,2);
+ packet(0x095b,clif->pDull/*,XXX*/);
+ packet(0x095d,clif->pPartyInvite2,2);
+ packet(0x0965,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0966,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x096a,clif->pPartyBookingRegisterReq,2,4);
#endif
// 2014-01-22aRagexeRE
#if PACKETVER == 20140122
- packet(0x0360,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x07ec,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0811,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0863,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0870,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0871,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0872,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x088c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0890,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0893,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0899,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x089d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x08a2,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x08aa,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0917,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x091a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0925,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x092f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0940,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0941,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0942,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x094b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x094c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0950,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0952,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0955,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0957,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x095d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x095f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0360,clif->pActionRequest,2,6);
+ packet(0x07ec,clif->pReqClickBuyingStore,2);
+ packet(0x0811,clif->pReqCloseBuyingStore,0);
+ packet(0x0863,clif->pHomMenu,2,4);
+ packet(0x0870,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0871,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0872,clif->pPartyInvite2,2);
+ packet(0x088c,clif->pDull/*,XXX*/);
+ packet(0x0890,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0893,clif->pFriendsListAdd,2);
+ packet(0x0899,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x089d,clif->pGetCharNameRequest,2);
+ packet(0x08a2,clif->pDull/*,XXX*/);
+ packet(0x08aa,clif->pDropItem,2,4);
+ packet(0x0917,clif->pTickSend,2);
+ packet(0x091a,clif->pChangeDir,2,4);
+ packet(0x0925,clif->pWalkToXY,2);
+ packet(0x092f,clif->pMoveToKafra,2,4);
+ packet(0x0940,clif->pUseSkillToId,2,4,6);
+ packet(0x0941,clif->pSolveCharName,2);
+ packet(0x0942,clif->pTakeItem,2);
+ packet(0x094b,clif->pSearchStoreInfoNextPage,0);
+ packet(0x094c,clif->pMoveFromKafra,2,4);
+ packet(0x0950,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0952,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0955,clif->pStoragePassword,0);
+ packet(0x0957,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x095d,clif->pItemListWindowSelected,2,4,8);
+ packet(0x095f,clif->pReqOpenBuyingStore,2,4,8,9,89);
#endif
// 2014-01-29bRagexeRE
#if PACKETVER == 20140129
- packet(0x0281,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0367,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07ec,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0802,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0884,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0885,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0889,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0921,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0924,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x092c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x094d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0958,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0961,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0281,clif->pUseSkillToId,2,4,6);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pDull/*,XXX*/);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0367,clif->pDropItem,2,4);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07ec,clif->pChangeDir,2,4);
+ packet(0x0802,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pDull/*,XXX*/);
+ packet(0x0884,clif->pHomMenu,2,4);
+ packet(0x0885,clif->pTakeItem,2);
+ packet(0x0889,clif->pMoveFromKafra,2,4);
+ packet(0x0921,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0924,clif->pItemListWindowSelected,2,4,8);
+ packet(0x092c,clif->pStoragePassword,0);
+ packet(0x094d,clif->pMoveToKafra,2,4);
+ packet(0x0958,clif->pPartyInvite2,2);
+ packet(0x0961,clif->pFriendsListAdd,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2014-02-05bRagexeRE
#if PACKETVER == 20140205
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0938,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0938,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2014-02-12aRagexeRE
#if PACKETVER == 20140212
- packet(0x02c4,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0369,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0438,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x086e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0874,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0877,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0878,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x087e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0888,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x088c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x089d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x089e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x08a0,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08a1,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x08a7,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x08ac,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08ad,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0919,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x091b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0928,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0930,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0934,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0936,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x093d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0944,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x094e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0952,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0953,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0960,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x02c4,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0369,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0438,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x086e,clif->pUseSkillToId,2,4,6);
+ packet(0x0874,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0877,clif->pReqClickBuyingStore,2);
+ packet(0x0878,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x087e,clif->pWalkToXY,2);
+ packet(0x0888,clif->pMoveFromKafra,2,4);
+ packet(0x088c,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x089d,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x089e,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x08a0,clif->pStoragePassword,0);
+ packet(0x08a1,clif->pPartyInvite2,2);
+ packet(0x08a7,clif->pItemListWindowSelected,2,4,8);
+ packet(0x08ac,clif->pMoveToKafra,2,4);
+ packet(0x08ad,clif->pDropItem,2,4);
+ packet(0x0919,clif->pChangeDir,2,4);
+ packet(0x091b,clif->pFriendsListAdd,2);
+ packet(0x0928,clif->pSolveCharName,2);
+ packet(0x0930,clif->pTickSend,2);
+ packet(0x0934,clif->pActionRequest,2,6);
+ packet(0x0936,clif->pDull/*,XXX*/);
+ packet(0x093d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0944,clif->pHomMenu,2,4);
+ packet(0x094e,clif->pDull/*,XXX*/);
+ packet(0x0952,clif->pGetCharNameRequest,2);
+ packet(0x0953,clif->pTakeItem,2);
+ packet(0x0960,clif->pReqCloseBuyingStore,0);
#endif
// 2014-02-19aRagexeRE, 2014-02-19bRagexeRE
#if PACKETVER == 20140219
- packet(0x0202,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0360,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0364,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0802,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0838,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x085c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x085d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x085f,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0860,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0868,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x086f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x087c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0889,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0898,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x089f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x08a6,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08aa,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x08ac,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0921,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0927,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0939,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0946,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0949,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0953,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x095a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0961,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0202,clif->pFriendsListAdd,2);
+ packet(0x0360,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pSolveCharName,2);
+ packet(0x0802,clif->pTakeItem,2);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0838,clif->pUseSkillToId,2,4,6);
+ packet(0x085b,clif->pReqClickBuyingStore,2);
+ packet(0x085c,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x085d,clif->pWalkToXY,2);
+ packet(0x085f,clif->pGetCharNameRequest,2);
+ packet(0x0860,clif->pHomMenu,2,4);
+ packet(0x0868,clif->pStoragePassword,0);
+ packet(0x086f,clif->pPartyInvite2,2);
+ packet(0x087c,clif->pMoveToKafra,2,4);
+ packet(0x0889,clif->pDull/*,XXX*/);
+ packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0898,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x089f,clif->pDropItem,2,4);
+ packet(0x08a6,clif->pChangeDir,2,4);
+ packet(0x08aa,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x08ac,clif->pMoveFromKafra,2,4);
+ packet(0x0921,clif->pActionRequest,2,6);
+ packet(0x0927,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0939,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0946,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0949,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0953,clif->pSearchStoreInfoNextPage,0);
+ packet(0x095a,clif->pReqCloseBuyingStore,0);
+ packet(0x0961,clif->pTickSend,2);
#endif
// 2014-02-26aRagexeRE, 2014-02-26bRagexeRE
#if PACKETVER == 20140226
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0362,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0364,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0867,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0877,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0887,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0894,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0895,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x091a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0921,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0931,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0941,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0962,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0964,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0969,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0362,clif->pFriendsListAdd,2);
+ packet(0x0364,clif->pStoragePassword,0);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pChangeDir,2,4);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0867,clif->pHomMenu,2,4);
+ packet(0x0877,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0887,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0894,clif->pDropItem,2,4);
+ packet(0x0895,clif->pMoveFromKafra,2,4);
+ packet(0x091a,clif->pMoveToKafra,2,4);
+ packet(0x0921,clif->pPartyInvite2,2);
+ packet(0x0931,clif->pDull/*,XXX*/);
+ packet(0x0941,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0962,clif->pDull/*,XXX*/);
+ packet(0x0964,clif->pTakeItem,2);
+ packet(0x0969,clif->pItemListWindowSelected,2,4,8);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2014-03-05aRagexeRE, 2014-03-05bRagexeRE
#if PACKETVER == 20140305
- packet(0x0202,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x07e4,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0878,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0934,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x095e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pTakeItem,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x07e4,clif->pFriendsListAdd,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pChangeDir,2,4);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0878,clif->pDull/*,XXX*/);
+ packet(0x0934,clif->pHomMenu,2,4);
+ packet(0x095e,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2014-03-12bRagexeRE
#if PACKETVER == 20140312
- packet(0x0202,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x023b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0366,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x085e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x086f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0889,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x088c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x088d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x088e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0891,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0894,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x089b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x089d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x089e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x08a6,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x08a9,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x08ad,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x091b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x091c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x091e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x092a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0948,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x094a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x094b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x094c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0957,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x095d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x095e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0966,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0202,clif->pUseSkillToId,2,4,6);
+ packet(0x023b,clif->pDull/*,XXX*/);
+ packet(0x0366,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x085e,clif->pReqClickBuyingStore,2);
+ packet(0x086f,clif->pTickSend,2);
+ packet(0x0889,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x088c,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x088d,clif->pItemListWindowSelected,2,4,8);
+ packet(0x088e,clif->pActionRequest,2,6);
+ packet(0x0891,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0894,clif->pWalkToXY,2);
+ packet(0x089b,clif->pGetCharNameRequest,2);
+ packet(0x089d,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x089e,clif->pDropItem,2,4);
+ packet(0x08a6,clif->pDull/*,XXX*/);
+ packet(0x08a9,clif->pFriendsListAdd,2);
+ packet(0x08ad,clif->pSolveCharName,2);
+ packet(0x091b,clif->pSearchStoreInfoNextPage,0);
+ packet(0x091c,clif->pPartyInvite2,2);
+ packet(0x091e,clif->pHomMenu,2,4);
+ packet(0x092a,clif->pTakeItem,2);
+ packet(0x0948,clif->pReqCloseBuyingStore,0);
+ packet(0x094a,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x094b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x094c,clif->pChangeDir,2,4);
+ packet(0x0957,clif->pMoveFromKafra,2,4);
+ packet(0x095d,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x095e,clif->pStoragePassword,0);
+ packet(0x0966,clif->pMoveToKafra,2,4);
#endif
// 2014-03-19aRagexeRE
#if PACKETVER == 20140319
- packet(0x02c4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07e4,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0802,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0811,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0815,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x085a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0864,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0865,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0866,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x086e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0872,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0883,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x088e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0890,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0893,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x089f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x08a2,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x091f,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0923,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0933,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0942,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0944,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0947,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x094c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0954,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0955,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0961,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0964,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x096a,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x02c4,clif->pTakeItem,2);
+ packet(0x07e4,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0802,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0811,clif->pReqClickBuyingStore,2);
+ packet(0x0815,clif->pHomMenu,2,4);
+ packet(0x085a,clif->pWalkToXY,2);
+ packet(0x0864,clif->pActionRequest,2,6);
+ packet(0x0865,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0866,clif->pChangeDir,2,4);
+ packet(0x086e,clif->pDull/*,XXX*/);
+ packet(0x0872,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0883,clif->pDropItem,2,4);
+ packet(0x088e,clif->pPartyInvite2,2);
+ packet(0x0890,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0893,clif->pDull/*,XXX*/);
+ packet(0x089f,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x08a2,clif->pMoveToKafra,2,4);
+ packet(0x091f,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0923,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0933,clif->pReqCloseBuyingStore,0);
+ packet(0x0942,clif->pStoragePassword,0);
+ packet(0x0944,clif->pUseSkillToId,2,4,6);
+ packet(0x0947,clif->pMoveFromKafra,2,4);
+ packet(0x094c,clif->pGetCharNameRequest,2);
+ packet(0x0954,clif->pFriendsListAdd,2);
+ packet(0x0955,clif->pTickSend,2);
+ packet(0x0961,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0964,clif->pSolveCharName,2);
+ packet(0x096a,clif->pReqOpenBuyingStore,2,4,8,9,89);
#endif
// 2014-03-26cRagexeRE
#if PACKETVER == 20140326
- packet(0x0362,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0365,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x07ec,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x083c,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x085b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0865,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0867,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0869,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x086b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x087c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x087e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x087f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0887,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0898,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x08aa,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x08ac,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x08ad,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0918,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0928,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x092a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x093d,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0942,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0945,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0946,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0956,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0959,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x095a,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x095c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0969,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0362,clif->pGetCharNameRequest,2);
+ packet(0x0365,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x07ec,clif->pTakeItem,2);
+ packet(0x083c,clif->pReqClickBuyingStore,2);
+ packet(0x085b,clif->pReqCloseBuyingStore,0);
+ packet(0x0865,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0867,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0869,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x086b,clif->pMoveFromKafra,2,4);
+ packet(0x087c,clif->pWalkToXY,2);
+ packet(0x087e,clif->pFriendsListAdd,2);
+ packet(0x087f,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0887,clif->pDull/*,XXX*/);
+ packet(0x0898,clif->pDropItem,2,4);
+ packet(0x08aa,clif->pDull/*,XXX*/);
+ packet(0x08ac,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x08ad,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0918,clif->pTickSend,2);
+ packet(0x0928,clif->pSearchStoreInfoNextPage,0);
+ packet(0x092a,clif->pStoragePassword,0);
+ packet(0x093d,clif->pActionRequest,2,6);
+ packet(0x0942,clif->pHomMenu,2,4);
+ packet(0x0945,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0946,clif->pPartyInvite2,2);
+ packet(0x0956,clif->pChangeDir,2,4);
+ packet(0x0959,clif->pMoveToKafra,2,4);
+ packet(0x095a,clif->pSolveCharName,2);
+ packet(0x095c,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0969,clif->pUseSkillToId,2,4,6);
#endif
// 2014-04-02eRagexeRE, 2014-04-02fRagexeRE
#if PACKETVER == 20140402
- packet(0x023b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0360,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0364,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07ec,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x085b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x085d,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0867,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0868,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0882,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0883,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x088a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x088c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0890,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0896,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x089a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x08ac,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x091f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0920,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0926,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x092d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0933,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x093f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0944,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0946,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x094c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0950,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0958,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x095c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0965,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x023b,clif->pReqClickBuyingStore,2);
+ packet(0x0360,clif->pChangeDir,2,4);
+ packet(0x0364,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07ec,clif->pSolveCharName,2);
+ packet(0x085b,clif->pMoveFromKafra,2,4);
+ packet(0x085d,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0867,clif->pReqCloseBuyingStore,0);
+ packet(0x0868,clif->pUseSkillToId,2,4,6);
+ packet(0x0882,clif->pDropItem,2,4);
+ packet(0x0883,clif->pItemListWindowSelected,2,4,8);
+ packet(0x088a,clif->pGetCharNameRequest,2);
+ packet(0x088c,clif->pDull/*,XXX*/);
+ packet(0x0890,clif->pPartyInvite2,2);
+ packet(0x0896,clif->pHomMenu,2,4);
+ packet(0x089a,clif->pFriendsListAdd,2);
+ packet(0x08ac,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x091f,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0920,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0926,clif->pStoragePassword,0);
+ packet(0x092d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0933,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x093f,clif->pWalkToXY,2);
+ packet(0x0944,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0946,clif->pActionRequest,2,6);
+ packet(0x094c,clif->pDull/*,XXX*/);
+ packet(0x0950,clif->pTickSend,2);
+ packet(0x0958,clif->pTakeItem,2);
+ packet(0x095c,clif->pMoveToKafra,2,4);
+ packet(0x0965,clif->pSearchStoreInfoListItemClick,2,6,10);
#endif
// 2014-04-09aRagexeRE
#if PACKETVER == 20140409
- packet(0x0819,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x085b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0868,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x086a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x086d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0873,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0875,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x087e,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0883,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0884,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x088a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0890,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0893,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0896,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0899,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x08a2,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x08a4,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x08a6,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x08a7,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08a9,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0918,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x091c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x092e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0942,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0947,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x094c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x095a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x095e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0819,clif->pMoveFromKafra,2,4);
+ packet(0x085b,clif->pSolveCharName,2);
+ packet(0x0868,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x086a,clif->pItemListWindowSelected,2,4,8);
+ packet(0x086d,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0873,clif->pReqCloseBuyingStore,0);
+ packet(0x0875,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x087e,clif->pTickSend,2);
+ packet(0x0883,clif->pWalkToXY,2);
+ packet(0x0884,clif->pGetCharNameRequest,2);
+ packet(0x088a,clif->pDull/*,XXX*/);
+ packet(0x0890,clif->pTakeItem,2);
+ packet(0x0893,clif->pActionRequest,2,6);
+ packet(0x0896,clif->pUseSkillToId,2,4,6);
+ packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0899,clif->pFriendsListAdd,2);
+ packet(0x08a2,clif->pDull/*,XXX*/);
+ packet(0x08a4,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x08a6,clif->pSearchStoreInfoNextPage,0);
+ packet(0x08a7,clif->pChangeDir,2,4);
+ packet(0x08a9,clif->pStoragePassword,0);
+ packet(0x0918,clif->pDropItem,2,4);
+ packet(0x091c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x092e,clif->pPartyInvite2,2);
+ packet(0x0942,clif->pMoveToKafra,2,4);
+ packet(0x0947,clif->pHomMenu,2,4);
+ packet(0x094c,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x095a,clif->pReqClickBuyingStore,2);
+ packet(0x095e,clif->pWantToConnection,2,6,10,14,18);
#endif
// 2014-04-16aRagexeRE
#if PACKETVER == 20140416
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x095c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x095c,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2014-04-23aRagexeRE
#if PACKETVER == 20140423
- packet(0x022d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0360,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0436,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0811,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x083c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x085a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x085b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0862,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0863,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0866,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x086b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x086f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0873,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x088b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0890,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0895,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0896,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0898,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x089b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x089d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x089f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x08a8,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x08ad,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x091a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0920,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x094f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x095e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x022d,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0360,clif->pStoragePassword,0);
+ packet(0x0436,clif->pFriendsListAdd,2);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x0811,clif->pMoveFromKafra,2,4);
+ packet(0x083c,clif->pChangeDir,2,4);
+ packet(0x085a,clif->pSearchStoreInfoNextPage,0);
+ packet(0x085b,clif->pWalkToXY,2);
+ packet(0x0862,clif->pMoveToKafra,2,4);
+ packet(0x0863,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0866,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x086b,clif->pDropItem,2,4);
+ packet(0x086f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0873,clif->pItemListWindowSelected,2,4,8);
+ packet(0x088b,clif->pSolveCharName,2);
+ packet(0x0890,clif->pUseSkillToId,2,4,6);
+ packet(0x0895,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0896,clif->pActionRequest,2,6);
+ packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0898,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x089b,clif->pReqClickBuyingStore,2);
+ packet(0x089d,clif->pGetCharNameRequest,2);
+ packet(0x089f,clif->pReqCloseBuyingStore,0);
+ packet(0x08a8,clif->pHomMenu,2,4);
+ packet(0x08ad,clif->pDull/*,XXX*/);
+ packet(0x091a,clif->pTickSend,2);
+ packet(0x0920,clif->pPartyInvite2,2);
+ packet(0x094f,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x095e,clif->pDull/*,XXX*/);
#endif
// 2014-04-30aRagexeRE
#if PACKETVER == 20140430
- packet(0x023b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x035f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0363,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0860,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0870,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0871,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0875,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x087f,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0884,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0899,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08a1,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x093b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0940,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x094b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0953,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0956,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x096a,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x023b,clif->pTickSend,2);
+ packet(0x035f,clif->pStoragePassword,0);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0363,clif->pUseSkillToId,2,4,6);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pDropItem,2,4);
+ packet(0x0860,clif->pFriendsListAdd,2);
+ packet(0x0870,clif->pPartyInvite2,2);
+ packet(0x0871,clif->pHomMenu,2,4);
+ packet(0x0875,clif->pMoveFromKafra,2,4);
+ packet(0x087f,clif->pTakeItem,2);
+ packet(0x0884,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0899,clif->pChangeDir,2,4);
+ packet(0x08a1,clif->pDull/*,XXX*/);
+ packet(0x093b,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0940,clif->pGetCharNameRequest,2);
+ packet(0x094b,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0953,clif->pDull/*,XXX*/);
+ packet(0x0956,clif->pMoveToKafra,2,4);
+ packet(0x096a,clif->pSolveCharName,2);
#endif
// 2014-05-08bRagexeRE
#if PACKETVER == 20140508
- packet(0x022d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x02c4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0366,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0368,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0802,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0861,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0886,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x089b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x08ab,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0927,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0930,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0932,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0934,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x094e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x096a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x022d,clif->pSolveCharName,2);
+ packet(0x02c4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pChangeDir,2,4);
+ packet(0x0366,clif->pPartyInvite2,2);
+ packet(0x0368,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pHomMenu,2,4);
+ packet(0x0802,clif->pGetCharNameRequest,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0861,clif->pTakeItem,2);
+ packet(0x0886,clif->pMoveToKafra,2,4);
+ packet(0x089b,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x08ab,clif->pDull/*,XXX*/);
+ packet(0x0927,clif->pStoragePassword,0);
+ packet(0x0930,clif->pMoveFromKafra,2,4);
+ packet(0x0932,clif->pDropItem,2,4);
+ packet(0x0934,clif->pDull/*,XXX*/);
+ packet(0x094e,clif->pFriendsListAdd,2);
+ packet(0x096a,clif->pPartyBookingRegisterReq,2,4);
#endif
// 2014-05-14bRagexeRE, 2014-05-14cRagexeRE
#if PACKETVER == 20140514
- packet(0x0437,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0817,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0865,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0867,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0868,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0876,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0877,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x087d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0885,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0886,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x088a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x088b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0895,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x089a,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x089c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x08a5,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0918,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x091d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0921,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0925,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x092c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x092f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x094d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x094e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0958,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x095f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0962,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0965,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x096a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0437,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0817,clif->pDull/*,XXX*/);
+ packet(0x0865,clif->pActionRequest,2,6);
+ packet(0x0867,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0868,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0876,clif->pUseSkillToId,2,4,6);
+ packet(0x0877,clif->pDull/*,XXX*/);
+ packet(0x087d,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0885,clif->pStoragePassword,0);
+ packet(0x0886,clif->pTickSend,2);
+ packet(0x088a,clif->pChangeDir,2,4);
+ packet(0x088b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0895,clif->pTakeItem,2);
+ packet(0x089a,clif->pSolveCharName,2);
+ packet(0x089c,clif->pFriendsListAdd,2);
+ packet(0x08a5,clif->pGetCharNameRequest,2);
+ packet(0x0918,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x091d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0921,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0925,clif->pReqClickBuyingStore,2);
+ packet(0x092c,clif->pMoveToKafra,2,4);
+ packet(0x092f,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x094d,clif->pReqCloseBuyingStore,0);
+ packet(0x094e,clif->pMoveFromKafra,2,4);
+ packet(0x0958,clif->pHomMenu,2,4);
+ packet(0x095f,clif->pWalkToXY,2);
+ packet(0x0962,clif->pPartyInvite2,2);
+ packet(0x0965,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x096a,clif->pDropItem,2,4);
#endif
// 2014-05-21aRagexeRE
#if PACKETVER == 20140521
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0869,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x088b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x088d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x089c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x08ac,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0968,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0869,clif->pStoragePassword,0);
+ packet(0x088b,clif->pDull/*,XXX*/);
+ packet(0x088d,clif->pChangeDir,2,4);
+ packet(0x089c,clif->pFriendsListAdd,2);
+ packet(0x08ac,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0968,clif->pHomMenu,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2014-05-28aRagexeRE
#if PACKETVER == 20140528
- packet(0x0202,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0360,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x085f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0862,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0872,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0875,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0877,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0879,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x087e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x088a,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x088f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0894,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0896,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x089d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08a4,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x08a8,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x08ab,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x091d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0929,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0930,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0938,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x093a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x093f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x094a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x094b,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x095f,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0963,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0964,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0966,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0202,clif->pWalkToXY,2);
+ packet(0x0360,clif->pStoragePassword,0);
+ packet(0x085f,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0862,clif->pSolveCharName,2);
+ packet(0x0872,clif->pHomMenu,2,4);
+ packet(0x0875,clif->pDropItem,2,4);
+ packet(0x0877,clif->pTickSend,2);
+ packet(0x0879,clif->pMoveFromKafra,2,4);
+ packet(0x087e,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x088a,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x088f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0894,clif->pDull/*,XXX*/);
+ packet(0x0896,clif->pItemListWindowSelected,2,4,8);
+ packet(0x089d,clif->pTakeItem,2);
+ packet(0x08a4,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x08a8,clif->pSearchStoreInfoNextPage,0);
+ packet(0x08ab,clif->pDull/*,XXX*/);
+ packet(0x091d,clif->pFriendsListAdd,2);
+ packet(0x0929,clif->pActionRequest,2,6);
+ packet(0x0930,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0938,clif->pReqCloseBuyingStore,0);
+ packet(0x093a,clif->pMoveToKafra,2,4);
+ packet(0x093f,clif->pPartyInvite2,2);
+ packet(0x094a,clif->pReqClickBuyingStore,2);
+ packet(0x094b,clif->pChangeDir,2,4);
+ packet(0x095f,clif->pGetCharNameRequest,2);
+ packet(0x0963,clif->pUseSkillToId,2,4,6);
+ packet(0x0964,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0966,clif->pReqTradeBuyingStore,2,4,8,12);
#endif
// 2014-06-05aRagexeRE
#if PACKETVER == 20140605
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0369,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0921,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0931,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0940,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x094c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pReqCloseBuyingStore,0);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pActionRequest,2,6);
+ packet(0x0369,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pChangeDir,2,4);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0921,clif->pStoragePassword,0);
+ packet(0x0931,clif->pHomMenu,2,4);
+ packet(0x0940,clif->pSolveCharName,2);
+ packet(0x094c,clif->pFriendsListAdd,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2014-06-11bRagexeRE
#if PACKETVER == 20140611
- packet(0x0364,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0438,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x07e4,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0838,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0864,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0867,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x086c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0874,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0878,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x088c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0891,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0893,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0894,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x089b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x08a1,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x08a2,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0924,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0936,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0941,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x094a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x094f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0950,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0951,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0952,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0957,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0958,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0963,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0965,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0969,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0364,clif->pReqCloseBuyingStore,0);
+ packet(0x0438,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x07e4,clif->pMoveToKafra,2,4);
+ packet(0x0838,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0864,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0867,clif->pTickSend,2);
+ packet(0x086c,clif->pDull/*,XXX*/);
+ packet(0x0874,clif->pPartyInvite2,2);
+ packet(0x0878,clif->pTakeItem,2);
+ packet(0x088c,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0891,clif->pActionRequest,2,6);
+ packet(0x0893,clif->pWalkToXY,2);
+ packet(0x0894,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x089b,clif->pFriendsListAdd,2);
+ packet(0x08a1,clif->pUseSkillToId,2,4,6);
+ packet(0x08a2,clif->pDull/*,XXX*/);
+ packet(0x0924,clif->pGetCharNameRequest,2);
+ packet(0x0936,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0941,clif->pStoragePassword,0);
+ packet(0x094a,clif->pItemListWindowSelected,2,4,8);
+ packet(0x094f,clif->pSolveCharName,2);
+ packet(0x0950,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0951,clif->pChangeDir,2,4);
+ packet(0x0952,clif->pMoveFromKafra,2,4);
+ packet(0x0957,clif->pReqClickBuyingStore,2);
+ packet(0x0958,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0963,clif->pDropItem,2,4);
+ packet(0x0965,clif->pHomMenu,2,4);
+ packet(0x0969,clif->pSearchStoreInfoNextPage,0);
#endif
// 2014-06-18cRagexeRE
#if PACKETVER == 20140618
- packet(0x085d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x085f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0860,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0861,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x086c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0878,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x087d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0884,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0885,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0886,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0890,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0892,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x08a6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x08a7,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x08ac,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0917,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x091f,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0929,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0935,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0938,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0939,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x093b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0945,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0954,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0957,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x095d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x095e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0962,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0967,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x085d,clif->pMoveToKafra,2,4);
+ packet(0x085f,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0860,clif->pTickSend,2);
+ packet(0x0861,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x086c,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0878,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x087d,clif->pSolveCharName,2);
+ packet(0x0884,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0885,clif->pMoveFromKafra,2,4);
+ packet(0x0886,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0890,clif->pChangeDir,2,4);
+ packet(0x0892,clif->pUseSkillToId,2,4,6);
+ packet(0x08a6,clif->pReqClickBuyingStore,2);
+ packet(0x08a7,clif->pWalkToXY,2);
+ packet(0x08ac,clif->pDull/*,XXX*/);
+ packet(0x0917,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x091f,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0929,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0935,clif->pTakeItem,2);
+ packet(0x0938,clif->pPartyInvite2,2);
+ packet(0x0939,clif->pReqCloseBuyingStore,0);
+ packet(0x093b,clif->pActionRequest,2,6);
+ packet(0x0945,clif->pDropItem,2,4);
+ packet(0x0954,clif->pFriendsListAdd,2);
+ packet(0x0957,clif->pStoragePassword,0);
+ packet(0x095d,clif->pGetCharNameRequest,2);
+ packet(0x095e,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0962,clif->pDull/*,XXX*/);
+ packet(0x0967,clif->pHomMenu,2,4);
#endif
// 2014-06-25aRagexeRE
#if PACKETVER == 20140625
- packet(0x0202,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x023b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0815,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0817,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0835,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x085a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0861,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x086b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0875,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x087b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0885,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0886,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0888,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x088a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x088e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0897,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x08a1,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x08a2,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x091a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0923,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0928,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0940,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0946,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x094e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0959,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0960,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0968,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0969,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pMoveToKafra,2,4);
+ packet(0x023b,clif->pMoveFromKafra,2,4);
+ packet(0x0815,clif->pDull/*,XXX*/);
+ packet(0x0817,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0835,clif->pWalkToXY,2);
+ packet(0x085a,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0861,clif->pUseSkillToId,2,4,6);
+ packet(0x086b,clif->pPartyInvite2,2);
+ packet(0x0875,clif->pSolveCharName,2);
+ packet(0x087b,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0885,clif->pDropItem,2,4);
+ packet(0x0886,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0888,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x088a,clif->pItemListWindowSelected,2,4,8);
+ packet(0x088e,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0897,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x08a1,clif->pTickSend,2);
+ packet(0x08a2,clif->pChangeDir,2,4);
+ packet(0x091a,clif->pTakeItem,2);
+ packet(0x0923,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0928,clif->pReqCloseBuyingStore,0);
+ packet(0x0940,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0946,clif->pHomMenu,2,4);
+ packet(0x094e,clif->pDull/*,XXX*/);
+ packet(0x0959,clif->pActionRequest,2,6);
+ packet(0x0960,clif->pStoragePassword,0);
+ packet(0x0968,clif->pReqClickBuyingStore,2);
+ packet(0x0969,clif->pFriendsListAdd,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2014-07-02aRagexeRE
#if PACKETVER == 20140702
- packet(0x022d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x023b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0364,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0438,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x07e4,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0835,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x086c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0887,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0892,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0895,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x08a0,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x08a2,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0925,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x092c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0933,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0940,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x022d,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x023b,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0364,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pFriendsListAdd,2);
+ packet(0x0438,clif->pMoveToKafra,2,4);
+ packet(0x07e4,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pStoragePassword,0);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pHomMenu,2,4);
+ packet(0x0835,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085a,clif->pDropItem,2,4);
+ packet(0x086c,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0887,clif->pWalkToXY,2);
+ packet(0x0892,clif->pMoveFromKafra,2,4);
+ packet(0x0895,clif->pDull/*,XXX*/);
+ packet(0x08a0,clif->pPartyInvite2,2);
+ packet(0x08a2,clif->pTakeItem,2);
+ packet(0x0925,clif->pChangeDir,2,4);
+ packet(0x092c,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0933,clif->pDull/*,XXX*/);
+ packet(0x0940,clif->pSearchStoreInfoNextPage,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2014-07-09aRagexeRE
#if PACKETVER == 20140709
- packet(0x0364,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0860,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0866,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0869,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0875,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0877,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0879,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x087a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0887,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0888,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x088b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0894,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0897,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0898,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x08ad,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x091a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0925,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x092f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0931,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0934,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0939,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x093f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0940,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x094d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x094e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x094f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x095f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0961,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0364,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0437,clif->pActionRequest,2,6);
+ packet(0x0860,clif->pStoragePassword,0);
+ packet(0x0866,clif->pDull/*,XXX*/);
+ packet(0x0869,clif->pChangeDir,2,4);
+ packet(0x0875,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0877,clif->pUseSkillToId,2,4,6);
+ packet(0x0879,clif->pGetCharNameRequest,2);
+ packet(0x087a,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0887,clif->pMoveToKafra,2,4);
+ packet(0x0888,clif->pDull/*,XXX*/);
+ packet(0x088b,clif->pPartyInvite2,2);
+ packet(0x0894,clif->pReqCloseBuyingStore,0);
+ packet(0x0897,clif->pReqClickBuyingStore,2);
+ packet(0x0898,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x08ad,clif->pDropItem,2,4);
+ packet(0x091a,clif->pWalkToXY,2);
+ packet(0x0925,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x092f,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0931,clif->pSolveCharName,2);
+ packet(0x0934,clif->pTickSend,2);
+ packet(0x0939,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x093f,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0940,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x094d,clif->pHomMenu,2,4);
+ packet(0x094e,clif->pMoveFromKafra,2,4);
+ packet(0x094f,clif->pFriendsListAdd,2);
+ packet(0x095f,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0961,clif->pTakeItem,2);
#endif
// 2014-07-16aRagexeRE
#if PACKETVER == 20140716
- packet(0x0362,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x07e4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0811,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x085c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x085f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0868,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0871,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0881,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x088b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x088d,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x088f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0896,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x089a,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x089f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x08a2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x08a4,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x08ac,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0918,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x091f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0926,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x092c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x092f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0938,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x093b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0947,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0952,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0958,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0959,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0969,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0362,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x07e4,clif->pStoragePassword,0);
+ packet(0x0811,clif->pActionRequest,2,6);
+ packet(0x085c,clif->pGetCharNameRequest,2);
+ packet(0x085f,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0868,clif->pPartyInvite2,2);
+ packet(0x0871,clif->pMoveToKafra,2,4);
+ packet(0x0881,clif->pUseSkillToId,2,4,6);
+ packet(0x088b,clif->pSearchStoreInfoNextPage,0);
+ packet(0x088d,clif->pDull/*,XXX*/);
+ packet(0x088f,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0896,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x089a,clif->pSolveCharName,2);
+ packet(0x089f,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x08a2,clif->pReqCloseBuyingStore,0);
+ packet(0x08a4,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x08ac,clif->pHomMenu,2,4);
+ packet(0x0918,clif->pWalkToXY,2);
+ packet(0x091f,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0926,clif->pDropItem,2,4);
+ packet(0x092c,clif->pFriendsListAdd,2);
+ packet(0x092f,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0938,clif->pMoveFromKafra,2,4);
+ packet(0x093b,clif->pReqClickBuyingStore,2);
+ packet(0x0947,clif->pDull/*,XXX*/);
+ packet(0x0952,clif->pChangeDir,2,4);
+ packet(0x0958,clif->pTakeItem,2);
+ packet(0x0959,clif->pTickSend,2);
+ packet(0x0969,clif->pItemListWindowSelected,2,4,8);
#endif
// 2014-07-23aRagexeRE, 2014-07-23bRagexeRE
#if PACKETVER == 20140723
- packet(0x02c4,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0364,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0368,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0436,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0819,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0838,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x085f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0869,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x086d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x087d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0888,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0891,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0896,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0898,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x089e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x08a2,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x08ad,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0927,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x092f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0934,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0935,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0939,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x093d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0945,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0947,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0948,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x095f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0960,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x02c4,clif->pTickSend,2);
+ packet(0x0364,clif->pStoragePassword,0);
+ packet(0x0368,clif->pGetCharNameRequest,2);
+ packet(0x0436,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0819,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0838,clif->pUseSkillToId,2,4,6);
+ packet(0x085a,clif->pSearchStoreInfoNextPage,0);
+ packet(0x085f,clif->pWalkToXY,2);
+ packet(0x0869,clif->pMoveToKafra,2,4);
+ packet(0x086d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x087d,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0888,clif->pReqClickBuyingStore,2);
+ packet(0x0891,clif->pReqCloseBuyingStore,0);
+ packet(0x0896,clif->pDropItem,2,4);
+ packet(0x0898,clif->pDull/*,XXX*/);
+ packet(0x089e,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x08a2,clif->pMoveFromKafra,2,4);
+ packet(0x08ad,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0927,clif->pSolveCharName,2);
+ packet(0x092f,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0934,clif->pFriendsListAdd,2);
+ packet(0x0935,clif->pPartyInvite2,2);
+ packet(0x0939,clif->pItemListWindowSelected,2,4,8);
+ packet(0x093d,clif->pTakeItem,2);
+ packet(0x0945,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0947,clif->pActionRequest,2,6);
+ packet(0x0948,clif->pHomMenu,2,4);
+ packet(0x095f,clif->pDull/*,XXX*/);
+ packet(0x0960,clif->pChangeDir,2,4);
#endif
// 2014-07-30bRagexeRE
#if PACKETVER == 20140730
- packet(0x022d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0364,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0366,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0367,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0437,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x07ec,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0802,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0815,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0817,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x085e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x085f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x087d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x087e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x087f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0889,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x088b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x088d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0892,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08a0,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x08a6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x08a7,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x08a9,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x08ad,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x091e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0924,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x092a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0934,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0940,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0946,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x022d,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0364,clif->pGetCharNameRequest,2);
+ packet(0x0366,clif->pUseSkillToId,2,4,6);
+ packet(0x0367,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0437,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x07ec,clif->pDull/*,XXX*/);
+ packet(0x0802,clif->pDull/*,XXX*/);
+ packet(0x0815,clif->pFriendsListAdd,2);
+ packet(0x0817,clif->pActionRequest,2,6);
+ packet(0x085e,clif->pWalkToXY,2);
+ packet(0x085f,clif->pReqCloseBuyingStore,0);
+ packet(0x087d,clif->pMoveFromKafra,2,4);
+ packet(0x087e,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x087f,clif->pDropItem,2,4);
+ packet(0x0889,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x088b,clif->pTickSend,2);
+ packet(0x088d,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0892,clif->pMoveToKafra,2,4);
+ packet(0x08a0,clif->pItemListWindowSelected,2,4,8);
+ packet(0x08a6,clif->pReqClickBuyingStore,2);
+ packet(0x08a7,clif->pSolveCharName,2);
+ packet(0x08a9,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x08ad,clif->pStoragePassword,0);
+ packet(0x091e,clif->pPartyInvite2,2);
+ packet(0x0924,clif->pSearchStoreInfoNextPage,0);
+ packet(0x092a,clif->pTakeItem,2);
+ packet(0x0934,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0940,clif->pChangeDir,2,4);
+ packet(0x0946,clif->pHomMenu,2,4);
#endif
// 2014-08-06aRagexeRE
#if PACKETVER == 20140806
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0948,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0948,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2014-08-13aRagexeRE
#if PACKETVER == 20140813
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0365,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0802,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0868,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0878,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x087c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0882,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0895,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0897,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0899,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x08a3,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08a7,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x08ab,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0967,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0365,clif->pStoragePassword,0);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0802,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0868,clif->pHomMenu,2,4);
+ packet(0x0878,clif->pChangeDir,2,4);
+ packet(0x087c,clif->pPartyInvite2,2);
+ packet(0x0882,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0895,clif->pMoveFromKafra,2,4);
+ packet(0x0897,clif->pFriendsListAdd,2);
+ packet(0x0899,clif->pDropItem,2,4);
+ packet(0x08a3,clif->pTakeItem,2);
+ packet(0x08a7,clif->pDull/*,XXX*/);
+ packet(0x08ab,clif->pDull/*,XXX*/);
+ packet(0x0967,clif->pMoveToKafra,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2014-08-20aRagexeRE
#if PACKETVER == 20140820
- packet(0x035f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0835,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0861,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0864,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0869,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x086c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x086e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0872,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0876,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0891,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0899,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x089a,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x089b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x08a3,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x08a7,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x091d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x092f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0936,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0937,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x093a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x093e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x094a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0951,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0952,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0956,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0958,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0961,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x035f,clif->pReqCloseBuyingStore,0);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0835,clif->pChangeDir,2,4);
+ packet(0x0861,clif->pTickSend,2);
+ packet(0x0864,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0869,clif->pDull/*,XXX*/);
+ packet(0x086c,clif->pItemListWindowSelected,2,4,8);
+ packet(0x086e,clif->pPartyInvite2,2);
+ packet(0x0872,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0876,clif->pDropItem,2,4);
+ packet(0x0891,clif->pGetCharNameRequest,2);
+ packet(0x0899,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x089a,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x089b,clif->pMoveFromKafra,2,4);
+ packet(0x08a3,clif->pWalkToXY,2);
+ packet(0x08a7,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x091d,clif->pSolveCharName,2);
+ packet(0x092f,clif->pUseSkillToId,2,4,6);
+ packet(0x0936,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0937,clif->pHomMenu,2,4);
+ packet(0x093a,clif->pStoragePassword,0);
+ packet(0x093e,clif->pReqClickBuyingStore,2);
+ packet(0x094a,clif->pFriendsListAdd,2);
+ packet(0x0951,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0952,clif->pActionRequest,2,6);
+ packet(0x0956,clif->pMoveToKafra,2,4);
+ packet(0x0958,clif->pDull/*,XXX*/);
+ packet(0x0961,clif->pPartyBookingRegisterReq,2,4);
#endif
// 2014-08-27aRagexeRE
#if PACKETVER == 20140827
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0943,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0943,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2014-09-03aRagexeRE
#if PACKETVER == 20140903
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x088f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x089b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0931,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0941,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0943,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0945,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x088f,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x089b,clif->pFriendsListAdd,2);
+ packet(0x0931,clif->pHomMenu,2,4);
+ packet(0x0941,clif->pStoragePassword,0);
+ packet(0x0943,clif->pDull/*,XXX*/);
+ packet(0x0945,clif->pChangeDir,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2014-09-17cRagexeRE
#if PACKETVER == 20140917
- packet(0x022d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0364,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0365,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0366,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0367,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0838,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0864,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x086d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0889,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0895,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0897,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0898,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x089c,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x08a8,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0919,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x091e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x092a,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0930,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0949,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x094f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0951,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0955,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0956,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0957,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x095a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x095c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x095e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0966,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x022d,clif->pPartyInvite2,2);
+ packet(0x0364,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0365,clif->pMoveToKafra,2,4);
+ packet(0x0366,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0367,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0369,clif->pSolveCharName,2);
+ packet(0x0838,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0864,clif->pTakeItem,2);
+ packet(0x086d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0889,clif->pActionRequest,2,6);
+ packet(0x0895,clif->pHomMenu,2,4);
+ packet(0x0897,clif->pTickSend,2);
+ packet(0x0898,clif->pGetCharNameRequest,2);
+ packet(0x089c,clif->pReqClickBuyingStore,2);
+ packet(0x08a8,clif->pStoragePassword,0);
+ packet(0x0919,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x091e,clif->pReqCloseBuyingStore,0);
+ packet(0x092a,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0930,clif->pMoveFromKafra,2,4);
+ packet(0x0949,clif->pUseSkillToId,2,4,6);
+ packet(0x094f,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0951,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0955,clif->pFriendsListAdd,2);
+ packet(0x0956,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0957,clif->pDull/*,XXX*/);
+ packet(0x095a,clif->pDropItem,2,4);
+ packet(0x095c,clif->pWalkToXY,2);
+ packet(0x095e,clif->pChangeDir,2,4);
+ packet(0x0966,clif->pDull/*,XXX*/);
#endif
// 2014-09-24bRagexeRE, 2014-09-24cRagexeRE
#if PACKETVER == 20140924
- packet(0x0366,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0367,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x07e4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0815,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0862,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0864,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0865,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0867,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x086b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x086d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x086e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0886,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x088b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0894,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0898,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x089c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08a5,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x08a7,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0918,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x091b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0925,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0926,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0928,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x092b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x092d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0934,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0949,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0952,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0366,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0367,clif->pPartyInvite2,2);
+ packet(0x07e4,clif->pStoragePassword,0);
+ packet(0x0802,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0815,clif->pWalkToXY,2);
+ packet(0x0862,clif->pDull/*,XXX*/);
+ packet(0x0864,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0865,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0867,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x086b,clif->pReqCloseBuyingStore,0);
+ packet(0x086d,clif->pTakeItem,2);
+ packet(0x086e,clif->pHomMenu,2,4);
+ packet(0x0886,clif->pGetCharNameRequest,2);
+ packet(0x088b,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0894,clif->pActionRequest,2,6);
+ packet(0x0898,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x089c,clif->pMoveToKafra,2,4);
+ packet(0x08a5,clif->pSolveCharName,2);
+ packet(0x08a7,clif->pUseSkillToId,2,4,6);
+ packet(0x0918,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x091b,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0925,clif->pDull/*,XXX*/);
+ packet(0x0926,clif->pTickSend,2);
+ packet(0x0928,clif->pMoveFromKafra,2,4);
+ packet(0x092b,clif->pReqClickBuyingStore,2);
+ packet(0x092d,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0934,clif->pChangeDir,2,4);
+ packet(0x0949,clif->pDropItem,2,4);
+ packet(0x0952,clif->pFriendsListAdd,2);
#endif
// 2014-10-01bRagexeRE, 2014-10-01cRagexeRE
#if PACKETVER == 20141001
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0365,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x087c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0884,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0885,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x089c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x089d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x08ad,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x091c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x092a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0937,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0939,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x093f,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x094b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0952,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pDropItem,2,4);
+ packet(0x0365,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pMoveFromKafra,2,4);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x087c,clif->pMoveToKafra,2,4);
+ packet(0x0884,clif->pPartyInvite2,2);
+ packet(0x0885,clif->pGetCharNameRequest,2);
+ packet(0x089c,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x089d,clif->pFriendsListAdd,2);
+ packet(0x08ad,clif->pChangeDir,2,4);
+ packet(0x091c,clif->pDull/*,XXX*/);
+ packet(0x092a,clif->pStoragePassword,0);
+ packet(0x0937,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0939,clif->pDull/*,XXX*/);
+ packet(0x093f,clif->pTakeItem,2);
+ packet(0x094b,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0952,clif->pHomMenu,2,4);
#endif
// 2014-10-08bRagexeRE, 2014-10-08cRagexeRE
#if PACKETVER == 20141008
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0942,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0942,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2014-10-15bRagexeRE, 2014-10-16aRagexeRE
#if PACKETVER == 20141015 || \
PACKETVER == 20141016
- packet(0x022d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x086e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0922,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0936,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x094b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0967,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x022d,clif->pMoveFromKafra,2,4);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pHomMenu,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x086e,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0922,clif->pDull/*,XXX*/);
+ packet(0x0936,clif->pStoragePassword,0);
+ packet(0x094b,clif->pFriendsListAdd,2);
+ packet(0x0967,clif->pChangeDir,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2014-10-22aRagexeRE
#if PACKETVER == 20141022
- packet(0x023b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0878,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x087d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0896,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0899,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x08aa,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x08ab,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x08ad,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x091a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x092b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x093b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0940,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x094e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0955,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x023b,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pStoragePassword,0);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0878,clif->pMoveToKafra,2,4);
+ packet(0x087d,clif->pDropItem,2,4);
+ packet(0x0896,clif->pPartyInvite2,2);
+ packet(0x0899,clif->pHomMenu,2,4);
+ packet(0x08aa,clif->pMoveFromKafra,2,4);
+ packet(0x08ab,clif->pDull/*,XXX*/);
+ packet(0x08ad,clif->pChangeDir,2,4);
+ packet(0x091a,clif->pFriendsListAdd,2);
+ packet(0x092b,clif->pDull/*,XXX*/);
+ packet(0x093b,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0940,clif->pSearchStoreInfoNextPage,0);
+ packet(0x094e,clif->pTakeItem,2);
+ packet(0x0955,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2014-10-29aRagexeRE
#if PACKETVER == 20141029
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0940,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pWalkToXY,2);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pStoragePassword,0);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0940,clif->pActionRequest,2,6);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2014-11-05aRagexeRE, 2014-11-05bRagexeRE
#if PACKETVER == 20141105
- packet(0x022d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x035f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0360,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x085c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0863,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0864,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0865,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0871,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0874,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0875,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0877,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0879,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0887,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0892,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0898,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x08a0,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x08a5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08a7,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x08ad,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x091d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x091e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x092b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x093e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0944,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0948,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0950,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0957,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x095f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0968,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x022d,clif->pDull/*,XXX*/);
+ packet(0x035f,clif->pUseSkillToId,2,4,6);
+ packet(0x0360,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x085c,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0863,clif->pGetCharNameRequest,2);
+ packet(0x0864,clif->pTickSend,2);
+ packet(0x0865,clif->pFriendsListAdd,2);
+ packet(0x0871,clif->pStoragePassword,0);
+ packet(0x0874,clif->pDull/*,XXX*/);
+ packet(0x0875,clif->pActionRequest,2,6);
+ packet(0x0877,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0879,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0887,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0892,clif->pDropItem,2,4);
+ packet(0x0898,clif->pMoveFromKafra,2,4);
+ packet(0x08a0,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x08a5,clif->pChangeDir,2,4);
+ packet(0x08a7,clif->pReqCloseBuyingStore,0);
+ packet(0x08ad,clif->pMoveToKafra,2,4);
+ packet(0x091d,clif->pSolveCharName,2);
+ packet(0x091e,clif->pReqClickBuyingStore,2);
+ packet(0x092b,clif->pTakeItem,2);
+ packet(0x093e,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0944,clif->pHomMenu,2,4);
+ packet(0x0948,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0950,clif->pPartyInvite2,2);
+ packet(0x0957,clif->pWalkToXY,2);
+ packet(0x095f,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0968,clif->pPartyBookingRegisterReq,2,4);
#endif
// 2014-11-12aRagexeRE
#if PACKETVER == 20141112
- packet(0x0362,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0438,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x07e4,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0835,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0838,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x083c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x085f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0863,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0869,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x086c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0871,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0885,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0886,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0887,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x088d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x08a0,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x08a1,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x08ab,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0919,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0926,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0929,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0943,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x094b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x094c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x094f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0955,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x095d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0960,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0962,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0362,clif->pFriendsListAdd,2);
+ packet(0x0438,clif->pSolveCharName,2);
+ packet(0x07e4,clif->pReqCloseBuyingStore,0);
+ packet(0x0835,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0838,clif->pSearchStoreInfoNextPage,0);
+ packet(0x083c,clif->pMoveToKafra,2,4);
+ packet(0x085f,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0863,clif->pUseSkillToId,2,4,6);
+ packet(0x0869,clif->pGetCharNameRequest,2);
+ packet(0x086c,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0871,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0885,clif->pChangeDir,2,4);
+ packet(0x0886,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0887,clif->pPartyInvite2,2);
+ packet(0x088d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x08a0,clif->pWalkToXY,2);
+ packet(0x08a1,clif->pReqClickBuyingStore,2);
+ packet(0x08ab,clif->pStoragePassword,0);
+ packet(0x0919,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0926,clif->pHomMenu,2,4);
+ packet(0x0929,clif->pActionRequest,2,6);
+ packet(0x0943,clif->pDropItem,2,4);
+ packet(0x094b,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x094c,clif->pDull/*,XXX*/);
+ packet(0x094f,clif->pDull/*,XXX*/);
+ packet(0x0955,clif->pMoveFromKafra,2,4);
+ packet(0x095d,clif->pTickSend,2);
+ packet(0x0960,clif->pTakeItem,2);
+ packet(0x0962,clif->pUseSkillToPos,2,4,6,8);
#endif
// 2014-11-19bRagexeRE
#if PACKETVER == 20141119
- packet(0x0202,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x085a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0861,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0865,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0866,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0872,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0873,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0875,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x087c,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0885,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0887,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0888,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x088d,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0895,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x08a8,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08aa,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0918,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0920,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0921,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0929,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x092f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0933,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0938,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0940,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0941,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0942,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0948,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x094c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0963,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0202,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x085a,clif->pReqClickBuyingStore,2);
+ packet(0x0861,clif->pFriendsListAdd,2);
+ packet(0x0865,clif->pPartyInvite2,2);
+ packet(0x0866,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0872,clif->pActionRequest,2,6);
+ packet(0x0873,clif->pUseSkillToId,2,4,6);
+ packet(0x0875,clif->pGetCharNameRequest,2);
+ packet(0x087c,clif->pSolveCharName,2);
+ packet(0x0885,clif->pDull/*,XXX*/);
+ packet(0x0887,clif->pReqCloseBuyingStore,0);
+ packet(0x0888,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x088d,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0895,clif->pItemListWindowSelected,2,4,8);
+ packet(0x08a8,clif->pTakeItem,2);
+ packet(0x08aa,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0918,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0920,clif->pChangeDir,2,4);
+ packet(0x0921,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0929,clif->pMoveFromKafra,2,4);
+ packet(0x092f,clif->pDull/*,XXX*/);
+ packet(0x0933,clif->pStoragePassword,0);
+ packet(0x0938,clif->pTickSend,2);
+ packet(0x0940,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0941,clif->pMoveToKafra,2,4);
+ packet(0x0942,clif->pHomMenu,2,4);
+ packet(0x0948,clif->pWalkToXY,2);
+ packet(0x094c,clif->pDropItem,2,4);
+ packet(0x0963,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
#endif
// 2014-11-26aRagexeRE, 2014-11-26bRagexeRE, 2014-11-26cRagexeRE, 2014-11-26dRagexeRE, 2014-11-26eRagexeRE
#if PACKETVER == 20141126
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0367,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0802,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x086e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0871,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0884,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0896,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x08a4,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08ad,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0920,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0942,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x095a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x095b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x095f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0965,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0367,clif->pDull/*,XXX*/);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0802,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x086e,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0871,clif->pMoveFromKafra,2,4);
+ packet(0x0884,clif->pDull/*,XXX*/);
+ packet(0x0896,clif->pItemListWindowSelected,2,4,8);
+ packet(0x08a4,clif->pChangeDir,2,4);
+ packet(0x08ad,clif->pStoragePassword,0);
+ packet(0x0920,clif->pDropItem,2,4);
+ packet(0x0942,clif->pFriendsListAdd,2);
+ packet(0x095a,clif->pTakeItem,2);
+ packet(0x095b,clif->pHomMenu,2,4);
+ packet(0x095f,clif->pMoveToKafra,2,4);
+ packet(0x0965,clif->pPartyInvite2,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2014-12-03aRagexeRE
#if PACKETVER == 20141203
- packet(0x0202,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0281,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0362,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0367,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0368,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0802,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0861,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x086c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x086d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x086e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x087b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x087e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0880,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0889,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0898,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x089c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x089d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x08a5,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x08aa,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0917,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x091c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x091d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0928,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x092a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0936,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0957,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x095c,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0962,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0202,clif->pSolveCharName,2);
+ packet(0x0281,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0362,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0367,clif->pGetCharNameRequest,2);
+ packet(0x0368,clif->pDull/*,XXX*/);
+ packet(0x0802,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0861,clif->pMoveToKafra,2,4);
+ packet(0x086c,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x086d,clif->pMoveFromKafra,2,4);
+ packet(0x086e,clif->pTakeItem,2);
+ packet(0x087b,clif->pWalkToXY,2);
+ packet(0x087e,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0880,clif->pChangeDir,2,4);
+ packet(0x0889,clif->pFriendsListAdd,2);
+ packet(0x0898,clif->pStoragePassword,0);
+ packet(0x089c,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x089d,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x08a5,clif->pActionRequest,2,6);
+ packet(0x08aa,clif->pDropItem,2,4);
+ packet(0x0917,clif->pSearchStoreInfoNextPage,0);
+ packet(0x091c,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x091d,clif->pPartyInvite2,2);
+ packet(0x0928,clif->pTickSend,2);
+ packet(0x092a,clif->pDull/*,XXX*/);
+ packet(0x0936,clif->pHomMenu,2,4);
+ packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0957,clif->pReqCloseBuyingStore,0);
+ packet(0x095c,clif->pReqClickBuyingStore,2);
+ packet(0x0962,clif->pUseSkillToId,2,4,6);
#endif
// 2014-12-10cRagexeRE
#if PACKETVER == 20141210
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x087b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0885,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x08ac,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0917,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0927,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x092b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0947,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0954,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0955,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0958,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0961,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0963,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0967,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pHomMenu,2,4);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pChangeDir,2,4);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x087b,clif->pTakeItem,2);
+ packet(0x0885,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x08ac,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0917,clif->pPartyInvite2,2);
+ packet(0x0927,clif->pDull/*,XXX*/);
+ packet(0x092b,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0947,clif->pDull/*,XXX*/);
+ packet(0x0954,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0955,clif->pMoveFromKafra,2,4);
+ packet(0x0958,clif->pDropItem,2,4);
+ packet(0x0961,clif->pFriendsListAdd,2);
+ packet(0x0963,clif->pStoragePassword,0);
+ packet(0x0967,clif->pMoveToKafra,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2014-12-17aRagexeRE
#if PACKETVER == 20141217
- packet(0x0360,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x085b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0860,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x086c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0875,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0878,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0879,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0883,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0889,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x088e,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x089f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x08a1,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x08a2,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x08a8,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x08ab,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x08ac,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0919,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x091f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0924,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0930,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0932,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0933,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0936,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0939,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0940,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0944,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0945,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0948,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0960,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0360,clif->pMoveToKafra,2,4);
+ packet(0x085b,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0860,clif->pStoragePassword,0);
+ packet(0x086c,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0875,clif->pMoveFromKafra,2,4);
+ packet(0x0878,clif->pWalkToXY,2);
+ packet(0x0879,clif->pHomMenu,2,4);
+ packet(0x0883,clif->pTakeItem,2);
+ packet(0x0889,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x088e,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x089f,clif->pDropItem,2,4);
+ packet(0x08a1,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x08a2,clif->pDull/*,XXX*/);
+ packet(0x08a8,clif->pPartyInvite2,2);
+ packet(0x08ab,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x08ac,clif->pTickSend,2);
+ packet(0x0919,clif->pChangeDir,2,4);
+ packet(0x091f,clif->pUseSkillToId,2,4,6);
+ packet(0x0924,clif->pActionRequest,2,6);
+ packet(0x0930,clif->pReqCloseBuyingStore,0);
+ packet(0x0932,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0933,clif->pFriendsListAdd,2);
+ packet(0x0936,clif->pGetCharNameRequest,2);
+ packet(0x0939,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0940,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0944,clif->pReqClickBuyingStore,2);
+ packet(0x0945,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0948,clif->pSolveCharName,2);
+ packet(0x0960,clif->pDull/*,XXX*/);
#endif
// 2014-12-23cRagexeRE
#if PACKETVER == 20141223
- packet(0x0361,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0438,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0835,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x085a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x085e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0865,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0867,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x086c,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0870,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x087a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x087b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x089a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x089b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x08a3,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x08a4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08a8,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x08ac,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0930,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0932,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x093a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0945,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0946,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0949,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x094f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0950,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0953,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0956,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x095b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x095f,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0361,clif->pMoveToKafra,2,4);
+ packet(0x0438,clif->pFriendsListAdd,2);
+ packet(0x0835,clif->pItemListWindowSelected,2,4,8);
+ packet(0x085a,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x085e,clif->pReqCloseBuyingStore,0);
+ packet(0x0865,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0867,clif->pHomMenu,2,4);
+ packet(0x086c,clif->pReqClickBuyingStore,2);
+ packet(0x0870,clif->pChangeDir,2,4);
+ packet(0x087a,clif->pTakeItem,2);
+ packet(0x087b,clif->pDull/*,XXX*/);
+ packet(0x089a,clif->pWalkToXY,2);
+ packet(0x089b,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x08a3,clif->pPartyInvite2,2);
+ packet(0x08a4,clif->pStoragePassword,0);
+ packet(0x08a8,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x08ac,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0930,clif->pDropItem,2,4);
+ packet(0x0932,clif->pDull/*,XXX*/);
+ packet(0x093a,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0945,clif->pTickSend,2);
+ packet(0x0946,clif->pGetCharNameRequest,2);
+ packet(0x0949,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x094f,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0950,clif->pSolveCharName,2);
+ packet(0x0953,clif->pMoveFromKafra,2,4);
+ packet(0x0956,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x095b,clif->pUseSkillToId,2,4,6);
+ packet(0x095f,clif->pActionRequest,2,6);
#endif
// 2014-12-31aRagexeRE
#if PACKETVER == 20141231
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x086d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x086d,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-01-07aRagexeRE
#if PACKETVER == 20150107
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x087c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0895,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x092d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0943,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0947,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x087c,clif->pFriendsListAdd,2);
+ packet(0x0895,clif->pStoragePassword,0);
+ packet(0x092d,clif->pHomMenu,2,4);
+ packet(0x0943,clif->pChangeDir,2,4);
+ packet(0x0947,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-01-14aRagexeRE
#if PACKETVER == 20150114
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0868,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0899,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0946,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0955,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0957,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pUseSkillToId,2,4,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0868,clif->pFriendsListAdd,2);
+ packet(0x0899,clif->pHomMenu,2,4);
+ packet(0x0946,clif->pStoragePassword,0);
+ packet(0x0955,clif->pDull/*,XXX*/);
+ packet(0x0957,clif->pChangeDir,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-01-21aRagexeRE, 2015-01-21bRagexeRE
#if PACKETVER == 20150121
- packet(0x0281,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x087c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x088b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x089d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x089e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08ab,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0918,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0919,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x091d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0955,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0959,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0963,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0967,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0281,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x087c,clif->pDull/*,XXX*/);
+ packet(0x088b,clif->pFriendsListAdd,2);
+ packet(0x089d,clif->pHomMenu,2,4);
+ packet(0x089e,clif->pChangeDir,2,4);
+ packet(0x08ab,clif->pStoragePassword,0);
+ packet(0x0918,clif->pDull/*,XXX*/);
+ packet(0x0919,clif->pDropItem,2,4);
+ packet(0x091d,clif->pTakeItem,2);
+ packet(0x0955,clif->pMoveToKafra,2,4);
+ packet(0x0959,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0963,clif->pMoveFromKafra,2,4);
+ packet(0x0967,clif->pPartyInvite2,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-01-28aRagexeRE
#if PACKETVER == 20150128
- packet(0x0202,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x023b,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x035f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0365,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0368,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0838,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x085a,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0864,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x086d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0870,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0874,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0875,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0876,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x087d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0888,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x089a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x08ab,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x091f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0927,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0929,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x092d,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0938,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x093a,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0944,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x094d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x094e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0963,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0968,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0202,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x023b,clif->pChangeDir,2,4);
+ packet(0x035f,clif->pReqClickBuyingStore,2);
+ packet(0x0365,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0368,clif->pDull/*,XXX*/);
+ packet(0x0838,clif->pActionRequest,2,6);
+ packet(0x085a,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0864,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x086d,clif->pMoveToKafra,2,4);
+ packet(0x0870,clif->pWalkToXY,2);
+ packet(0x0874,clif->pGetCharNameRequest,2);
+ packet(0x0875,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0876,clif->pHomMenu,2,4);
+ packet(0x087d,clif->pSolveCharName,2);
+ packet(0x0888,clif->pItemListWindowSelected,2,4,8);
+ packet(0x089a,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x08ab,clif->pTakeItem,2);
+ packet(0x091f,clif->pTickSend,2);
+ packet(0x0927,clif->pPartyInvite2,2);
+ packet(0x0929,clif->pStoragePassword,0);
+ packet(0x092d,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0938,clif->pDull/*,XXX*/);
+ packet(0x093a,clif->pUseSkillToId,2,4,6);
+ packet(0x0944,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x094d,clif->pReqCloseBuyingStore,0);
+ packet(0x094e,clif->pMoveFromKafra,2,4);
+ packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0963,clif->pFriendsListAdd,2);
+ packet(0x0968,clif->pDropItem,2,4);
#endif
// 2015-02-04cRagexeRE
#if PACKETVER == 20150204
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0966,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0966,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-02-11aRagexeRE
#if PACKETVER == 20150211
- packet(0x023b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0368,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0369,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0436,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0437,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x07e4,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0817,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0819,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0835,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0862,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0863,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0870,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0873,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x087b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x087f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0882,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0883,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0885,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0886,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x089c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x08a0,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x08a4,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x08aa,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0919,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0920,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0944,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0951,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0957,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0958,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x023b,clif->pDull/*,XXX*/);
+ packet(0x0368,clif->pHomMenu,2,4);
+ packet(0x0369,clif->pChangeDir,2,4);
+ packet(0x0436,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0437,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x07e4,clif->pDropItem,2,4);
+ packet(0x0817,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0819,clif->pReqCloseBuyingStore,0);
+ packet(0x0835,clif->pDull/*,XXX*/);
+ packet(0x0862,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0863,clif->pUseSkillToId,2,4,6);
+ packet(0x0870,clif->pTakeItem,2);
+ packet(0x0873,clif->pWalkToXY,2);
+ packet(0x087b,clif->pGetCharNameRequest,2);
+ packet(0x087f,clif->pStoragePassword,0);
+ packet(0x0882,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0883,clif->pMoveFromKafra,2,4);
+ packet(0x0885,clif->pTickSend,2);
+ packet(0x0886,clif->pReqClickBuyingStore,2);
+ packet(0x089c,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x08a0,clif->pFriendsListAdd,2);
+ packet(0x08a4,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x08aa,clif->pActionRequest,2,6);
+ packet(0x0919,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0920,clif->pSolveCharName,2);
+ packet(0x0944,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0951,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0957,clif->pPartyInvite2,2);
+ packet(0x0958,clif->pMoveToKafra,2,4);
#endif
// 2015-02-17aRagexeRE
#if PACKETVER == 20150217
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085b,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-02-25aRagexeRE, 2015-02-25bRagexeRE, 2015-02-25cRagexeRE, 2015-02-25dRagexeRE, 2015-02-25eRagexeRE, 2015-02-26aRagexeRE
#if PACKETVER == 20150225 || \
PACKETVER == 20150226
- packet(0x02c4,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0362,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0819,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0867,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0885,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0896,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x089b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x089c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08a4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0940,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0946,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0948,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x094f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0952,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0955,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x096a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x02c4,clif->pReqClickBuyingStore,2);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pPartyInvite2,2);
+ packet(0x0362,clif->pReqCloseBuyingStore,0);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pGetCharNameRequest,2);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pTakeItem,2);
+ packet(0x0819,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0867,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0885,clif->pDull/*,XXX*/);
+ packet(0x0896,clif->pItemListWindowSelected,2,4,8);
+ packet(0x089b,clif->pDull/*,XXX*/);
+ packet(0x089c,clif->pMoveToKafra,2,4);
+ packet(0x08a4,clif->pStoragePassword,0);
+ packet(0x0940,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0946,clif->pFriendsListAdd,2);
+ packet(0x0948,clif->pDropItem,2,4);
+ packet(0x094f,clif->pHomMenu,2,4);
+ packet(0x0952,clif->pMoveFromKafra,2,4);
+ packet(0x0955,clif->pChangeDir,2,4);
+ packet(0x096a,clif->pWantToConnection,2,6,10,14,18);
#endif
// 2015-03-04aRagexeRE, 2015-03-04bRagexeRE
#if PACKETVER == 20150304
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0802,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0862,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x086d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0879,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x087e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0892,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x089a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x093a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0947,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x095d,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0960,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0961,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pTakeItem,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0802,clif->pDull/*,XXX*/);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0862,clif->pMoveFromKafra,2,4);
+ packet(0x086d,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0879,clif->pChangeDir,2,4);
+ packet(0x087e,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0892,clif->pStoragePassword,0);
+ packet(0x089a,clif->pPartyInvite2,2);
+ packet(0x093a,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0947,clif->pMoveToKafra,2,4);
+ packet(0x095d,clif->pDull/*,XXX*/);
+ packet(0x0960,clif->pFriendsListAdd,2);
+ packet(0x0961,clif->pHomMenu,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-03-11aRagexeRE, 2015-03-11bRagexeRE
#if PACKETVER == 20150311
- packet(0x023b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0360,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0436,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0438,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0838,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x086a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x086c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x087b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0883,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0886,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0888,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0896,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x08a1,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x08a3,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08a5,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x08a6,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x091c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0928,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x092a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x092e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x093b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0943,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0946,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0957,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0958,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x095b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0963,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0964,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x023b,clif->pHomMenu,2,4);
+ packet(0x0360,clif->pReqCloseBuyingStore,0);
+ packet(0x0436,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0438,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0838,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x086a,clif->pGetCharNameRequest,2);
+ packet(0x086c,clif->pStoragePassword,0);
+ packet(0x087b,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0883,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0886,clif->pWalkToXY,2);
+ packet(0x0888,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0896,clif->pActionRequest,2,6);
+ packet(0x08a1,clif->pUseSkillToId,2,4,6);
+ packet(0x08a3,clif->pTakeItem,2);
+ packet(0x08a5,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x08a6,clif->pFriendsListAdd,2);
+ packet(0x091c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0928,clif->pChangeDir,2,4);
+ packet(0x092a,clif->pDull/*,XXX*/);
+ packet(0x092e,clif->pMoveFromKafra,2,4);
+ packet(0x093b,clif->pPartyInvite2,2);
+ packet(0x0943,clif->pSolveCharName,2);
+ packet(0x0946,clif->pDull/*,XXX*/);
+ packet(0x0957,clif->pReqClickBuyingStore,2);
+ packet(0x0958,clif->pTickSend,2);
+ packet(0x095b,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0963,clif->pDropItem,2,4);
+ packet(0x0964,clif->pMoveToKafra,2,4);
#endif
// 2015-03-18aRagexeRE, 2015-03-18bRagexeRE, 2015-03-18cRagexeRE
#if PACKETVER == 20150318
- packet(0x0202,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x023b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0281,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x07e4,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0802,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0811,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0862,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0863,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0873,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0885,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0889,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x088c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x089c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08a4,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x091d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0920,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0927,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0928,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0936,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0937,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0938,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x093a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x093c,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x094c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0951,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0958,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0959,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0960,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0202,clif->pDull/*,XXX*/);
+ packet(0x023b,clif->pTickSend,2);
+ packet(0x0281,clif->pDull/*,XXX*/);
+ packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x07e4,clif->pFriendsListAdd,2);
+ packet(0x0802,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0811,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0862,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0863,clif->pReqClickBuyingStore,2);
+ packet(0x0873,clif->pStoragePassword,0);
+ packet(0x0885,clif->pReqCloseBuyingStore,0);
+ packet(0x0889,clif->pActionRequest,2,6);
+ packet(0x088c,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x089c,clif->pMoveToKafra,2,4);
+ packet(0x08a4,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x091d,clif->pMoveFromKafra,2,4);
+ packet(0x0920,clif->pDropItem,2,4);
+ packet(0x0927,clif->pChangeDir,2,4);
+ packet(0x0928,clif->pTakeItem,2);
+ packet(0x0936,clif->pUseSkillToId,2,4,6);
+ packet(0x0937,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0938,clif->pPartyInvite2,2);
+ packet(0x093a,clif->pWalkToXY,2);
+ packet(0x093c,clif->pSolveCharName,2);
+ packet(0x094c,clif->pHomMenu,2,4);
+ packet(0x0951,clif->pGetCharNameRequest,2);
+ packet(0x0958,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0959,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0960,clif->pPartyBookingRegisterReq,2,4);
#endif
// 2015-03-25bRagexeRE, 2015-03-25cRagexeRE
#if PACKETVER == 20150325
- packet(0x0202,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0363,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0365,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0438,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0802,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0819,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x085d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x086f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x087c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x087e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0883,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0885,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0891,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0893,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0897,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0899,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x08a1,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x08a7,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0919,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x092c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0931,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0932,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0938,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0940,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0947,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x094a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0950,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0954,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0969,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0202,clif->pPartyInvite2,2);
+ packet(0x0363,clif->pDropItem,2,4);
+ packet(0x0365,clif->pUseSkillToId,2,4,6);
+ packet(0x0438,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0802,clif->pDull/*,XXX*/);
+ packet(0x0819,clif->pReqClickBuyingStore,2);
+ packet(0x085d,clif->pSolveCharName,2);
+ packet(0x086f,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x087c,clif->pMoveToKafra,2,4);
+ packet(0x087e,clif->pChangeDir,2,4);
+ packet(0x0883,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0885,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0891,clif->pGetCharNameRequest,2);
+ packet(0x0893,clif->pDull/*,XXX*/);
+ packet(0x0897,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0899,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x08a1,clif->pActionRequest,2,6);
+ packet(0x08a7,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0919,clif->pStoragePassword,0);
+ packet(0x092c,clif->pTakeItem,2);
+ packet(0x0931,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0932,clif->pWalkToXY,2);
+ packet(0x0938,clif->pHomMenu,2,4);
+ packet(0x0940,clif->pFriendsListAdd,2);
+ packet(0x0947,clif->pReqCloseBuyingStore,0);
+ packet(0x094a,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0950,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0954,clif->pTickSend,2);
+ packet(0x0969,clif->pMoveFromKafra,2,4);
#endif
// 2015-04-01bRagexeRE
#if PACKETVER == 20150401
- packet(0x0362,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0367,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0437,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x083c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x085e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x086f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0875,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x087e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x088c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x088f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0895,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0898,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x089c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08a5,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x091b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x091c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0922,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0924,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0938,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0939,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x093a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x093b,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x093e,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0946,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0949,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x094b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0953,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x095f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0964,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0362,clif->pActionRequest,2,6);
+ packet(0x0367,clif->pGetCharNameRequest,2);
+ packet(0x0437,clif->pReqClickBuyingStore,2);
+ packet(0x083c,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x085e,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x086f,clif->pWalkToXY,2);
+ packet(0x0875,clif->pItemListWindowSelected,2,4,8);
+ packet(0x087e,clif->pDull/*,XXX*/);
+ packet(0x088c,clif->pDropItem,2,4);
+ packet(0x088f,clif->pTickSend,2);
+ packet(0x0895,clif->pMoveFromKafra,2,4);
+ packet(0x0898,clif->pHomMenu,2,4);
+ packet(0x089c,clif->pStoragePassword,0);
+ packet(0x08a5,clif->pMoveToKafra,2,4);
+ packet(0x091b,clif->pPartyInvite2,2);
+ packet(0x091c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0922,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0924,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0938,clif->pReqCloseBuyingStore,0);
+ packet(0x0939,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x093a,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x093b,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x093e,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0946,clif->pDull/*,XXX*/);
+ packet(0x0949,clif->pTakeItem,2);
+ packet(0x094b,clif->pUseSkillToId,2,4,6);
+ packet(0x0953,clif->pFriendsListAdd,2);
+ packet(0x095f,clif->pSolveCharName,2);
+ packet(0x0964,clif->pChangeDir,2,4);
#endif
// 2015-04-08aRagexeRE
#if PACKETVER == 20150408
- packet(0x0819,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x085a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x085c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0865,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0868,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x086b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x086e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0878,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x087e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x087f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0888,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0889,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0891,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0898,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x089c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x08a2,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x08a4,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x091b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x091e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0922,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x092a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0946,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x094f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0955,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0957,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0959,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x095e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0963,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0819,clif->pMoveFromKafra,2,4);
+ packet(0x085a,clif->pTickSend,2);
+ packet(0x085c,clif->pUseSkillToId,2,4,6);
+ packet(0x085e,clif->pHomMenu,2,4);
+ packet(0x0865,clif->pActionRequest,2,6);
+ packet(0x0868,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x086b,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x086e,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0878,clif->pPartyInvite2,2);
+ packet(0x087e,clif->pGetCharNameRequest,2);
+ packet(0x087f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0888,clif->pMoveToKafra,2,4);
+ packet(0x0889,clif->pStoragePassword,0);
+ packet(0x0891,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0898,clif->pDropItem,2,4);
+ packet(0x089c,clif->pWalkToXY,2);
+ packet(0x08a2,clif->pSolveCharName,2);
+ packet(0x08a4,clif->pFriendsListAdd,2);
+ packet(0x091b,clif->pDull/*,XXX*/);
+ packet(0x091e,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0922,clif->pChangeDir,2,4);
+ packet(0x092a,clif->pDull/*,XXX*/);
+ packet(0x0946,clif->pReqCloseBuyingStore,0);
+ packet(0x094f,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0955,clif->pReqClickBuyingStore,2);
+ packet(0x0957,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0959,clif->pTakeItem,2);
+ packet(0x095e,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0963,clif->pSearchStoreInfoNextPage,0);
#endif
// 2015-04-15aRagexeRE
#if PACKETVER == 20150415
- packet(0x0361,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0364,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0366,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0368,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0802,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0817,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0835,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x085e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0863,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0867,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0868,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0869,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x086c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0880,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x088e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0891,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0898,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x08a0,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0922,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x092e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x093c,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x093e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0941,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0946,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x094d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0953,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x095c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0960,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0961,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0361,clif->pMoveToKafra,2,4);
+ packet(0x0364,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0366,clif->pWalkToXY,2);
+ packet(0x0368,clif->pReqClickBuyingStore,2);
+ packet(0x0802,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0817,clif->pTakeItem,2);
+ packet(0x0835,clif->pDropItem,2,4);
+ packet(0x085e,clif->pDull/*,XXX*/);
+ packet(0x0863,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0867,clif->pPartyInvite2,2);
+ packet(0x0868,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0869,clif->pHomMenu,2,4);
+ packet(0x086c,clif->pActionRequest,2,6);
+ packet(0x0880,clif->pDull/*,XXX*/);
+ packet(0x088e,clif->pUseSkillToId,2,4,6);
+ packet(0x0891,clif->pGetCharNameRequest,2);
+ packet(0x0898,clif->pItemListWindowSelected,2,4,8);
+ packet(0x08a0,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0922,clif->pMoveFromKafra,2,4);
+ packet(0x092e,clif->pSolveCharName,2);
+ packet(0x093c,clif->pTickSend,2);
+ packet(0x093e,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0941,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0946,clif->pReqCloseBuyingStore,0);
+ packet(0x094d,clif->pChangeDir,2,4);
+ packet(0x0953,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x095c,clif->pFriendsListAdd,2);
+ packet(0x0960,clif->pStoragePassword,0);
+ packet(0x0961,clif->pPartyBookingRegisterReq,2,4);
#endif
// 2015-04-22aRagexeRE
#if PACKETVER == 20150422
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0955,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0955,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-04-29aRagexeRE
#if PACKETVER == 20150429
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0363,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0867,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x086a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0886,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x088f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0894,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0899,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x089f,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x08a6,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x08a8,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x08ad,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0929,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x093d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0943,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0363,clif->pChangeDir,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0867,clif->pStoragePassword,0);
+ packet(0x086a,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0886,clif->pPartyInvite2,2);
+ packet(0x088f,clif->pHomMenu,2,4);
+ packet(0x0894,clif->pDropItem,2,4);
+ packet(0x0899,clif->pMoveToKafra,2,4);
+ packet(0x089f,clif->pItemListWindowSelected,2,4,8);
+ packet(0x08a6,clif->pDull/*,XXX*/);
+ packet(0x08a8,clif->pDull/*,XXX*/);
+ packet(0x08ad,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0929,clif->pMoveFromKafra,2,4);
+ packet(0x093d,clif->pFriendsListAdd,2);
+ packet(0x0943,clif->pTakeItem,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-05-07bRagexeRE
#if PACKETVER == 20150507
- packet(0x023b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0864,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0887,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0889,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0924,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x092e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x093b,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0941,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0942,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0953,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0955,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0958,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x023b,clif->pHomMenu,2,4);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pReqCloseBuyingStore,0);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pTakeItem,2);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085a,clif->pMoveToKafra,2,4);
+ packet(0x0864,clif->pPartyInvite2,2);
+ packet(0x0887,clif->pDull/*,XXX*/);
+ packet(0x0889,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0924,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x092e,clif->pItemListWindowSelected,2,4,8);
+ packet(0x093b,clif->pChangeDir,2,4);
+ packet(0x0941,clif->pMoveFromKafra,2,4);
+ packet(0x0942,clif->pDull/*,XXX*/);
+ packet(0x0953,clif->pStoragePassword,0);
+ packet(0x0955,clif->pDropItem,2,4);
+ packet(0x0958,clif->pFriendsListAdd,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-05-13aRagexeRE
#if PACKETVER == 20150513
- packet(0x022d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x02c4,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0363,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0864,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0879,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0883,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0885,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x08a8,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0923,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0924,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0927,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x094a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0958,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0960,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x022d,clif->pReqCloseBuyingStore,0);
+ packet(0x02c4,clif->pDull/*,XXX*/);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0363,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pHomMenu,2,4);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0864,clif->pMoveFromKafra,2,4);
+ packet(0x0879,clif->pMoveToKafra,2,4);
+ packet(0x0883,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0885,clif->pDropItem,2,4);
+ packet(0x08a8,clif->pFriendsListAdd,2);
+ packet(0x0923,clif->pStoragePassword,0);
+ packet(0x0924,clif->pChangeDir,2,4);
+ packet(0x0927,clif->pDull/*,XXX*/);
+ packet(0x094a,clif->pPartyInvite2,2);
+ packet(0x0958,clif->pTakeItem,2);
+ packet(0x0960,clif->pItemListWindowSelected,2,4,8);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-05-20aRagexeRE
#if PACKETVER == 20150520
- packet(0x0202,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0361,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0835,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x085e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0865,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0868,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x087d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0880,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0882,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x088c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x089c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x089e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x08a2,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x08ad,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x091c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x091d,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0924,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x092b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0931,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0936,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x093d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0940,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0945,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x094e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x095b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x095f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0960,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0961,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x096a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0202,clif->pTickSend,2);
+ packet(0x0361,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0835,clif->pReqCloseBuyingStore,0);
+ packet(0x085e,clif->pReqClickBuyingStore,2);
+ packet(0x0865,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0868,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x087d,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0880,clif->pPartyInvite2,2);
+ packet(0x0882,clif->pItemListWindowSelected,2,4,8);
+ packet(0x088c,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x089c,clif->pStoragePassword,0);
+ packet(0x089e,clif->pDropItem,2,4);
+ packet(0x08a2,clif->pGetCharNameRequest,2);
+ packet(0x08ad,clif->pChangeDir,2,4);
+ packet(0x091c,clif->pTakeItem,2);
+ packet(0x091d,clif->pActionRequest,2,6);
+ packet(0x0924,clif->pMoveFromKafra,2,4);
+ packet(0x092b,clif->pWalkToXY,2);
+ packet(0x0931,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0936,clif->pUseSkillToId,2,4,6);
+ packet(0x093d,clif->pFriendsListAdd,2);
+ packet(0x0940,clif->pDull/*,XXX*/);
+ packet(0x0945,clif->pSolveCharName,2);
+ packet(0x094e,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x095b,clif->pHomMenu,2,4);
+ packet(0x095f,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0960,clif->pDull/*,XXX*/);
+ packet(0x0961,clif->pMoveToKafra,2,4);
+ packet(0x096a,clif->pPartyBookingRegisterReq,2,4);
#endif
// 2015-05-27aRagexeRE
#if PACKETVER == 20150527
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x083c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0940,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pUseSkillToId,2,4,6);
+ packet(0x083c,clif->pStoragePassword,0);
+ packet(0x0940,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-06-03bRagexeRE
#if PACKETVER == 20150603
- packet(0x0361,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0437,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0811,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0819,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0860,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0864,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0867,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x086a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0873,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0877,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0881,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0884,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x088b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0897,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x089a,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x089d,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x089e,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x08a1,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x08ad,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x091b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0922,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x092d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x093b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x093f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0955,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0956,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0960,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0969,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x096a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0361,clif->pPartyInvite2,2);
+ packet(0x0437,clif->pDull/*,XXX*/);
+ packet(0x0811,clif->pChangeDir,2,4);
+ packet(0x0819,clif->pReqClickBuyingStore,2);
+ packet(0x0860,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0864,clif->pFriendsListAdd,2);
+ packet(0x0867,clif->pMoveToKafra,2,4);
+ packet(0x086a,clif->pMoveFromKafra,2,4);
+ packet(0x0873,clif->pActionRequest,2,6);
+ packet(0x0877,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0881,clif->pGetCharNameRequest,2);
+ packet(0x0884,clif->pDull/*,XXX*/);
+ packet(0x088b,clif->pDropItem,2,4);
+ packet(0x0897,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x089a,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x089d,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x089e,clif->pTickSend,2);
+ packet(0x08a1,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x08ad,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x091b,clif->pSolveCharName,2);
+ packet(0x0922,clif->pStoragePassword,0);
+ packet(0x092d,clif->pTakeItem,2);
+ packet(0x093b,clif->pSearchStoreInfoNextPage,0);
+ packet(0x093f,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0955,clif->pHomMenu,2,4);
+ packet(0x0956,clif->pReqCloseBuyingStore,0);
+ packet(0x0960,clif->pUseSkillToId,2,4,6);
+ packet(0x0969,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x096a,clif->pWalkToXY,2);
#endif
// 2015-06-10aRagexeRE
#if PACKETVER == 20150610
- packet(0x022d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0438,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x07e4,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0835,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0870,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0872,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0877,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x087e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0884,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0885,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0888,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x088c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x088d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x088f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0897,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x08a0,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08ac,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0925,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x092b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x092c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x092e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0932,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x093e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0940,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0946,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0949,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0957,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x095d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0964,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pReqCloseBuyingStore,0);
+ packet(0x0438,clif->pItemListWindowSelected,2,4,8);
+ packet(0x07e4,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0835,clif->pDull/*,XXX*/);
+ packet(0x0870,clif->pPartyInvite2,2);
+ packet(0x0872,clif->pSolveCharName,2);
+ packet(0x0877,clif->pReqClickBuyingStore,2);
+ packet(0x087e,clif->pGetCharNameRequest,2);
+ packet(0x0884,clif->pMoveFromKafra,2,4);
+ packet(0x0885,clif->pHomMenu,2,4);
+ packet(0x0888,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x088c,clif->pMoveToKafra,2,4);
+ packet(0x088d,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x088f,clif->pWalkToXY,2);
+ packet(0x0897,clif->pFriendsListAdd,2);
+ packet(0x08a0,clif->pStoragePassword,0);
+ packet(0x08ac,clif->pDropItem,2,4);
+ packet(0x0925,clif->pTakeItem,2);
+ packet(0x092b,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x092c,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x092e,clif->pDull/*,XXX*/);
+ packet(0x0932,clif->pSearchStoreInfoNextPage,0);
+ packet(0x093e,clif->pActionRequest,2,6);
+ packet(0x0940,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0946,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0949,clif->pUseSkillToId,2,4,6);
+ packet(0x0957,clif->pTickSend,2);
+ packet(0x095d,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0964,clif->pChangeDir,2,4);
#endif
// 2015-06-17aRagexeRE, 2015-06-18aRagexeRE
#if PACKETVER == 20150617 || \
PACKETVER == 20150618
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0362,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0363,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0365,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07ec,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0811,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0869,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x086a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x086b,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0870,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x087a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0886,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0894,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0940,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x094e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pTakeItem,2);
+ packet(0x0362,clif->pReqClickBuyingStore,2);
+ packet(0x0363,clif->pStoragePassword,0);
+ packet(0x0365,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07ec,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0811,clif->pDull/*,XXX*/);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0869,clif->pMoveFromKafra,2,4);
+ packet(0x086a,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x086b,clif->pChangeDir,2,4);
+ packet(0x0870,clif->pPartyInvite2,2);
+ packet(0x087a,clif->pMoveToKafra,2,4);
+ packet(0x0886,clif->pHomMenu,2,4);
+ packet(0x0894,clif->pDull/*,XXX*/);
+ packet(0x0940,clif->pDropItem,2,4);
+ packet(0x094e,clif->pFriendsListAdd,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-06-24aRagexeRE
#if PACKETVER == 20150624
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0365,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0870,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0940,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0941,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0966,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0365,clif->pHomMenu,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0870,clif->pStoragePassword,0);
+ packet(0x0940,clif->pMoveFromKafra,2,4);
+ packet(0x0941,clif->pFriendsListAdd,2);
+ packet(0x0966,clif->pChangeDir,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-07-01bRagexeRE
#if PACKETVER == 20150701
- packet(0x023b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0281,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x07e4,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0802,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x086d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x087d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x087e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0883,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x088e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0893,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x08a0,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x08a4,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x08a5,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x08a6,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x08ad,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0919,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0923,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0928,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x092c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x093e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x093f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0946,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x094e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0954,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0956,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0958,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x095f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0960,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0968,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x023b,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0281,clif->pSearchStoreInfoNextPage,0);
+ packet(0x07e4,clif->pMoveFromKafra,2,4);
+ packet(0x0802,clif->pGetCharNameRequest,2);
+ packet(0x086d,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x087d,clif->pTickSend,2);
+ packet(0x087e,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0883,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x088e,clif->pReqCloseBuyingStore,0);
+ packet(0x0893,clif->pDull/*,XXX*/);
+ packet(0x08a0,clif->pDropItem,2,4);
+ packet(0x08a4,clif->pReqClickBuyingStore,2);
+ packet(0x08a5,clif->pPartyInvite2,2);
+ packet(0x08a6,clif->pUseSkillToId,2,4,6);
+ packet(0x08ad,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0919,clif->pStoragePassword,0);
+ packet(0x0923,clif->pDull/*,XXX*/);
+ packet(0x0928,clif->pMoveToKafra,2,4);
+ packet(0x092c,clif->pWalkToXY,2);
+ packet(0x093e,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x093f,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0946,clif->pTakeItem,2);
+ packet(0x094e,clif->pSolveCharName,2);
+ packet(0x0954,clif->pHomMenu,2,4);
+ packet(0x0956,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0958,clif->pActionRequest,2,6);
+ packet(0x095f,clif->pFriendsListAdd,2);
+ packet(0x0960,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0968,clif->pChangeDir,2,4);
#endif
// 2015-07-08bRagexeRE, 2015-07-08cRagexeRE, 2015-07-08dRagexeRE
#if PACKETVER == 20150708
- packet(0x022d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x02c4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0366,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0368,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085e,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0872,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x087f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0884,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x089d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08a5,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x08ad,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x091f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x092a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x093c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x095b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0962,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x022d,clif->pSolveCharName,2);
+ packet(0x02c4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0366,clif->pPartyInvite2,2);
+ packet(0x0368,clif->pHomMenu,2,4);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085e,clif->pMoveToKafra,2,4);
+ packet(0x0872,clif->pTakeItem,2);
+ packet(0x087f,clif->pDull/*,XXX*/);
+ packet(0x0884,clif->pWalkToXY,2);
+ packet(0x089d,clif->pChangeDir,2,4);
+ packet(0x08a5,clif->pItemListWindowSelected,2,4,8);
+ packet(0x08ad,clif->pStoragePassword,0);
+ packet(0x091f,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x092a,clif->pMoveFromKafra,2,4);
+ packet(0x093c,clif->pFriendsListAdd,2);
+ packet(0x095b,clif->pDropItem,2,4);
+ packet(0x0962,clif->pDull/*,XXX*/);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-07-15aRagexeRE
#if PACKETVER == 20150715
- packet(0x023b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0362,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0364,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0436,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0437,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0438,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0835,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x083c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x085c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x086f,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0873,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0879,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x087c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x087f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0886,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0895,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0896,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0897,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0899,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x089a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08a4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x08ac,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0917,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x093e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0944,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0950,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0956,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0961,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0965,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x023b,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0362,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0364,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0436,clif->pSolveCharName,2);
+ packet(0x0437,clif->pUseSkillToId,2,4,6);
+ packet(0x0438,clif->pWalkToXY,2);
+ packet(0x0835,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x083c,clif->pActionRequest,2,6);
+ packet(0x085c,clif->pGetCharNameRequest,2);
+ packet(0x086f,clif->pMoveFromKafra,2,4);
+ packet(0x0873,clif->pTickSend,2);
+ packet(0x0879,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x087c,clif->pDropItem,2,4);
+ packet(0x087f,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0886,clif->pDull/*,XXX*/);
+ packet(0x0895,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0896,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0897,clif->pPartyInvite2,2);
+ packet(0x0899,clif->pReqCloseBuyingStore,0);
+ packet(0x089a,clif->pTakeItem,2);
+ packet(0x08a4,clif->pDull/*,XXX*/);
+ packet(0x08ac,clif->pChangeDir,2,4);
+ packet(0x0917,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x093e,clif->pHomMenu,2,4);
+ packet(0x0944,clif->pFriendsListAdd,2);
+ packet(0x0950,clif->pReqClickBuyingStore,2);
+ packet(0x0956,clif->pStoragePassword,0);
+ packet(0x0961,clif->pMoveToKafra,2,4);
+ packet(0x0965,clif->pPartyBookingRegisterReq,2,4);
#endif
// 2015-07-22bRagexeRE
#if PACKETVER == 20150722
- packet(0x023b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0281,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0360,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0361,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0368,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0436,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0811,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0815,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0817,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0869,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0878,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x087b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x087d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x087e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0880,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0884,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x088d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0899,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x08a8,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0919,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0921,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0925,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x092e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x093c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x093d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x094c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x094f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0951,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0958,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x023b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0281,clif->pGetCharNameRequest,2);
+ packet(0x0360,clif->pActionRequest,2,6);
+ packet(0x0361,clif->pDropItem,2,4);
+ packet(0x0368,clif->pPartyInvite2,2);
+ packet(0x0436,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0811,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0815,clif->pReqCloseBuyingStore,0);
+ packet(0x0817,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0869,clif->pTakeItem,2);
+ packet(0x0878,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x087b,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x087d,clif->pWalkToXY,2);
+ packet(0x087e,clif->pSolveCharName,2);
+ packet(0x0880,clif->pReqClickBuyingStore,2);
+ packet(0x0884,clif->pHomMenu,2,4);
+ packet(0x088d,clif->pTickSend,2);
+ packet(0x0899,clif->pMoveFromKafra,2,4);
+ packet(0x08a8,clif->pChangeDir,2,4);
+ packet(0x0919,clif->pDull/*,XXX*/);
+ packet(0x0921,clif->pMoveToKafra,2,4);
+ packet(0x0925,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x092e,clif->pFriendsListAdd,2);
+ packet(0x093c,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x093d,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x094c,clif->pUseSkillToId,2,4,6);
+ packet(0x094f,clif->pDull/*,XXX*/);
+ packet(0x0951,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0958,clif->pStoragePassword,0);
#endif
// 2015-07-29aRagexeRE
#if PACKETVER == 20150729
- packet(0x0437,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0438,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x085b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0860,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x086c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x086d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x086e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x086f,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0870,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0880,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0881,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0886,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x089a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x089b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x08a3,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x08a4,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08ac,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x08ad,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0920,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x092b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x092f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x093a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x093f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0940,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x094f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0955,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x095e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0961,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0437,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0438,clif->pHomMenu,2,4);
+ packet(0x085b,clif->pDull/*,XXX*/);
+ packet(0x0860,clif->pTakeItem,2);
+ packet(0x086c,clif->pMoveToKafra,2,4);
+ packet(0x086d,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x086e,clif->pWalkToXY,2);
+ packet(0x086f,clif->pMoveFromKafra,2,4);
+ packet(0x0870,clif->pGetCharNameRequest,2);
+ packet(0x0880,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0881,clif->pActionRequest,2,6);
+ packet(0x0886,clif->pSolveCharName,2);
+ packet(0x089a,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x089b,clif->pFriendsListAdd,2);
+ packet(0x08a3,clif->pDull/*,XXX*/);
+ packet(0x08a4,clif->pChangeDir,2,4);
+ packet(0x08ac,clif->pPartyInvite2,2);
+ packet(0x08ad,clif->pReqClickBuyingStore,2);
+ packet(0x0920,clif->pSearchStoreInfoNextPage,0);
+ packet(0x092b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x092f,clif->pUseSkillToId,2,4,6);
+ packet(0x093a,clif->pTickSend,2);
+ packet(0x093f,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0940,clif->pDropItem,2,4);
+ packet(0x094f,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0955,clif->pItemListWindowSelected,2,4,8);
+ packet(0x095e,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0961,clif->pStoragePassword,0);
+ packet(0x096a,clif->pReqCloseBuyingStore,0);
#endif
// 2015-08-05dRagexeRE
#if PACKETVER == 20150805
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x088a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x088a,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-08-12aRagexeRE
#if PACKETVER == 20150812
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x087f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x087f,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-08-19aRagexeRE, 2015-08-19bRagexeRE
#if PACKETVER == 20150819
- packet(0x0202,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x022d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0281,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x085d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0862,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0865,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0871,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0888,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0919,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x091e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0927,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0940,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0961,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0967,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pItemListWindowSelected,2,4,8);
+ packet(0x022d,clif->pUseSkillToId,2,4,6);
+ packet(0x0281,clif->pTakeItem,2);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x085d,clif->pMoveFromKafra,2,4);
+ packet(0x0862,clif->pDull/*,XXX*/);
+ packet(0x0865,clif->pFriendsListAdd,2);
+ packet(0x0871,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0888,clif->pHomMenu,2,4);
+ packet(0x0919,clif->pMoveToKafra,2,4);
+ packet(0x091e,clif->pStoragePassword,0);
+ packet(0x0927,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0940,clif->pDropItem,2,4);
+ packet(0x0961,clif->pPartyInvite2,2);
+ packet(0x0967,clif->pChangeDir,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-08-26aRagexeRE, 2015-08-26bRagexeRE
#if PACKETVER == 20150826
- packet(0x0362,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0368,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0436,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x07ec,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0819,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0861,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0865,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x086b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0870,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x087b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x088b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x088d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0890,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0891,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x08a0,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x08a1,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08a4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08a8,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0924,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0928,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x092e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x093b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0945,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x094f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0951,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0959,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0964,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0968,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0969,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0362,clif->pStoragePassword,0);
+ packet(0x0368,clif->pMoveFromKafra,2,4);
+ packet(0x0436,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x07ec,clif->pActionRequest,2,6);
+ packet(0x0819,clif->pReqClickBuyingStore,2);
+ packet(0x0861,clif->pDull/*,XXX*/);
+ packet(0x0865,clif->pWalkToXY,2);
+ packet(0x086b,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0870,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x087b,clif->pSolveCharName,2);
+ packet(0x088b,clif->pPartyInvite2,2);
+ packet(0x088d,clif->pFriendsListAdd,2);
+ packet(0x0890,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0891,clif->pUseSkillToId,2,4,6);
+ packet(0x08a0,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x08a1,clif->pMoveToKafra,2,4);
+ packet(0x08a4,clif->pTakeItem,2);
+ packet(0x08a8,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0924,clif->pDropItem,2,4);
+ packet(0x0928,clif->pReqCloseBuyingStore,0);
+ packet(0x092e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x093b,clif->pGetCharNameRequest,2);
+ packet(0x0945,clif->pHomMenu,2,4);
+ packet(0x094f,clif->pChangeDir,2,4);
+ packet(0x0951,clif->pTickSend,2);
+ packet(0x0959,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0964,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0968,clif->pDull/*,XXX*/);
+ packet(0x0969,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
#endif
// 2015-09-02aRagexeRE
#if PACKETVER == 20150902
- packet(0x023b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0360,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0367,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0802,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x083c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x085b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x085d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0863,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x086f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x087b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x087f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0886,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0887,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0889,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x088d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0892,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0897,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0899,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x08a9,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0923,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0928,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x092a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x092d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0941,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0947,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x094f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0953,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x095b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0960,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x023b,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0360,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0367,clif->pTickSend,2);
+ packet(0x0802,clif->pStoragePassword,0);
+ packet(0x083c,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x085b,clif->pActionRequest,2,6);
+ packet(0x085d,clif->pSolveCharName,2);
+ packet(0x0863,clif->pUseSkillToId,2,4,6);
+ packet(0x086f,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x087b,clif->pWalkToXY,2);
+ packet(0x087f,clif->pDull/*,XXX*/);
+ packet(0x0886,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0887,clif->pDull/*,XXX*/);
+ packet(0x0889,clif->pReqCloseBuyingStore,0);
+ packet(0x088d,clif->pMoveFromKafra,2,4);
+ packet(0x0892,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0897,clif->pMoveToKafra,2,4);
+ packet(0x0899,clif->pGetCharNameRequest,2);
+ packet(0x08a9,clif->pDropItem,2,4);
+ packet(0x0923,clif->pFriendsListAdd,2);
+ packet(0x0928,clif->pTakeItem,2);
+ packet(0x092a,clif->pHomMenu,2,4);
+ packet(0x092d,clif->pPartyInvite2,2);
+ packet(0x0941,clif->pChangeDir,2,4);
+ packet(0x0947,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x094f,clif->pReqClickBuyingStore,2);
+ packet(0x0953,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x095b,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0960,clif->pSearchStoreInfoNextPage,0);
#endif
// 2015-09-09aRagexeRE
#if PACKETVER == 20150909
- packet(0x023b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0361,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0365,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0437,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0861,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0871,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x087b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0883,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0886,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x088f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0895,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0928,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0940,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0941,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x095e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0962,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x096a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x023b,clif->pActionRequest,2,6);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqCloseBuyingStore,0);
+ packet(0x0361,clif->pGetCharNameRequest,2);
+ packet(0x0365,clif->pWalkToXY,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pStoragePassword,0);
+ packet(0x0437,clif->pMoveFromKafra,2,4);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0861,clif->pDull/*,XXX*/);
+ packet(0x0871,clif->pItemListWindowSelected,2,4,8);
+ packet(0x087b,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0883,clif->pTakeItem,2);
+ packet(0x0886,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x088f,clif->pPartyInvite2,2);
+ packet(0x0895,clif->pFriendsListAdd,2);
+ packet(0x0928,clif->pDull/*,XXX*/);
+ packet(0x0940,clif->pReqClickBuyingStore,2);
+ packet(0x0941,clif->pHomMenu,2,4);
+ packet(0x095e,clif->pDropItem,2,4);
+ packet(0x0962,clif->pMoveToKafra,2,4);
+ packet(0x096a,clif->pChangeDir,2,4);
#endif
// 2015-09-16cRagexeRE
#if PACKETVER == 20150916
- packet(0x022d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0817,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0835,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x085e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0869,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0873,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0877,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x087f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0881,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x089b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x089c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x089e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x08ac,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0920,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0924,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x092e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x092f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0934,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0936,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0938,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x093e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0941,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0942,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0948,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x094f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x095a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0960,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0961,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0969,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x022d,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0817,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0835,clif->pReqClickBuyingStore,2);
+ packet(0x085e,clif->pMoveFromKafra,2,4);
+ packet(0x0869,clif->pActionRequest,2,6);
+ packet(0x0873,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0877,clif->pWalkToXY,2);
+ packet(0x087f,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0881,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x089b,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x089c,clif->pTakeItem,2);
+ packet(0x089e,clif->pFriendsListAdd,2);
+ packet(0x08ac,clif->pTickSend,2);
+ packet(0x0920,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0924,clif->pPartyInvite2,2);
+ packet(0x092e,clif->pReqCloseBuyingStore,0);
+ packet(0x092f,clif->pDropItem,2,4);
+ packet(0x0934,clif->pMoveToKafra,2,4);
+ packet(0x0936,clif->pChangeDir,2,4);
+ packet(0x0938,clif->pDull/*,XXX*/);
+ packet(0x093e,clif->pUseSkillToId,2,4,6);
+ packet(0x0941,clif->pStoragePassword,0);
+ packet(0x0942,clif->pSolveCharName,2);
+ packet(0x0948,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x094f,clif->pDull/*,XXX*/);
+ packet(0x095a,clif->pGetCharNameRequest,2);
+ packet(0x0960,clif->pHomMenu,2,4);
+ packet(0x0961,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0969,clif->pWantToConnection,2,6,10,14,18);
#endif
// 2015-09-23bRagexeRE, 2015-09-23eRagexeRE, 2015-09-23fRagexeRE
#if PACKETVER == 20150923
- packet(0x0361,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x07e4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0817,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x085c,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x085d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0864,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x086e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x086f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0870,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0879,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x087f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0886,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x088e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0892,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0895,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x089b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x089f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08a0,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x08a2,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x08a5,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x08a6,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x091e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x092b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0930,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0936,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x093b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0951,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0961,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0361,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x07e4,clif->pStoragePassword,0);
+ packet(0x0817,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x085c,clif->pSolveCharName,2);
+ packet(0x085d,clif->pFriendsListAdd,2);
+ packet(0x0864,clif->pHomMenu,2,4);
+ packet(0x086e,clif->pReqCloseBuyingStore,0);
+ packet(0x086f,clif->pUseSkillToId,2,4,6);
+ packet(0x0870,clif->pChangeDir,2,4);
+ packet(0x0879,clif->pMoveFromKafra,2,4);
+ packet(0x087f,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0886,clif->pWalkToXY,2);
+ packet(0x088e,clif->pReqClickBuyingStore,2);
+ packet(0x0892,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0895,clif->pDull/*,XXX*/);
+ packet(0x089b,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x089f,clif->pMoveToKafra,2,4);
+ packet(0x08a0,clif->pTickSend,2);
+ packet(0x08a2,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x08a5,clif->pGetCharNameRequest,2);
+ packet(0x08a6,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x091e,clif->pDull/*,XXX*/);
+ packet(0x092b,clif->pTakeItem,2);
+ packet(0x0930,clif->pDropItem,2,4);
+ packet(0x0936,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x093b,clif->pPartyInvite2,2);
+ packet(0x0951,clif->pActionRequest,2,6);
+ packet(0x0961,clif->pItemListWindowSelected,2,4,8);
#endif
// 2015-10-01bRagexeRE
#if PACKETVER == 20151001
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0960,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0960,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-10-07aRagexeRE
#if PACKETVER == 20151007
- packet(0x0202,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0862,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x093f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x095f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0961,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0967,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pFriendsListAdd,2);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0862,clif->pDull/*,XXX*/);
+ packet(0x093f,clif->pHomMenu,2,4);
+ packet(0x095f,clif->pChangeDir,2,4);
+ packet(0x0961,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0967,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-10-14bRagexeRE
#if PACKETVER == 20151014
- packet(0x0202,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0817,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0838,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x085a,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0860,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0863,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0867,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0872,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0874,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0881,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0883,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0884,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0889,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x088e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x089a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x089b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x089f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x08aa,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x091c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x091d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0930,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0934,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0944,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x094f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0956,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x095e,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0961,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0964,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0202,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0817,clif->pFriendsListAdd,2);
+ packet(0x0838,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x085a,clif->pUseSkillToId,2,4,6);
+ packet(0x085c,clif->pActionRequest,2,6);
+ packet(0x0860,clif->pDropItem,2,4);
+ packet(0x0863,clif->pChangeDir,2,4);
+ packet(0x0867,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0872,clif->pHomMenu,2,4);
+ packet(0x0874,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0881,clif->pMoveFromKafra,2,4);
+ packet(0x0883,clif->pTickSend,2);
+ packet(0x0884,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0889,clif->pReqClickBuyingStore,2);
+ packet(0x088e,clif->pDull/*,XXX*/);
+ packet(0x089a,clif->pDull/*,XXX*/);
+ packet(0x089b,clif->pReqCloseBuyingStore,0);
+ packet(0x089f,clif->pWalkToXY,2);
+ packet(0x08aa,clif->pTakeItem,2);
+ packet(0x091c,clif->pPartyInvite2,2);
+ packet(0x091d,clif->pStoragePassword,0);
+ packet(0x0930,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0934,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0944,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x094f,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0956,clif->pSolveCharName,2);
+ packet(0x095e,clif->pMoveToKafra,2,4);
+ packet(0x0961,clif->pGetCharNameRequest,2);
+ packet(0x0964,clif->pWantToConnection,2,6,10,14,18);
#endif
// 2015-10-21aRagexeRE, 2015-10-22aRagexeRE
#if PACKETVER == 20151021 || \
PACKETVER == 20151022
- packet(0x023b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x02c4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x086a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x091d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0940,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x023b,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x02c4,clif->pStoragePassword,0);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pMoveToKafra,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pChangeDir,2,4);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x086a,clif->pFriendsListAdd,2);
+ packet(0x091d,clif->pHomMenu,2,4);
+ packet(0x0940,clif->pPartyInvite2,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-10-28bRagexeRE, 2015-10-28bRagexeRE_2, 2015-10-28cRagexeRE, 2015-10-28dRagexeRE, 2015-10-29aRagexeRE
#if PACKETVER == 20151028 || \
PACKETVER == 20151029
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0860,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0860,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-11-04aRagexeRE
#if PACKETVER == 20151104
- packet(0x023b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0360,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0363,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0437,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07ec,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0811,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0815,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0886,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0887,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x088b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x088d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x08a3,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x08a5,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0928,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0939,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x093a,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0940,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0964,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x023b,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0360,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0363,clif->pWalkToXY,2);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pReqClickBuyingStore,2);
+ packet(0x0437,clif->pDropItem,2,4);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07ec,clif->pFriendsListAdd,2);
+ packet(0x0811,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0815,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0886,clif->pTickSend,2);
+ packet(0x0887,clif->pGetCharNameRequest,2);
+ packet(0x088b,clif->pMoveToKafra,2,4);
+ packet(0x088d,clif->pHomMenu,2,4);
+ packet(0x08a3,clif->pDull/*,XXX*/);
+ packet(0x08a5,clif->pPartyInvite2,2);
+ packet(0x0928,clif->pChangeDir,2,4);
+ packet(0x0939,clif->pDull/*,XXX*/);
+ packet(0x093a,clif->pItemListWindowSelected,2,4,8,12);
+ packet(0x0940,clif->pStoragePassword,2,4,20);
+ packet(0x0964,clif->pTakeItem,2);
#endif
// 2015-11-11aRagexeRE
#if PACKETVER == 20151111
- packet(0x02c4,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0802,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085d,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0862,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0871,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0885,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x089c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0942,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x094a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0958,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0966,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0967,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0969,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x02c4,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pHomMenu,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pMoveToKafra,2,4);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0802,clif->pDull/*,XXX*/);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pPartyInvite2,2);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085d,clif->pItemListWindowSelected,2,4,8,12);
+ packet(0x0862,clif->pDropItem,2,4);
+ packet(0x0871,clif->pFriendsListAdd,2);
+ packet(0x0885,clif->pActionRequest,2,6);
+ packet(0x089c,clif->pChangeDir,2,4);
+ packet(0x0942,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x094a,clif->pTakeItem,2);
+ packet(0x0958,clif->pDull/*,XXX*/);
+ packet(0x0966,clif->pMoveFromKafra,2,4);
+ packet(0x0967,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0969,clif->pStoragePassword,2,4,20);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-11-18aRagexeRE
#if PACKETVER == 20151118
- packet(0x022d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x035f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0365,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x086b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x088b,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08ab,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0921,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0925,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x092e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x092f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x093c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0943,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0946,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0957,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x095c,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x022d,clif->pTickSend,2);
+ packet(0x035f,clif->pHomMenu,2,4);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0365,clif->pPartyInvite2,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x086b,clif->pMoveToKafra,2,4);
+ packet(0x088b,clif->pStoragePassword,2,4,20);
+ packet(0x08ab,clif->pMoveFromKafra,2,4);
+ packet(0x0921,clif->pFriendsListAdd,2);
+ packet(0x0925,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x092e,clif->pChangeDir,2,4);
+ packet(0x092f,clif->pDull/*,XXX*/);
+ packet(0x093c,clif->pDropItem,2,4);
+ packet(0x0943,clif->pTakeItem,2);
+ packet(0x0946,clif->pItemListWindowSelected,2,4,8,12);
+ packet(0x0957,clif->pDull/*,XXX*/);
+ packet(0x095c,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-11-25bRagexeRE, 2015-11-25cRagexeRE, 2015-11-25dRagexeRE
#if PACKETVER == 20151125
- packet(0x0361,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0365,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0366,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0368,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0438,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0802,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0838,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x085e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x085f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0863,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0883,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0884,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0885,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x088c,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x088d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0899,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x089c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x089f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x08a9,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x08ad,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0920,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x092a,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x092e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0939,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x093e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0951,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0956,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0957,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0959,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x0361,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0365,clif->pWalkToXY,2);
+ packet(0x0366,clif->pMoveFromKafra,2,4);
+ packet(0x0368,clif->pItemListWindowSelected,2,4,8,12);
+ packet(0x0438,clif->pTakeItem,2);
+ packet(0x0802,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0838,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x085e,clif->pGetCharNameRequest,2);
+ packet(0x085f,clif->pMoveToKafra,2,4);
+ packet(0x0863,clif->pReqCloseBuyingStore,0);
+ packet(0x0883,clif->pChangeDir,2,4);
+ packet(0x0884,clif->pStoragePassword,2,4,20);
+ packet(0x0885,clif->pDull/*,XXX*/);
+ packet(0x088c,clif->pTickSend,2);
+ packet(0x088d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0899,clif->pFriendsListAdd,2);
+ packet(0x089c,clif->pActionRequest,2,6);
+ packet(0x089f,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x08a9,clif->pDropItem,2,4);
+ packet(0x08ad,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0920,clif->pSolveCharName,2);
+ packet(0x092a,clif->pUseSkillToId,2,4,6);
+ packet(0x092e,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0939,clif->pReqClickBuyingStore,2);
+ packet(0x093e,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0951,clif->pHomMenu,2,4);
+ packet(0x0956,clif->pPartyInvite2,2);
+ packet(0x0957,clif->pDull/*,XXX*/);
+ packet(0x0959,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
#endif
// 2015-12-02bRagexeRE
#if PACKETVER == 20151202
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0870,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8,12);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0870,clif->pStoragePassword,2,4,20);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2015-12-09aRagexeRE
#if PACKETVER == 20151209
- packet(0x0365,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x07e4,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x07ec,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0811,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0819,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x085b,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x085d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x085e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0861,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0866,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0875,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x087a,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x087f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x088e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x088f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0894,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x08a1,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0920,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x092d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0930,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0932,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES // -1
- packet(0x093b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0948,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x094a,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0956,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x095c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0961,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0964,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x0365,clif->pWalkToXY,2);
+ packet(0x0369,clif->pSolveCharName,2);
+ packet(0x07e4,clif->pPartyInvite2,2);
+ packet(0x07ec,clif->pTakeItem,2);
+ packet(0x0811,clif->pTickSend,2);
+ packet(0x0819,clif->pReqCloseBuyingStore,0);
+ packet(0x085b,clif->pStoragePassword,2,4,20);
+ packet(0x085d,clif->pGetCharNameRequest,2);
+ packet(0x085e,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0861,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0866,clif->pChangeDir,2,4);
+ packet(0x0875,clif->pSearchStoreInfoNextPage,0);
+ packet(0x087a,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x087f,clif->pReqClickBuyingStore,2);
+ packet(0x088e,clif->pUseSkillToId,2,4,6);
+ packet(0x088f,clif->pDull/*,XXX*/);
+ packet(0x0894,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x08a1,clif->pHomMenu,2,4);
+ packet(0x0920,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x092d,clif->pMoveFromKafra,2,4);
+ packet(0x0930,clif->pDropItem,2,4);
+ packet(0x0932,clif->pItemListWindowSelected,2,4,8,12);
+ packet(0x093b,clif->pMoveToKafra,2,4);
+ packet(0x0948,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x094a,clif->pPartyBookingRegisterReq,2,4,6);
+ packet(0x0956,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x095c,clif->pDull/*,XXX*/);
+ packet(0x0961,clif->pActionRequest,2,6);
+ packet(0x0964,clif->pFriendsListAdd,2);
#endif
// 2015-12-16aRagexeRE
#if PACKETVER == 20151216
- packet(0x022d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0361,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0364,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0436,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x085b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0864,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0865,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x086a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x086e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0870,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0874,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0885,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x088b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x089d,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x089e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x08a2,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x08a9,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08ac,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x091d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0944,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0947,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0949,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0954,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0960,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0966,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0968,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x022d,clif->pChangeDir,2,4);
+ packet(0x0361,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pHomMenu,2,4);
+ packet(0x0364,clif->pDull/*,XXX*/);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0436,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pReqCloseBuyingStore,0);
+ packet(0x085b,clif->pTickSend,2);
+ packet(0x0864,clif->pMoveFromKafra,2,4);
+ packet(0x0865,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x086a,clif->pDull/*,XXX*/);
+ packet(0x086e,clif->pPartyInvite2,2);
+ packet(0x0870,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0874,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0885,clif->pStoragePassword,0);
+ packet(0x088b,clif->pGetCharNameRequest,2);
+ packet(0x089d,clif->pActionRequest,2,6);
+ packet(0x089e,clif->pSolveCharName,2);
+ packet(0x08a2,clif->pWalkToXY,2);
+ packet(0x08a9,clif->pTakeItem,2);
+ packet(0x08ac,clif->pMoveToKafra,2,4);
+ packet(0x091d,clif->pFriendsListAdd,2);
+ packet(0x0944,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0947,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0949,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0954,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0960,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0966,clif->pDropItem,2,4);
+ packet(0x0968,clif->pUseSkillToId,2,4,6);
#endif
// 2015-12-23bRagexeRE
#if PACKETVER == 20151223
- packet(0x02c4,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0362,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0802,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0815,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0864,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0866,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x086e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0872,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0875,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0876,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0881,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0884,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0886,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x088d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0890,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0891,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0898,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x08aa,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0918,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x091a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x091b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0920,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0923,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0924,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x095e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x095f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0965,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0967,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x02c4,clif->pMoveToKafra,2,4);
+ packet(0x0362,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pTakeItem,2);
+ packet(0x0802,clif->pDull/*,XXX*/);
+ packet(0x0815,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0864,clif->pGetCharNameRequest,2);
+ packet(0x0866,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x086e,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0872,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0875,clif->pUseSkillToId,2,4,6);
+ packet(0x0876,clif->pDropItem,2,4);
+ packet(0x0881,clif->pActionRequest,2,6);
+ packet(0x0884,clif->pMoveFromKafra,2,4);
+ packet(0x0886,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x088d,clif->pHomMenu,2,4);
+ packet(0x0890,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0891,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0898,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x08aa,clif->pPartyInvite2,2);
+ packet(0x0918,clif->pSearchStoreInfoNextPage,0);
+ packet(0x091a,clif->pReqClickBuyingStore,2);
+ packet(0x091b,clif->pFriendsListAdd,2);
+ packet(0x0920,clif->pWalkToXY,2);
+ packet(0x0923,clif->pChangeDir,2,4);
+ packet(0x0924,clif->pTickSend,2);
+ packet(0x095e,clif->pSolveCharName,2);
+ packet(0x095f,clif->pReqCloseBuyingStore,0);
+ packet(0x0965,clif->pStoragePassword,0);
+ packet(0x0967,clif->pSearchStoreInfoListItemClick,2,6,10);
#endif
// 2015-12-30aRagexeRE
#if PACKETVER == 20151230
- packet(0x02c4,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x07ec,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0861,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0869,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0886,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x088e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0897,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x091d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0923,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x093a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0949,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x094e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x02c4,clif->pMoveToKafra,2,4);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pDull/*,XXX*/);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x07ec,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085b,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0861,clif->pPartyInvite2,2);
+ packet(0x0869,clif->pChangeDir,2,4);
+ packet(0x0886,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x088e,clif->pFriendsListAdd,2);
+ packet(0x0897,clif->pDropItem,2,4);
+ packet(0x091d,clif->pMoveFromKafra,2,4);
+ packet(0x0923,clif->pStoragePassword,0);
+ packet(0x093a,clif->pDull/*,XXX*/);
+ packet(0x0949,clif->pHomMenu,2,4);
+ packet(0x094e,clif->pTakeItem,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-01-06aRagexeRE
#if PACKETVER == 20160106
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07ec,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0861,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x086a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x086c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0878,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x087a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x087f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0885,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0889,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x088a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0891,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x08a0,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x091d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0940,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07ec,clif->pHomMenu,2,4);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0861,clif->pTakeItem,2);
+ packet(0x086a,clif->pDropItem,2,4);
+ packet(0x086c,clif->pDull/*,XXX*/);
+ packet(0x0878,clif->pStoragePassword,0);
+ packet(0x087a,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x087f,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0885,clif->pMoveToKafra,2,4);
+ packet(0x0889,clif->pChangeDir,2,4);
+ packet(0x088a,clif->pPartyInvite2,2);
+ packet(0x0891,clif->pMoveFromKafra,2,4);
+ packet(0x08a0,clif->pFriendsListAdd,2);
+ packet(0x091d,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0940,clif->pDull/*,XXX*/);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-01-13aRagexeRE, 2016-01-13bRagexeRE, 2016-01-13bRagexeRE_2, 2016-01-13cRagexeRE
#if PACKETVER == 20160113
- packet(0x022d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x023b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x035f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0815,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x085b,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0864,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x086d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0873,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0875,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0888,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x088b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x088c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0892,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0893,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0899,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x089a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x08a0,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x08a6,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08aa,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0919,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x091b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0924,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0930,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0932,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x093c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0941,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x094d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x094f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0967,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x022d,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x023b,clif->pWalkToXY,2);
+ packet(0x035f,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0815,clif->pStoragePassword,0);
+ packet(0x085b,clif->pChangeDir,2,4);
+ packet(0x0864,clif->pReqClickBuyingStore,2);
+ packet(0x086d,clif->pHomMenu,2,4);
+ packet(0x0873,clif->pDull/*,XXX*/);
+ packet(0x0875,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0888,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x088b,clif->pPartyInvite2,2);
+ packet(0x088c,clif->pReqCloseBuyingStore,0);
+ packet(0x0892,clif->pUseSkillToId,2,4,6);
+ packet(0x0893,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0899,clif->pFriendsListAdd,2);
+ packet(0x089a,clif->pActionRequest,2,6);
+ packet(0x08a0,clif->pTickSend,2);
+ packet(0x08a6,clif->pTakeItem,2);
+ packet(0x08aa,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0919,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x091b,clif->pGetCharNameRequest,2);
+ packet(0x0924,clif->pDropItem,2,4);
+ packet(0x0930,clif->pSolveCharName,2);
+ packet(0x0932,clif->pMoveToKafra,2,4);
+ packet(0x093c,clif->pMoveFromKafra,2,4);
+ packet(0x0941,clif->pItemListWindowSelected,2,4,8);
+ packet(0x094d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x094f,clif->pDull/*,XXX*/);
+ packet(0x0967,clif->pReqOpenBuyingStore,2,4,8,9,89);
#endif
// 2016-01-20aRagexeRE
#if PACKETVER == 20160120
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0865,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0865,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-01-27aRagexeRE, 2016-01-27aRagexeRE_2, 2016-01-27bRagexeRE
#if PACKETVER == 20160127
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0922,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x095a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0961,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085e,clif->pChangeDir,2,4);
+ packet(0x0922,clif->pHomMenu,2,4);
+ packet(0x095a,clif->pStoragePassword,0);
+ packet(0x0961,clif->pFriendsListAdd,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-02-03aRagexeRE
#if PACKETVER == 20160203
- packet(0x0202,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0437,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0811,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0835,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x086c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0872,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0873,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x088c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0918,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x093e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0940,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0947,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0954,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x095a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x095d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pFriendsListAdd,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0437,clif->pTickSend,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0811,clif->pChangeDir,2,4);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0835,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x086c,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0872,clif->pHomMenu,2,4);
+ packet(0x0873,clif->pStoragePassword,0);
+ packet(0x088c,clif->pDull/*,XXX*/);
+ packet(0x0918,clif->pDull/*,XXX*/);
+ packet(0x093e,clif->pPartyInvite2,2);
+ packet(0x0940,clif->pWalkToXY,2);
+ packet(0x0947,clif->pDropItem,2,4);
+ packet(0x0954,clif->pMoveFromKafra,2,4);
+ packet(0x095a,clif->pTakeItem,2);
+ packet(0x095d,clif->pMoveToKafra,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-02-11aRagexeRE
#if PACKETVER == 20160211
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x086c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0870,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0886,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pStoragePassword,0);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x086c,clif->pChangeDir,2,4);
+ packet(0x0870,clif->pFriendsListAdd,2);
+ packet(0x0886,clif->pHomMenu,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-02-17aRagexeRE, 2016-02-17bRagexeRE, 2016-02-17bRagexeRE_2, 2016-02-17cRagexeRE
#if PACKETVER == 20160217
- packet(0x0202,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x023b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0362,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0365,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0864,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0870,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0873,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x087a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0888,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x088d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x088f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0899,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x08a0,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x08a9,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x08ac,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x08ad,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x091d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0920,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0926,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x092e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x093b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x093e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0941,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x094a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x094f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x095e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0966,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0967,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0969,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0202,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x023b,clif->pReqCloseBuyingStore,0);
+ packet(0x0362,clif->pChangeDir,2,4);
+ packet(0x0365,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0864,clif->pMoveToKafra,2,4);
+ packet(0x0870,clif->pFriendsListAdd,2);
+ packet(0x0873,clif->pHomMenu,2,4);
+ packet(0x087a,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0888,clif->pTickSend,2);
+ packet(0x088d,clif->pReqClickBuyingStore,2);
+ packet(0x088f,clif->pDropItem,2,4);
+ packet(0x0899,clif->pDull/*,XXX*/);
+ packet(0x08a0,clif->pMoveFromKafra,2,4);
+ packet(0x08a9,clif->pPartyInvite2,2);
+ packet(0x08ac,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x08ad,clif->pSearchStoreInfoNextPage,0);
+ packet(0x091d,clif->pWalkToXY,2);
+ packet(0x0920,clif->pActionRequest,2,6);
+ packet(0x0926,clif->pUseSkillToId,2,4,6);
+ packet(0x092e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x093b,clif->pItemListWindowSelected,2,4,8);
+ packet(0x093e,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0941,clif->pTakeItem,2);
+ packet(0x094a,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x094f,clif->pDull/*,XXX*/);
+ packet(0x095e,clif->pStoragePassword,0);
+ packet(0x0966,clif->pGetCharNameRequest,2);
+ packet(0x0967,clif->pSolveCharName,2);
+ packet(0x0969,clif->pReqOpenBuyingStore,2,4,8,9,89);
#endif
// 2016-02-24aRagexeRE, 2016-02-24bRagexeRE
#if PACKETVER == 20160224
- packet(0x022d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0364,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0436,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0861,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x086b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0884,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0885,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0888,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x08a9,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0920,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0929,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x092f,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0936,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0938,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x094c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0961,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x022d,clif->pPartyInvite2,2);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0364,clif->pUseSkillToId,2,4,6);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pMoveFromKafra,2,4);
+ packet(0x0436,clif->pDropItem,2,4);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pMoveToKafra,2,4);
+ packet(0x0861,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x086b,clif->pDull/*,XXX*/);
+ packet(0x0884,clif->pActionRequest,2,6);
+ packet(0x0885,clif->pReqClickBuyingStore,2);
+ packet(0x0888,clif->pWalkToXY,2);
+ packet(0x08a9,clif->pFriendsListAdd,2);
+ packet(0x0920,clif->pDull/*,XXX*/);
+ packet(0x0929,clif->pChangeDir,2,4);
+ packet(0x092f,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0936,clif->pStoragePassword,0);
+ packet(0x0938,clif->pTakeItem,2);
+ packet(0x094c,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0961,clif->pHomMenu,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-03-02bRagexeRE
#if PACKETVER == 20160302
- packet(0x022d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0367,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0802,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0819,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x085b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0864,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0865,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0867,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0868,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0873,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0875,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x087a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x087d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0883,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x08a6,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x08a9,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x091a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0927,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x092d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x092f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0945,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x094e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0950,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0957,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x095a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0960,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0961,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0967,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0968,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x022d,clif->pChangeDir,2,4);
+ packet(0x0367,clif->pReqClickBuyingStore,2);
+ packet(0x0802,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0819,clif->pWalkToXY,2);
+ packet(0x085b,clif->pFriendsListAdd,2);
+ packet(0x0864,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0865,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0867,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0868,clif->pHomMenu,2,4);
+ packet(0x0873,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0875,clif->pSearchStoreInfoNextPage,0);
+ packet(0x087a,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x087d,clif->pPartyInvite2,2);
+ packet(0x0883,clif->pUseSkillToId,2,4,6);
+ packet(0x08a6,clif->pReqCloseBuyingStore,0);
+ packet(0x08a9,clif->pMoveFromKafra,2,4);
+ packet(0x091a,clif->pDropItem,2,4);
+ packet(0x0927,clif->pTakeItem,2);
+ packet(0x092d,clif->pDull/*,XXX*/);
+ packet(0x092f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0945,clif->pGetCharNameRequest,2);
+ packet(0x094e,clif->pStoragePassword,0);
+ packet(0x0950,clif->pDull/*,XXX*/);
+ packet(0x0957,clif->pItemListWindowSelected,2,4,8);
+ packet(0x095a,clif->pTickSend,2);
+ packet(0x0960,clif->pMoveToKafra,2,4);
+ packet(0x0961,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0967,clif->pSolveCharName,2);
+ packet(0x0968,clif->pActionRequest,2,6);
#endif
// 2016-03-09aRagexeRE
#if PACKETVER == 20160309
- packet(0x023b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0281,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0364,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0819,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0838,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x083c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x085a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x085f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0866,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x086a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0873,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x087c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x087e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x089b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x089d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08a7,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x091d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0920,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0922,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0929,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x092a,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x092e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0932,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x094f,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0956,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x095e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x096a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x023b,clif->pDropItem,2,4);
+ packet(0x0281,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pFriendsListAdd,2);
+ packet(0x0364,clif->pStoragePassword,0);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0819,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0838,clif->pWalkToXY,2);
+ packet(0x083c,clif->pPartyInvite2,2);
+ packet(0x085a,clif->pMoveToKafra,2,4);
+ packet(0x085f,clif->pUseSkillToId,2,4,6);
+ packet(0x0866,clif->pSearchStoreInfoNextPage,0);
+ packet(0x086a,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0873,clif->pDull/*,XXX*/);
+ packet(0x087c,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x087e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x089b,clif->pItemListWindowSelected,2,4,8);
+ packet(0x089d,clif->pChangeDir,2,4);
+ packet(0x08a7,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x091d,clif->pGetCharNameRequest,2);
+ packet(0x0920,clif->pMoveFromKafra,2,4);
+ packet(0x0922,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0929,clif->pDull/*,XXX*/);
+ packet(0x092a,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x092e,clif->pReqCloseBuyingStore,0);
+ packet(0x0932,clif->pHomMenu,2,4);
+ packet(0x094f,clif->pActionRequest,2,6);
+ packet(0x0956,clif->pTickSend,2);
+ packet(0x095e,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x096a,clif->pTakeItem,2);
#endif
// 2016-03-16aRagexeRE
#if PACKETVER == 20160316
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0922,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0922,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-03-23aRagexeRE, 2016-03-23bRagexeRE
#if PACKETVER == 20160323
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0365,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0867,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0869,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x086a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0872,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0878,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0883,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0896,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x089a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x091b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0926,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0927,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0933,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x093c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0365,clif->pFriendsListAdd,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0867,clif->pDull/*,XXX*/);
+ packet(0x0869,clif->pTakeItem,2);
+ packet(0x086a,clif->pMoveFromKafra,2,4);
+ packet(0x0872,clif->pStoragePassword,0);
+ packet(0x0878,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0883,clif->pPartyInvite2,2);
+ packet(0x0896,clif->pItemListWindowSelected,2,4,8);
+ packet(0x089a,clif->pHomMenu,2,4);
+ packet(0x091b,clif->pDull/*,XXX*/);
+ packet(0x0926,clif->pMoveToKafra,2,4);
+ packet(0x0927,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0933,clif->pChangeDir,2,4);
+ packet(0x093c,clif->pDropItem,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-03-30aRagexeRE
#if PACKETVER == 20160330
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0365,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0867,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x086d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0878,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x087f,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0889,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x088b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x088d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0918,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0925,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x092a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x092c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0930,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0939,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x093b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0365,clif->pStoragePassword,0);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0867,clif->pPartyInvite2,2);
+ packet(0x086d,clif->pTakeItem,2);
+ packet(0x0878,clif->pDull/*,XXX*/);
+ packet(0x087f,clif->pMoveFromKafra,2,4);
+ packet(0x0889,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x088b,clif->pHomMenu,2,4);
+ packet(0x088d,clif->pDull/*,XXX*/);
+ packet(0x0918,clif->pMoveToKafra,2,4);
+ packet(0x0925,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x092a,clif->pItemListWindowSelected,2,4,8);
+ packet(0x092c,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0930,clif->pChangeDir,2,4);
+ packet(0x0939,clif->pDropItem,2,4);
+ packet(0x093b,clif->pFriendsListAdd,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-04-06aRagexeRE
#if PACKETVER == 20160406
- packet(0x0364,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x07e4,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0819,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x085a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x085c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0869,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0877,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0878,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0879,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0884,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0892,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0895,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0898,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x089b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x089e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x08a1,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x08a9,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x08ac,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0927,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x092d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0933,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0934,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0940,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0949,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x094d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0953,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x095d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x095f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0962,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0364,clif->pSolveCharName,2);
+ packet(0x07e4,clif->pDropItem,2,4);
+ packet(0x0819,clif->pSearchStoreInfoNextPage,0);
+ packet(0x085a,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x085c,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0869,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0877,clif->pTakeItem,2);
+ packet(0x0878,clif->pFriendsListAdd,2);
+ packet(0x0879,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0884,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0892,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0895,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0898,clif->pPartyInvite2,2);
+ packet(0x089b,clif->pGetCharNameRequest,2);
+ packet(0x089e,clif->pMoveFromKafra,2,4);
+ packet(0x08a1,clif->pActionRequest,2,6);
+ packet(0x08a9,clif->pReqCloseBuyingStore,0);
+ packet(0x08ac,clif->pDull/*,XXX*/);
+ packet(0x0927,clif->pMoveToKafra,2,4);
+ packet(0x092d,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0933,clif->pChangeDir,2,4);
+ packet(0x0934,clif->pUseSkillToId,2,4,6);
+ packet(0x0940,clif->pTickSend,2);
+ packet(0x0949,clif->pItemListWindowSelected,2,4,8);
+ packet(0x094d,clif->pReqClickBuyingStore,2);
+ packet(0x0953,clif->pStoragePassword,0);
+ packet(0x095d,clif->pHomMenu,2,4);
+ packet(0x095f,clif->pWalkToXY,2);
+ packet(0x0962,clif->pDull/*,XXX*/);
#endif
// 2016-04-14aRagexeRE, 2016-04-14bRagexeRE
#if PACKETVER == 20160414
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0363,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0862,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x087a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0880,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0885,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x089e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0918,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0922,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0927,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0931,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0934,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0945,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0953,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0363,clif->pTakeItem,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0862,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x087a,clif->pDull/*,XXX*/);
+ packet(0x0880,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0885,clif->pMoveFromKafra,2,4);
+ packet(0x089e,clif->pPartyInvite2,2);
+ packet(0x0918,clif->pDull/*,XXX*/);
+ packet(0x0922,clif->pChangeDir,2,4);
+ packet(0x0927,clif->pStoragePassword,0);
+ packet(0x0931,clif->pDropItem,2,4);
+ packet(0x0934,clif->pHomMenu,2,4);
+ packet(0x0945,clif->pFriendsListAdd,2);
+ packet(0x0953,clif->pMoveToKafra,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-04-20aRagexeRE
#if PACKETVER == 20160420
- packet(0x022d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x02c4,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x035f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0864,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0870,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0872,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0874,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0884,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0888,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x088b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x08a5,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x092f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0935,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x094e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x095c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x022d,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x02c4,clif->pTickSend,2);
+ packet(0x035f,clif->pPartyInvite2,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pHomMenu,2,4);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0864,clif->pTakeItem,2);
+ packet(0x0870,clif->pDull/*,XXX*/);
+ packet(0x0872,clif->pChangeDir,2,4);
+ packet(0x0874,clif->pMoveToKafra,2,4);
+ packet(0x0884,clif->pDropItem,2,4);
+ packet(0x0888,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x088b,clif->pMoveFromKafra,2,4);
+ packet(0x08a5,clif->pStoragePassword,0);
+ packet(0x092f,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0935,clif->pFriendsListAdd,2);
+ packet(0x094e,clif->pItemListWindowSelected,2,4,8);
+ packet(0x095c,clif->pDull/*,XXX*/);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-04-27aRagexeRE
#if PACKETVER == 20160427
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0835,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0940,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0835,clif->pStoragePassword,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0940,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-05-04aRagexeRE
#if PACKETVER == 20160504
- packet(0x0202,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0363,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0365,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x083c,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x085f,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x086b,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x087f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0884,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0886,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0887,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x088a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x088d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x088f,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0890,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0893,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0898,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x089d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x08ad,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0918,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0921,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0922,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0924,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x093e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0940,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0941,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0948,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0952,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x095b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0969,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0202,clif->pHomMenu,2,4);
+ packet(0x0363,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0365,clif->pDull/*,XXX*/);
+ packet(0x083c,clif->pSearchStoreInfoNextPage,0);
+ packet(0x085f,clif->pActionRequest,2,6);
+ packet(0x086b,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x087f,clif->pReqCloseBuyingStore,0);
+ packet(0x0884,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0886,clif->pMoveToKafra,2,4);
+ packet(0x0887,clif->pPartyInvite2,2);
+ packet(0x088a,clif->pTakeItem,2);
+ packet(0x088d,clif->pUseSkillToId,2,4,6);
+ packet(0x088f,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0890,clif->pDropItem,2,4);
+ packet(0x0893,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0898,clif->pDull/*,XXX*/);
+ packet(0x089d,clif->pSolveCharName,2);
+ packet(0x08ad,clif->pChangeDir,2,4);
+ packet(0x0918,clif->pTickSend,2);
+ packet(0x0921,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0922,clif->pGetCharNameRequest,2);
+ packet(0x0924,clif->pWalkToXY,2);
+ packet(0x093e,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0940,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0941,clif->pMoveFromKafra,2,4);
+ packet(0x0948,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0952,clif->pFriendsListAdd,2);
+ packet(0x095b,clif->pReqClickBuyingStore,2);
+ packet(0x0969,clif->pStoragePassword,0);
#endif
// 2016-05-11aRagexeRE, 2016-05-11bRagexeRE
#if PACKETVER == 20160511
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0894,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x089b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0918,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0920,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0940,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085e,clif->pChangeDir,2,4);
+ packet(0x0894,clif->pFriendsListAdd,2);
+ packet(0x089b,clif->pDull/*,XXX*/);
+ packet(0x0918,clif->pHomMenu,2,4);
+ packet(0x0920,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0940,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-05-18aRagexeRE
#if PACKETVER == 20160518
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x086c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0874,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x089a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08a9,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0928,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x086c,clif->pChangeDir,2,4);
+ packet(0x0874,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x089a,clif->pStoragePassword,0);
+ packet(0x08a9,clif->pFriendsListAdd,2);
+ packet(0x0928,clif->pHomMenu,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-05-25aRagexeRE
#if PACKETVER == 20160525
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x085e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0867,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x086a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0899,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x089c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x091d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x092c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0937,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0945,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x094a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x094e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0951,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0956,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085a,clif->pDull/*,XXX*/);
+ packet(0x085e,clif->pDropItem,2,4);
+ packet(0x0867,clif->pHomMenu,2,4);
+ packet(0x086a,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0899,clif->pTakeItem,2);
+ packet(0x089c,clif->pChangeDir,2,4);
+ packet(0x091d,clif->pStoragePassword,0);
+ packet(0x092c,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0937,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0945,clif->pPartyInvite2,2);
+ packet(0x094a,clif->pMoveToKafra,2,4);
+ packet(0x094e,clif->pDull/*,XXX*/);
+ packet(0x0951,clif->pFriendsListAdd,2);
+ packet(0x0956,clif->pMoveFromKafra,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-06-01aRagexeRE
#if PACKETVER == 20160601
- packet(0x0202,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x02c4,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0863,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0870,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x087d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x088d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x088f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0895,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x08a7,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x08ac,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0924,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x095b,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x095f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0961,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pReqCloseBuyingStore,0);
+ packet(0x02c4,clif->pPartyInvite2,2);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pFriendsListAdd,2);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0863,clif->pTakeItem,2);
+ packet(0x0870,clif->pMoveFromKafra,2,4);
+ packet(0x087d,clif->pItemListWindowSelected,2,4,8);
+ packet(0x088d,clif->pDropItem,2,4);
+ packet(0x088f,clif->pMoveToKafra,2,4);
+ packet(0x0895,clif->pHomMenu,2,4);
+ packet(0x08a7,clif->pDull/*,XXX*/);
+ packet(0x08ac,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0924,clif->pDull/*,XXX*/);
+ packet(0x095b,clif->pChangeDir,2,4);
+ packet(0x095f,clif->pStoragePassword,0);
+ packet(0x0961,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-06-08aRagexeRE, 2016-06-08bRagexeRE
#if PACKETVER == 20160608
- packet(0x022d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x02c4,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x035f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0437,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07ec,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0802,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0885,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0889,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0899,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x089b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x08a6,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x093b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x094d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0958,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x095b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0969,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x022d,clif->pItemListWindowSelected,2,4,8);
+ packet(0x02c4,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x035f,clif->pPartyInvite2,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pWalkToXY,2);
+ packet(0x0437,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07ec,clif->pChangeDir,2,4);
+ packet(0x0802,clif->pTickSend,2);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085c,clif->pDull/*,XXX*/);
+ packet(0x0885,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0889,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0899,clif->pTakeItem,2);
+ packet(0x089b,clif->pHomMenu,2,4);
+ packet(0x08a6,clif->pMoveFromKafra,2,4);
+ packet(0x093b,clif->pDull/*,XXX*/);
+ packet(0x094d,clif->pDropItem,2,4);
+ packet(0x0958,clif->pStoragePassword,0);
+ packet(0x095b,clif->pMoveToKafra,2,4);
+ packet(0x0969,clif->pFriendsListAdd,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-06-15aRagexeRE
#if PACKETVER == 20160615
- packet(0x0281,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0363,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0364,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0369,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x083c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0866,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0870,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x087d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x087e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x087f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0884,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0887,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0888,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x088a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x088d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0891,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0898,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x092f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x093e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0947,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0948,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x094a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x094b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0954,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0957,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0958,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x095c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x095e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0961,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x0281,clif->pFriendsListAdd,2);
+ packet(0x0363,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0364,clif->pStoragePassword,0);
+ packet(0x0369,clif->pHomMenu,2,4);
+ packet(0x083c,clif->pGetCharNameRequest,2);
+ packet(0x0866,clif->pWalkToXY,2);
+ packet(0x0870,clif->pDull/*,XXX*/);
+ packet(0x087d,clif->pSolveCharName,2);
+ packet(0x087e,clif->pTakeItem,2);
+ packet(0x087f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0884,clif->pDull/*,XXX*/);
+ packet(0x0887,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0888,clif->pUseSkillToId,2,4,6);
+ packet(0x088a,clif->pTickSend,2);
+ packet(0x088d,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0891,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0898,clif->pDropItem,2,4);
+ packet(0x092f,clif->pSearchStoreInfoNextPage,0);
+ packet(0x093e,clif->pPartyInvite2,2);
+ packet(0x0947,clif->pReqCloseBuyingStore,0);
+ packet(0x0948,clif->pActionRequest,2,6);
+ packet(0x094a,clif->pReqClickBuyingStore,2);
+ packet(0x094b,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0954,clif->pChangeDir,2,4);
+ packet(0x0957,clif->pMoveToKafra,2,4);
+ packet(0x0958,clif->pMoveFromKafra,2,4);
+ packet(0x095c,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x095e,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0961,clif->pSearchStoreInfoListItemClick,2,6,10);
#endif
// 2016-06-22aRagexeRE
#if PACKETVER == 20160622
- packet(0x023b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x035f,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0361,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x07e4,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0861,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0865,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0867,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0880,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0887,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0890,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0891,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0892,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x089a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x089e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x08a2,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x08a8,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x091c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x092d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x092f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0936,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0937,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x093b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x093f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0946,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0959,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0965,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0969,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x023b,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x035f,clif->pMoveFromKafra,2,4);
+ packet(0x0361,clif->pPartyInvite2,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x07e4,clif->pHomMenu,2,4);
+ packet(0x0861,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0865,clif->pDull/*,XXX*/);
+ packet(0x0867,clif->pDull/*,XXX*/);
+ packet(0x0880,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0887,clif->pReqCloseBuyingStore,0);
+ packet(0x0890,clif->pFriendsListAdd,2);
+ packet(0x0891,clif->pReqClickBuyingStore,2);
+ packet(0x0892,clif->pSearchStoreInfoNextPage,0);
+ packet(0x089a,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x089e,clif->pActionRequest,2,6);
+ packet(0x08a2,clif->pSolveCharName,2);
+ packet(0x08a8,clif->pStoragePassword,0);
+ packet(0x091c,clif->pTakeItem,2);
+ packet(0x092d,clif->pTickSend,2);
+ packet(0x092f,clif->pUseSkillToId,2,4,6);
+ packet(0x0936,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0937,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x093b,clif->pMoveToKafra,2,4);
+ packet(0x093f,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0946,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0959,clif->pGetCharNameRequest,2);
+ packet(0x0965,clif->pChangeDir,2,4);
+ packet(0x0969,clif->pDropItem,2,4);
#endif
// 2016-06-29aRagexeRE, 2016-06-30aRagexeRE
#if PACKETVER == 20160629 || \
PACKETVER == 20160630
- packet(0x0202,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x022d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x035f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0363,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0368,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x085c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x085e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0860,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0861,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0863,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0867,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x086b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0881,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0885,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x088e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0893,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x091e,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0922,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0925,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0926,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x093e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0946,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0948,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x094a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0957,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x095a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0968,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0969,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x096a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0202,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x022d,clif->pWalkToXY,2);
+ packet(0x035f,clif->pDull/*,XXX*/);
+ packet(0x0363,clif->pReqClickBuyingStore,2);
+ packet(0x0368,clif->pItemListWindowSelected,2,4,8);
+ packet(0x085c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x085e,clif->pDull/*,XXX*/);
+ packet(0x0860,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0861,clif->pDropItem,2,4);
+ packet(0x0863,clif->pSolveCharName,2);
+ packet(0x0867,clif->pStoragePassword,0);
+ packet(0x086b,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0881,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0885,clif->pHomMenu,2,4);
+ packet(0x088e,clif->pGetCharNameRequest,2);
+ packet(0x0893,clif->pTickSend,2);
+ packet(0x091e,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0922,clif->pMoveFromKafra,2,4);
+ packet(0x0925,clif->pUseSkillToId,2,4,6);
+ packet(0x0926,clif->pPartyInvite2,2);
+ packet(0x093e,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0946,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0948,clif->pChangeDir,2,4);
+ packet(0x094a,clif->pFriendsListAdd,2);
+ packet(0x0957,clif->pReqCloseBuyingStore,0);
+ packet(0x095a,clif->pActionRequest,2,6);
+ packet(0x0968,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0969,clif->pTakeItem,2);
+ packet(0x096a,clif->pMoveToKafra,2,4);
#endif
// 2016-07-06cRagexeRE
#if PACKETVER == 20160706
- packet(0x0362,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0436,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x085f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0860,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0869,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x086b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0884,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0886,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0889,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0892,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0899,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x08a4,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x08a5,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x08a8,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0918,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x091b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0924,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0926,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0927,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0929,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x092d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0939,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x093d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0944,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0945,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x094c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0952,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0957,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0958,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0362,clif->pSolveCharName,2);
+ packet(0x0436,clif->pReqClickBuyingStore,2);
+ packet(0x085f,clif->pPartyInvite2,2);
+ packet(0x0860,clif->pActionRequest,2,6);
+ packet(0x0869,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x086b,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0884,clif->pFriendsListAdd,2);
+ packet(0x0886,clif->pDull/*,XXX*/);
+ packet(0x0889,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0892,clif->pHomMenu,2,4);
+ packet(0x0899,clif->pUseSkillToId,2,4,6);
+ packet(0x08a4,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x08a5,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x08a8,clif->pTickSend,2);
+ packet(0x0918,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x091b,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0924,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0926,clif->pChangeDir,2,4);
+ packet(0x0927,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0929,clif->pMoveFromKafra,2,4);
+ packet(0x092d,clif->pWalkToXY,2);
+ packet(0x0939,clif->pMoveToKafra,2,4);
+ packet(0x093d,clif->pDropItem,2,4);
+ packet(0x0944,clif->pDull/*,XXX*/);
+ packet(0x0945,clif->pGetCharNameRequest,2);
+ packet(0x094c,clif->pStoragePassword,0);
+ packet(0x0952,clif->pReqCloseBuyingStore,0);
+ packet(0x0957,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0958,clif->pTakeItem,2);
#endif
// 2016-07-13aRagexeRE, 2016-07-13bRagexeRE
#if PACKETVER == 20160713
- packet(0x022d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0363,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0364,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0838,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0860,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0865,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0869,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0875,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0877,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x087b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0883,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x088d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0892,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x089a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x089f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x08a2,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x08a4,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x091c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x091d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0921,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0922,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x092c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0931,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0939,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0944,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0945,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0947,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0957,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x095b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x022d,clif->pStoragePassword,0);
+ packet(0x0363,clif->pChangeDir,2,4);
+ packet(0x0364,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0838,clif->pTakeItem,2);
+ packet(0x0860,clif->pReqClickBuyingStore,2);
+ packet(0x0865,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0869,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0875,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0877,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x087b,clif->pTickSend,2);
+ packet(0x0883,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x088d,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0892,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x089a,clif->pPartyInvite2,2);
+ packet(0x089f,clif->pDull/*,XXX*/);
+ packet(0x08a2,clif->pMoveFromKafra,2,4);
+ packet(0x08a4,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x091c,clif->pWalkToXY,2);
+ packet(0x091d,clif->pSolveCharName,2);
+ packet(0x0921,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0922,clif->pHomMenu,2,4);
+ packet(0x092c,clif->pGetCharNameRequest,2);
+ packet(0x0931,clif->pUseSkillToId,2,4,6);
+ packet(0x0939,clif->pFriendsListAdd,2);
+ packet(0x0944,clif->pReqCloseBuyingStore,0);
+ packet(0x0945,clif->pActionRequest,2,6);
+ packet(0x0947,clif->pMoveToKafra,2,4);
+ packet(0x0957,clif->pDropItem,2,4);
+ packet(0x095b,clif->pDull/*,XXX*/);
#endif
// 2016-07-20aRagexeRE, 2016-07-20bRagexeRE
#if PACKETVER == 20160720
- packet(0x0362,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0363,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0365,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x07e4,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0838,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x085b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x086a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x086d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x087f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0883,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0887,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0897,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x089a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x089c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x089e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x08a0,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x08aa,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0917,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x091c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x092a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x093b,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x093e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0946,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x094d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0953,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x095b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0960,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0969,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0362,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0363,clif->pUseSkillToId,2,4,6);
+ packet(0x0365,clif->pActionRequest,2,6);
+ packet(0x07e4,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0838,clif->pWalkToXY,2);
+ packet(0x085b,clif->pReqCloseBuyingStore,0);
+ packet(0x086a,clif->pSearchStoreInfoNextPage,0);
+ packet(0x086d,clif->pReqClickBuyingStore,2);
+ packet(0x087f,clif->pDropItem,2,4);
+ packet(0x0883,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0887,clif->pGetCharNameRequest,2);
+ packet(0x0897,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x089a,clif->pStoragePassword,0);
+ packet(0x089c,clif->pHomMenu,2,4);
+ packet(0x089e,clif->pMoveFromKafra,2,4);
+ packet(0x08a0,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x08aa,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0917,clif->pDull/*,XXX*/);
+ packet(0x091c,clif->pTakeItem,2);
+ packet(0x092a,clif->pFriendsListAdd,2);
+ packet(0x093b,clif->pChangeDir,2,4);
+ packet(0x093e,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0946,clif->pTickSend,2);
+ packet(0x094d,clif->pSolveCharName,2);
+ packet(0x0953,clif->pDull/*,XXX*/);
+ packet(0x095b,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0960,clif->pMoveToKafra,2,4);
+ packet(0x0969,clif->pPartyInvite2,2);
#endif
// 2016-07-27aRagexeRE, 2016-07-27bRagexeRE
#if PACKETVER == 20160727
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x023b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0362,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0363,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0436,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0438,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x07ec,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0866,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0868,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0869,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0874,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0877,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0883,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0887,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x088e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0891,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x089f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x08a2,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08a4,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x08a7,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x092e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0936,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0941,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0946,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0949,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0951,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x095f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0966,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0969,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x023b,clif->pDull/*,XXX*/);
+ packet(0x0362,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0363,clif->pFriendsListAdd,2);
+ packet(0x0436,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0438,clif->pTickSend,2);
+ packet(0x07ec,clif->pDropItem,2,4);
+ packet(0x0866,clif->pDull/*,XXX*/);
+ packet(0x0868,clif->pPartyInvite2,2);
+ packet(0x0869,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0874,clif->pReqClickBuyingStore,2);
+ packet(0x0877,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0883,clif->pActionRequest,2,6);
+ packet(0x0887,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x088e,clif->pUseSkillToId,2,4,6);
+ packet(0x0891,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x089f,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x08a2,clif->pStoragePassword,0);
+ packet(0x08a4,clif->pSolveCharName,2);
+ packet(0x08a7,clif->pTakeItem,2);
+ packet(0x092e,clif->pWalkToXY,2);
+ packet(0x0936,clif->pHomMenu,2,4);
+ packet(0x0941,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0946,clif->pGetCharNameRequest,2);
+ packet(0x0949,clif->pMoveFromKafra,2,4);
+ packet(0x0951,clif->pMoveToKafra,2,4);
+ packet(0x095f,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0966,clif->pReqCloseBuyingStore,0);
+ packet(0x0969,clif->pItemListWindowSelected,2,4,8);
#endif
// 2016-08-03bRagexeRE
#if PACKETVER == 20160803
- packet(0x0364,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x085d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0878,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x087f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0881,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0886,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0887,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0888,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x088b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0891,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0895,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x089c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x089e,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x08a1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x091b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0929,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0930,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0932,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0934,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0937,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x093a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x093e,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x093f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0952,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0955,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0956,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0959,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x095a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x096a,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0364,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x085d,clif->pReqClickBuyingStore,2);
+ packet(0x0878,clif->pDull/*,XXX*/);
+ packet(0x087f,clif->pWalkToXY,2);
+ packet(0x0881,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0886,clif->pMoveToKafra,2,4);
+ packet(0x0887,clif->pGetCharNameRequest,2);
+ packet(0x0888,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x088b,clif->pReqCloseBuyingStore,0);
+ packet(0x0891,clif->pChangeDir,2,4);
+ packet(0x0895,clif->pFriendsListAdd,2);
+ packet(0x089c,clif->pDropItem,2,4);
+ packet(0x089e,clif->pSearchStoreInfoNextPage,0);
+ packet(0x08a1,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x091b,clif->pTakeItem,2);
+ packet(0x0929,clif->pStoragePassword,0);
+ packet(0x0930,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0932,clif->pUseSkillToId,2,4,6);
+ packet(0x0934,clif->pActionRequest,2,6);
+ packet(0x0937,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x093a,clif->pDull/*,XXX*/);
+ packet(0x093e,clif->pTickSend,2);
+ packet(0x093f,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0952,clif->pHomMenu,2,4);
+ packet(0x0955,clif->pMoveFromKafra,2,4);
+ packet(0x0956,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0959,clif->pSolveCharName,2);
+ packet(0x095a,clif->pPartyInvite2,2);
+ packet(0x096a,clif->pReqTradeBuyingStore,2,4,8,12);
#endif
// 2016-08-10aRagexeRE
#if PACKETVER == 20160810
- packet(0x0361,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0819,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0838,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x085d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x085e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x085f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0860,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x086f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0875,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0879,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x087a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0885,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0888,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0890,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x089d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x089f,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x08a9,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x091a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x091b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x091c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0926,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x092b,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x092d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0935,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0943,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x094b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0959,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x095b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0967,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0361,clif->pStoragePassword,0);
+ packet(0x0819,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0838,clif->pPartyInvite2,2);
+ packet(0x085d,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x085e,clif->pDropItem,2,4);
+ packet(0x085f,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0860,clif->pSolveCharName,2);
+ packet(0x086f,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0875,clif->pHomMenu,2,4);
+ packet(0x0879,clif->pReqClickBuyingStore,2);
+ packet(0x087a,clif->pWalkToXY,2);
+ packet(0x0885,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0888,clif->pFriendsListAdd,2);
+ packet(0x0890,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x089d,clif->pChangeDir,2,4);
+ packet(0x089f,clif->pItemListWindowSelected,2,4,8);
+ packet(0x08a9,clif->pMoveToKafra,2,4);
+ packet(0x091a,clif->pTakeItem,2);
+ packet(0x091b,clif->pGetCharNameRequest,2);
+ packet(0x091c,clif->pUseSkillToId,2,4,6);
+ packet(0x0926,clif->pDull/*,XXX*/);
+ packet(0x092b,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x092d,clif->pMoveFromKafra,2,4);
+ packet(0x0935,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0943,clif->pTickSend,2);
+ packet(0x094b,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0959,clif->pReqCloseBuyingStore,0);
+ packet(0x095b,clif->pActionRequest,2,6);
+ packet(0x0967,clif->pDull/*,XXX*/);
#endif
// 2016-08-17aRagexeRE
#if PACKETVER == 20160817
- packet(0x0364,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0437,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x07e4,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0811,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0819,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x083c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x085c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0867,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x086b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0875,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x087f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0886,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0891,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x089c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x08a5,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08a6,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x08a9,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x08ab,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x08ac,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x08ad,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x091b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0929,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x092d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0930,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0939,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x093c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0957,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0960,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0963,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0364,clif->pReqClickBuyingStore,2);
+ packet(0x0437,clif->pFriendsListAdd,2);
+ packet(0x07e4,clif->pGetCharNameRequest,2);
+ packet(0x0811,clif->pDull/*,XXX*/);
+ packet(0x0819,clif->pTickSend,2);
+ packet(0x083c,clif->pItemListWindowSelected,2,4,8);
+ packet(0x085c,clif->pTakeItem,2);
+ packet(0x0867,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x086b,clif->pSolveCharName,2);
+ packet(0x0875,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x087f,clif->pDropItem,2,4);
+ packet(0x0886,clif->pActionRequest,2,6);
+ packet(0x0891,clif->pUseSkillToId,2,4,6);
+ packet(0x089c,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x08a5,clif->pStoragePassword,0);
+ packet(0x08a6,clif->pPartyInvite2,2);
+ packet(0x08a9,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x08ab,clif->pHomMenu,2,4);
+ packet(0x08ac,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x08ad,clif->pMoveToKafra,2,4);
+ packet(0x091b,clif->pReqCloseBuyingStore,0);
+ packet(0x0929,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x092d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0930,clif->pWalkToXY,2);
+ packet(0x0939,clif->pMoveFromKafra,2,4);
+ packet(0x093c,clif->pDull/*,XXX*/);
+ packet(0x0957,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0960,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0963,clif->pChangeDir,2,4);
#endif
// 2016-08-24aRagexeRE
#if PACKETVER == 20160824
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0934,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0934,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-08-31aRagexeRE, 2016-08-31bRagexeRE
#if PACKETVER == 20160831
- packet(0x022d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0366,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x07ec,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0835,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0865,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x086d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0870,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0874,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0876,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0878,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x087c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x08a8,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x08a9,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0917,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x091b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x092c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x092e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0938,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x093a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0946,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x094a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x094f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0950,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0954,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0957,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x095e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0960,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0964,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0967,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x022d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0366,clif->pDropItem,2,4);
+ packet(0x07ec,clif->pReqClickBuyingStore,2);
+ packet(0x0835,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0865,clif->pWalkToXY,2);
+ packet(0x086d,clif->pReqCloseBuyingStore,0);
+ packet(0x0870,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0874,clif->pPartyInvite2,2);
+ packet(0x0876,clif->pDull/*,XXX*/);
+ packet(0x0878,clif->pActionRequest,2,6);
+ packet(0x087c,clif->pGetCharNameRequest,2);
+ packet(0x08a8,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x08a9,clif->pTickSend,2);
+ packet(0x0917,clif->pStoragePassword,0);
+ packet(0x091b,clif->pDull/*,XXX*/);
+ packet(0x092c,clif->pFriendsListAdd,2);
+ packet(0x092e,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0938,clif->pSearchStoreInfoNextPage,0);
+ packet(0x093a,clif->pHomMenu,2,4);
+ packet(0x0946,clif->pSolveCharName,2);
+ packet(0x094a,clif->pChangeDir,2,4);
+ packet(0x094f,clif->pMoveToKafra,2,4);
+ packet(0x0950,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0954,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0957,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x095e,clif->pMoveFromKafra,2,4);
+ packet(0x0960,clif->pTakeItem,2);
+ packet(0x0964,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0967,clif->pUseSkillToId,2,4,6);
#endif
// 2016-09-07aRagexeRE
#if PACKETVER == 20160907
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x091c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x091c,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-09-13aRagexeRE
#if PACKETVER == 20160913
- packet(0x0361,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0817,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x085b,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0865,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0874,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0875,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0879,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x087a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x087b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0887,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0889,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x088e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x088f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0891,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0892,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x089b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x089c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08a5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0928,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0935,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x093a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0949,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x094a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0950,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0952,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0954,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0962,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0963,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0968,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0361,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0817,clif->pMoveToKafra,2,4);
+ packet(0x085b,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0865,clif->pGetCharNameRequest,2);
+ packet(0x0874,clif->pReqClickBuyingStore,2);
+ packet(0x0875,clif->pTickSend,2);
+ packet(0x0879,clif->pDropItem,2,4);
+ packet(0x087a,clif->pDull/*,XXX*/);
+ packet(0x087b,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0887,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0889,clif->pTakeItem,2);
+ packet(0x088e,clif->pUseSkillToId,2,4,6);
+ packet(0x088f,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0891,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0892,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x089b,clif->pMoveFromKafra,2,4);
+ packet(0x089c,clif->pStoragePassword,0);
+ packet(0x08a5,clif->pChangeDir,2,4);
+ packet(0x0928,clif->pFriendsListAdd,2);
+ packet(0x0935,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x093a,clif->pHomMenu,2,4);
+ packet(0x0949,clif->pPartyInvite2,2);
+ packet(0x094a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0950,clif->pActionRequest,2,6);
+ packet(0x0952,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0954,clif->pWalkToXY,2);
+ packet(0x0962,clif->pDull/*,XXX*/);
+ packet(0x0963,clif->pSolveCharName,2);
+ packet(0x0968,clif->pReqCloseBuyingStore,0);
#endif
// 2016-09-21bRagexeRE
#if PACKETVER == 20160921
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x094a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x094a,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-09-28cRagexeRE, 2016-09-28dRagexeRE
#if PACKETVER == 20160928
- packet(0x0202,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0366,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0436,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0811,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0838,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0864,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0866,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x086d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0872,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0878,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x087f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0889,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x088e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0897,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x089a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x08a2,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08a9,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0919,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x091e,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0927,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x092d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0944,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x094d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x094e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0953,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0955,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0957,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x095a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x0202,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pGetCharNameRequest,2);
+ packet(0x0366,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0436,clif->pReqClickBuyingStore,2);
+ packet(0x0811,clif->pDull/*,XXX*/);
+ packet(0x0838,clif->pPartyInvite2,2);
+ packet(0x0864,clif->pMoveFromKafra,2,4);
+ packet(0x0866,clif->pSearchStoreInfoNextPage,0);
+ packet(0x086d,clif->pDropItem,2,4);
+ packet(0x0872,clif->pHomMenu,2,4);
+ packet(0x0878,clif->pSolveCharName,2);
+ packet(0x087f,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0889,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x088e,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0897,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x089a,clif->pActionRequest,2,6);
+ packet(0x08a2,clif->pStoragePassword,0);
+ packet(0x08a9,clif->pMoveToKafra,2,4);
+ packet(0x0919,clif->pWalkToXY,2);
+ packet(0x091e,clif->pTickSend,2);
+ packet(0x0927,clif->pUseSkillToId,2,4,6);
+ packet(0x092d,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0944,clif->pChangeDir,2,4);
+ packet(0x094d,clif->pReqCloseBuyingStore,0);
+ packet(0x094e,clif->pFriendsListAdd,2);
+ packet(0x0953,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0955,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0957,clif->pTakeItem,2);
+ packet(0x095a,clif->pDull/*,XXX*/);
#endif
// 2016-10-05aRagexeRE
#if PACKETVER == 20161005
- packet(0x0202,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0838,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0863,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0886,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x088e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0891,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0892,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x089b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x089c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08a0,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08ac,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x08ad,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0918,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0919,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x091e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x092b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0931,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0932,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x093b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0942,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0944,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0945,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x094a,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x094d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0952,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x095a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x095b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0967,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0202,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pActionRequest,2,6);
+ packet(0x0838,clif->pStoragePassword,0);
+ packet(0x0863,clif->pGetCharNameRequest,2);
+ packet(0x0886,clif->pItemListWindowSelected,2,4,8);
+ packet(0x088e,clif->pMoveFromKafra,2,4);
+ packet(0x0891,clif->pChangeDir,2,4);
+ packet(0x0892,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x089b,clif->pPartyInvite2,2);
+ packet(0x089c,clif->pTakeItem,2);
+ packet(0x08a0,clif->pMoveToKafra,2,4);
+ packet(0x08ac,clif->pReqCloseBuyingStore,0);
+ packet(0x08ad,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0918,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0919,clif->pSolveCharName,2);
+ packet(0x091e,clif->pDull/*,XXX*/);
+ packet(0x092b,clif->pTickSend,2);
+ packet(0x0931,clif->pFriendsListAdd,2);
+ packet(0x0932,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x093b,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0942,clif->pDropItem,2,4);
+ packet(0x0944,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0945,clif->pWalkToXY,2);
+ packet(0x094a,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x094d,clif->pHomMenu,2,4);
+ packet(0x0952,clif->pDull/*,XXX*/);
+ packet(0x095a,clif->pReqClickBuyingStore,2);
+ packet(0x095b,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0967,clif->pUseSkillToId,2,4,6);
#endif
// 2016-10-12aRagexeRE
#if PACKETVER == 20161012
- packet(0x023b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0364,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0365,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0369,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x07ec,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0819,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x085b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x085e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0863,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0868,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x086d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0872,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0875,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0880,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0893,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08a0,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x092d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0936,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0937,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0939,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0943,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0944,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x094f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0951,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x095c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0962,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0966,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0967,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x023b,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0364,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0365,clif->pTickSend,2);
+ packet(0x0369,clif->pPartyInvite2,2);
+ packet(0x07ec,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0819,clif->pFriendsListAdd,2);
+ packet(0x085b,clif->pDull/*,XXX*/);
+ packet(0x085e,clif->pReqCloseBuyingStore,0);
+ packet(0x0863,clif->pActionRequest,2,6);
+ packet(0x0868,clif->pTakeItem,2);
+ packet(0x086d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0872,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0875,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0880,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0893,clif->pMoveToKafra,2,4);
+ packet(0x08a0,clif->pChangeDir,2,4);
+ packet(0x092d,clif->pSolveCharName,2);
+ packet(0x0936,clif->pGetCharNameRequest,2);
+ packet(0x0937,clif->pReqClickBuyingStore,2);
+ packet(0x0939,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0943,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0944,clif->pMoveFromKafra,2,4);
+ packet(0x094f,clif->pDull/*,XXX*/);
+ packet(0x0951,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x095c,clif->pHomMenu,2,4);
+ packet(0x0962,clif->pUseSkillToId,2,4,6);
+ packet(0x0966,clif->pWalkToXY,2);
+ packet(0x0967,clif->pStoragePassword,0);
#endif
// 2016-10-19aRagexeRE
#if PACKETVER == 20161019
- packet(0x022d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0361,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0889,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0892,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0946,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0963,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x022d,clif->pReqClickBuyingStore,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pHomMenu,2,4);
+ packet(0x0361,clif->pWalkToXY,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pChangeDir,2,4);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0889,clif->pStoragePassword,0);
+ packet(0x0892,clif->pDull/*,XXX*/);
+ packet(0x0946,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0963,clif->pFriendsListAdd,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-10-26bRagexeRE, 2016-10-26cRagexeRE
#if PACKETVER == 20161026
- packet(0x0363,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0438,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x085a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x085f,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0861,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0862,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x086a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x086c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x086e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x087a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x087c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x087f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0886,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0891,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0894,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0898,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x091a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x091b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0926,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x092c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x092e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x092f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0930,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x094b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0953,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x095c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x095e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0962,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0363,clif->pStoragePassword,0);
+ packet(0x0438,clif->pWalkToXY,2);
+ packet(0x0802,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x085a,clif->pMoveToKafra,2,4);
+ packet(0x085f,clif->pActionRequest,2,6);
+ packet(0x0861,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0862,clif->pTickSend,2);
+ packet(0x086a,clif->pSearchStoreInfoNextPage,0);
+ packet(0x086c,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x086e,clif->pDull/*,XXX*/);
+ packet(0x087a,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x087c,clif->pDull/*,XXX*/);
+ packet(0x087f,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0886,clif->pDropItem,2,4);
+ packet(0x0891,clif->pReqClickBuyingStore,2);
+ packet(0x0894,clif->pUseSkillToId,2,4,6);
+ packet(0x0898,clif->pFriendsListAdd,2);
+ packet(0x091a,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x091b,clif->pTakeItem,2);
+ packet(0x0926,clif->pSolveCharName,2);
+ packet(0x092c,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x092e,clif->pHomMenu,2,4);
+ packet(0x092f,clif->pReqCloseBuyingStore,0);
+ packet(0x0930,clif->pGetCharNameRequest,2);
+ packet(0x094b,clif->pMoveFromKafra,2,4);
+ packet(0x0953,clif->pPartyInvite2,2);
+ packet(0x095c,clif->pItemListWindowSelected,2,4,8);
+ packet(0x095e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0962,clif->pChangeDir,2,4);
#endif
// 2016-11-02aRagexeRE, 2016-11-03aRagexeRE
#if PACKETVER == 20161102 || \
PACKETVER == 20161103
- packet(0x0361,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0367,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0436,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0802,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0838,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x083c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x085f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0869,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x086c,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x086f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0874,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0886,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x088f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0890,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x089f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x08a2,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x08aa,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x091b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0922,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0925,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0928,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x092f,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0936,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0946,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0949,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x095e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0964,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0965,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0966,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0361,clif->pMoveFromKafra,2,4);
+ packet(0x0367,clif->pDull/*,XXX*/);
+ packet(0x0436,clif->pActionRequest,2,6);
+ packet(0x0802,clif->pTakeItem,2);
+ packet(0x0838,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x083c,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x085f,clif->pUseSkillToId,2,4,6);
+ packet(0x0869,clif->pMoveToKafra,2,4);
+ packet(0x086c,clif->pSearchStoreInfoNextPage,0);
+ packet(0x086f,clif->pDull/*,XXX*/);
+ packet(0x0874,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0886,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x088f,clif->pHomMenu,2,4);
+ packet(0x0890,clif->pDropItem,2,4);
+ packet(0x089f,clif->pPartyInvite2,2);
+ packet(0x08a2,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x08aa,clif->pWalkToXY,2);
+ packet(0x091b,clif->pStoragePassword,0);
+ packet(0x0922,clif->pReqClickBuyingStore,2);
+ packet(0x0925,clif->pSolveCharName,2);
+ packet(0x0928,clif->pFriendsListAdd,2);
+ packet(0x092f,clif->pGetCharNameRequest,2);
+ packet(0x0936,clif->pReqCloseBuyingStore,0);
+ packet(0x0946,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0949,clif->pChangeDir,2,4);
+ packet(0x095e,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0964,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0965,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0966,clif->pTickSend,2);
#endif
// 2016-11-09aRagexeRE, 2016-11-09bRagexeRE, 2016-11-09cRagexeRE, 2016-11-09dRagexeRE
#if PACKETVER == 20161109
- packet(0x02c4,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0361,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0362,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0366,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x085d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x085e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0865,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x086a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x086d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0870,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0876,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x087a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0881,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x088e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0891,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0898,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x089a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x089d,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x089f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x08a7,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x08ad,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0927,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0937,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x093c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x093f,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0954,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0956,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x02c4,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0361,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0362,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pTickSend,2);
+ packet(0x0366,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSolveCharName,2);
+ packet(0x085d,clif->pReqCloseBuyingStore,0);
+ packet(0x085e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0865,clif->pWalkToXY,2);
+ packet(0x086a,clif->pActionRequest,2,6);
+ packet(0x086d,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0870,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0876,clif->pReqClickBuyingStore,2);
+ packet(0x087a,clif->pDull/*,XXX*/);
+ packet(0x0881,clif->pMoveToKafra,2,4);
+ packet(0x088e,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0891,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0898,clif->pTakeItem,2);
+ packet(0x089a,clif->pDropItem,2,4);
+ packet(0x089d,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x089f,clif->pDull/*,XXX*/);
+ packet(0x08a7,clif->pHomMenu,2,4);
+ packet(0x08ad,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0927,clif->pPartyInvite2,2);
+ packet(0x0937,clif->pFriendsListAdd,2);
+ packet(0x093c,clif->pStoragePassword,0);
+ packet(0x093f,clif->pGetCharNameRequest,2);
+ packet(0x0954,clif->pUseSkillToId,2,4,6);
+ packet(0x0956,clif->pChangeDir,2,4);
#endif
// 2016-11-16bRagexeRE, 2016-11-16cRagexeRE
#if PACKETVER == 20161116
- packet(0x0368,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0369,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0835,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x085f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0864,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x086f,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0885,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x088b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x088d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x088f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0890,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0892,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0893,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x08a1,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08a2,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x08aa,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x08ac,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0920,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0925,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x092a,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0931,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x093c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x094a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0952,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0957,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x095b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x095d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x095f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0967,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0368,clif->pTickSend,2);
+ packet(0x0369,clif->pMoveToKafra,2,4);
+ packet(0x0835,clif->pFriendsListAdd,2);
+ packet(0x085f,clif->pDropItem,2,4);
+ packet(0x0864,clif->pPartyInvite2,2);
+ packet(0x086f,clif->pTakeItem,2);
+ packet(0x0885,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x088b,clif->pHomMenu,2,4);
+ packet(0x088d,clif->pReqClickBuyingStore,2);
+ packet(0x088f,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0890,clif->pWalkToXY,2);
+ packet(0x0892,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0893,clif->pActionRequest,2,6);
+ packet(0x08a1,clif->pChangeDir,2,4);
+ packet(0x08a2,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x08aa,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x08ac,clif->pMoveFromKafra,2,4);
+ packet(0x0920,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0925,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x092a,clif->pUseSkillToId,2,4,6);
+ packet(0x0931,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x093c,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x094a,clif->pGetCharNameRequest,2);
+ packet(0x0952,clif->pReqCloseBuyingStore,0);
+ packet(0x0957,clif->pSolveCharName,2);
+ packet(0x095b,clif->pStoragePassword,0);
+ packet(0x095d,clif->pDull/*,XXX*/);
+ packet(0x095f,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0967,clif->pDull/*,XXX*/);
#endif
// 2016-11-23aRagexeRE
#if PACKETVER == 20161123
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0362,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0437,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x085c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0861,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0862,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0866,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x086f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0871,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x087f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0880,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0882,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x088b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x089c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08a9,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x08aa,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x091a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0926,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x092a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x092f,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0930,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0941,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x094d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x094f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x095a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x095b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0962,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x096a,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0362,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0437,clif->pTickSend,2);
+ packet(0x085c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0861,clif->pWalkToXY,2);
+ packet(0x0862,clif->pReqCloseBuyingStore,0);
+ packet(0x0866,clif->pSearchStoreInfoNextPage,0);
+ packet(0x086f,clif->pDropItem,2,4);
+ packet(0x0871,clif->pDull/*,XXX*/);
+ packet(0x087f,clif->pPartyInvite2,2);
+ packet(0x0880,clif->pStoragePassword,0);
+ packet(0x0882,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x088b,clif->pGetCharNameRequest,2);
+ packet(0x089c,clif->pChangeDir,2,4);
+ packet(0x08a9,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x08aa,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x091a,clif->pMoveToKafra,2,4);
+ packet(0x0926,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x092a,clif->pReqClickBuyingStore,2);
+ packet(0x092f,clif->pTakeItem,2);
+ packet(0x0930,clif->pHomMenu,2,4);
+ packet(0x0941,clif->pFriendsListAdd,2);
+ packet(0x094d,clif->pUseSkillToId,2,4,6);
+ packet(0x094f,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x095a,clif->pDull/*,XXX*/);
+ packet(0x095b,clif->pActionRequest,2,6);
+ packet(0x0962,clif->pMoveFromKafra,2,4);
+ packet(0x096a,clif->pSolveCharName,2);
#endif
// 2016-11-30aRagexeRE, 2016-11-30bRagexeRE
#if PACKETVER == 20161130
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x088f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0931,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0943,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0954,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0959,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pChangeDir,2,4);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pTickSend,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x088f,clif->pDull/*,XXX*/);
+ packet(0x0931,clif->pHomMenu,2,4);
+ packet(0x0943,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0954,clif->pStoragePassword,0);
+ packet(0x0959,clif->pFriendsListAdd,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-12-07cRagexeRE, 2016-12-07dRagexeRE, 2016-12-07eRagexeRE
#if PACKETVER == 20161207
- packet(0x023b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0867,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0868,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0875,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x087e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0886,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x08a1,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08a2,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08ad,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0918,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x091d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0943,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x095d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0965,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x023b,clif->pHomMenu,2,4);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0867,clif->pFriendsListAdd,2);
+ packet(0x0868,clif->pDull/*,XXX*/);
+ packet(0x0875,clif->pMoveToKafra,2,4);
+ packet(0x087e,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0886,clif->pActionRequest,2,6);
+ packet(0x08a1,clif->pChangeDir,2,4);
+ packet(0x08a2,clif->pTakeItem,2);
+ packet(0x08ad,clif->pDropItem,2,4);
+ packet(0x0918,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x091d,clif->pMoveFromKafra,2,4);
+ packet(0x0943,clif->pDull/*,XXX*/);
+ packet(0x095d,clif->pStoragePassword,0);
+ packet(0x0965,clif->pPartyInvite2,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-12-14bRagexeRE, 2016-12-14cRagexeRE
#if PACKETVER == 20161214
- packet(0x022d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0281,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x02c4,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0436,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0862,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x086d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0887,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0895,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0899,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08a6,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x092e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x093d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x022d,clif->pReqClickBuyingStore,2);
+ packet(0x0281,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x02c4,clif->pMoveFromKafra,2,4);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pHomMenu,2,4);
+ packet(0x0364,clif->pMoveToKafra,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0436,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pDull/*,XXX*/);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085a,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0862,clif->pFriendsListAdd,2);
+ packet(0x086d,clif->pPartyInvite2,2);
+ packet(0x0887,clif->pDropItem,2,4);
+ packet(0x0895,clif->pDull/*,XXX*/);
+ packet(0x0899,clif->pStoragePassword,0);
+ packet(0x08a6,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x092e,clif->pTakeItem,2);
+ packet(0x093d,clif->pChangeDir,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2016-12-21aRagexeRE, 2016-12-21bRagexeRE, 2016-12-21cRagexeRE, 2016-12-21dRagexeRE
#if PACKETVER == 20161221
- packet(0x035f,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0366,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0438,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0817,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x085b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0866,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0876,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0881,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0884,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0885,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x088c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0890,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0899,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x089a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x089b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x08aa,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x091e,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0926,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0928,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x092c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x092e,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0930,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0943,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0946,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x094b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x095a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0964,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0965,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x035f,clif->pTakeItem,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0366,clif->pSolveCharName,2);
+ packet(0x0438,clif->pWalkToXY,2);
+ packet(0x0817,clif->pMoveToKafra,2,4);
+ packet(0x085b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0866,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0876,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0881,clif->pGetCharNameRequest,2);
+ packet(0x0884,clif->pDull/*,XXX*/);
+ packet(0x0885,clif->pItemListWindowSelected,2,4,8);
+ packet(0x088c,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0890,clif->pStoragePassword,0);
+ packet(0x0899,clif->pDull/*,XXX*/);
+ packet(0x089a,clif->pMoveFromKafra,2,4);
+ packet(0x089b,clif->pActionRequest,2,6);
+ packet(0x08aa,clif->pTickSend,2);
+ packet(0x091e,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0926,clif->pPartyInvite2,2);
+ packet(0x0928,clif->pFriendsListAdd,2);
+ packet(0x092c,clif->pReqCloseBuyingStore,0);
+ packet(0x092e,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0930,clif->pHomMenu,2,4);
+ packet(0x0943,clif->pUseSkillToId,2,4,6);
+ packet(0x0946,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x094b,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x095a,clif->pReqClickBuyingStore,2);
+ packet(0x0964,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0965,clif->pChangeDir,2,4);
#endif
// 2016-12-28aRagexeRE
#if PACKETVER == 20161228
- packet(0x0362,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x085a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x085e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0865,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x086a,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x086c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x086d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0870,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0871,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0875,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x087f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0886,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0889,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0893,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x089f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08a2,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x08a3,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x08a5,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x08ab,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x08ac,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x08ad,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x091c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0929,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x092c,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0934,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0935,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0938,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x093d,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0944,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0362,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x085a,clif->pGetCharNameRequest,2);
+ packet(0x085e,clif->pHomMenu,2,4);
+ packet(0x0865,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x086a,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x086c,clif->pTakeItem,2);
+ packet(0x086d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0870,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0871,clif->pChangeDir,2,4);
+ packet(0x0875,clif->pReqCloseBuyingStore,0);
+ packet(0x087f,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0886,clif->pWalkToXY,2);
+ packet(0x0889,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0893,clif->pDropItem,2,4);
+ packet(0x089f,clif->pMoveToKafra,2,4);
+ packet(0x08a2,clif->pUseSkillToId,2,4,6);
+ packet(0x08a3,clif->pReqClickBuyingStore,2);
+ packet(0x08a5,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x08ab,clif->pMoveFromKafra,2,4);
+ packet(0x08ac,clif->pSolveCharName,2);
+ packet(0x08ad,clif->pStoragePassword,0);
+ packet(0x091c,clif->pFriendsListAdd,2);
+ packet(0x0929,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x092c,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0934,clif->pPartyInvite2,2);
+ packet(0x0935,clif->pDull/*,XXX*/);
+ packet(0x0938,clif->pDull/*,XXX*/);
+ packet(0x093d,clif->pActionRequest,2,6);
+ packet(0x0944,clif->pTickSend,2);
#endif
// 2017-01-04bRagexeRE
#if PACKETVER == 20170104
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x085a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x087f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0896,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x091b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0940,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x085a,clif->pFriendsListAdd,2);
+ packet(0x087f,clif->pStoragePassword,0);
+ packet(0x0896,clif->pChangeDir,2,4);
+ packet(0x091b,clif->pHomMenu,2,4);
+ packet(0x0940,clif->pUseSkillToId,2,4,6);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-01-11aRagexeRE
#if PACKETVER == 20170111
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0877,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x087f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x088a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08a1,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08a3,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08a6,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x091a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x091b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0940,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x094c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0961,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0969,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085d,clif->pHomMenu,2,4);
+ packet(0x0877,clif->pFriendsListAdd,2);
+ packet(0x087f,clif->pDull/*,XXX*/);
+ packet(0x088a,clif->pMoveToKafra,2,4);
+ packet(0x08a1,clif->pChangeDir,2,4);
+ packet(0x08a3,clif->pTakeItem,2);
+ packet(0x08a6,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x091a,clif->pStoragePassword,0);
+ packet(0x091b,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0940,clif->pDropItem,2,4);
+ packet(0x094c,clif->pMoveFromKafra,2,4);
+ packet(0x0961,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0969,clif->pPartyInvite2,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-01-18aRagexeRE
#if PACKETVER == 20170118
- packet(0x022d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0364,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0862,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0865,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x086f,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0873,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x089e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x08ad,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x091f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0927,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0933,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0958,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0962,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x096a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x022d,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0364,clif->pGetCharNameRequest,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pHomMenu,2,4);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0862,clif->pMoveFromKafra,2,4);
+ packet(0x0865,clif->pChangeDir,2,4);
+ packet(0x086f,clif->pTakeItem,2);
+ packet(0x0873,clif->pDull/*,XXX*/);
+ packet(0x089e,clif->pPartyInvite2,2);
+ packet(0x08ad,clif->pItemListWindowSelected,2,4,8);
+ packet(0x091f,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0927,clif->pDull/*,XXX*/);
+ packet(0x0933,clif->pDropItem,2,4);
+ packet(0x0958,clif->pStoragePassword,0);
+ packet(0x0962,clif->pFriendsListAdd,2);
+ packet(0x096a,clif->pMoveToKafra,2,4);
#endif
// 2017-01-25aRagexeRE
#if PACKETVER == 20170125
- packet(0x0438,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0811,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x086e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0876,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0877,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0879,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x087b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x087d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0881,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0884,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0893,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0894,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0895,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0898,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x089b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x08a5,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x091b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x091c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x091d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0920,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0929,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x092b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0930,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x093c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0943,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0944,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x095c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0965,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0968,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0438,clif->pActionRequest,2,6);
+ packet(0x0811,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x086e,clif->pPartyInvite2,2);
+ packet(0x0876,clif->pHomMenu,2,4);
+ packet(0x0877,clif->pDropItem,2,4);
+ packet(0x0879,clif->pUseSkillToId,2,4,6);
+ packet(0x087b,clif->pTakeItem,2);
+ packet(0x087d,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0881,clif->pChangeDir,2,4);
+ packet(0x0884,clif->pDull/*,XXX*/);
+ packet(0x0893,clif->pStoragePassword,0);
+ packet(0x0894,clif->pDull/*,XXX*/);
+ packet(0x0895,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0898,clif->pSolveCharName,2);
+ packet(0x089b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x08a5,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x091b,clif->pReqClickBuyingStore,2);
+ packet(0x091c,clif->pMoveToKafra,2,4);
+ packet(0x091d,clif->pReqCloseBuyingStore,0);
+ packet(0x0920,clif->pFriendsListAdd,2);
+ packet(0x0929,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x092b,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0930,clif->pWalkToXY,2);
+ packet(0x093c,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0943,clif->pTickSend,2);
+ packet(0x0944,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x095c,clif->pMoveFromKafra,2,4);
+ packet(0x0965,clif->pGetCharNameRequest,2);
+ packet(0x0968,clif->pSearchStoreInfoNextPage,0);
#endif
// 2017-02-01aRagexeRE
#if PACKETVER == 20170201
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0815,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x085e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0875,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0879,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0881,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0884,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0885,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0886,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x088b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x08a4,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0919,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0920,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0938,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0940,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x094c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0966,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0969,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0815,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085d,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x085e,clif->pChangeDir,2,4);
+ packet(0x0875,clif->pTakeItem,2);
+ packet(0x0879,clif->pDull/*,XXX*/);
+ packet(0x0881,clif->pMoveToKafra,2,4);
+ packet(0x0884,clif->pWalkToXY,2);
+ packet(0x0885,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0886,clif->pStoragePassword,0);
+ packet(0x088b,clif->pDropItem,2,4);
+ packet(0x08a4,clif->pDull/*,XXX*/);
+ packet(0x0919,clif->pFriendsListAdd,2);
+ packet(0x0920,clif->pPartyInvite2,2);
+ packet(0x0938,clif->pHomMenu,2,4);
+ packet(0x0940,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x094c,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0966,clif->pMoveFromKafra,2,4);
+ packet(0x0969,clif->pItemListWindowSelected,2,4,8);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-02-08aRagexeRE, 2017-02-08bRagexeRE
#if PACKETVER == 20170208
- packet(0x02c4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0367,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0860,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x087a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x088c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0892,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x08a1,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x08ac,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0921,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0923,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x092d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0932,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0937,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x02c4,clif->pDull/*,XXX*/);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0367,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085c,clif->pPartyInvite2,2);
+ packet(0x0860,clif->pChangeDir,2,4);
+ packet(0x087a,clif->pDull/*,XXX*/);
+ packet(0x088c,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0892,clif->pFriendsListAdd,2);
+ packet(0x08a1,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x08ac,clif->pMoveToKafra,2,4);
+ packet(0x0921,clif->pDropItem,2,4);
+ packet(0x0923,clif->pTakeItem,2);
+ packet(0x092d,clif->pHomMenu,2,4);
+ packet(0x0932,clif->pMoveFromKafra,2,4);
+ packet(0x0937,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-02-15aRagexeRE
#if PACKETVER == 20170215
- packet(0x02c4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x035f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0360,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0811,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x083c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x085c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0876,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x087c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x087d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x087e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0883,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0884,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x088a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x088b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x088c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0890,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0896,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x089b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08a2,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x08a8,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x091c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0925,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x092b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x092d,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0942,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x094e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x095f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0962,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0969,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x02c4,clif->pStoragePassword,0);
+ packet(0x035f,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0360,clif->pTickSend,2);
+ packet(0x0811,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x083c,clif->pActionRequest,2,6);
+ packet(0x085c,clif->pDropItem,2,4);
+ packet(0x0876,clif->pFriendsListAdd,2);
+ packet(0x087c,clif->pItemListWindowSelected,2,4,8);
+ packet(0x087d,clif->pChangeDir,2,4);
+ packet(0x087e,clif->pUseSkillToId,2,4,6);
+ packet(0x0883,clif->pSolveCharName,2);
+ packet(0x0884,clif->pDull/*,XXX*/);
+ packet(0x088a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x088b,clif->pPartyInvite2,2);
+ packet(0x088c,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0890,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0896,clif->pDull/*,XXX*/);
+ packet(0x089b,clif->pMoveToKafra,2,4);
+ packet(0x08a2,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x08a8,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x091c,clif->pReqCloseBuyingStore,0);
+ packet(0x0925,clif->pMoveFromKafra,2,4);
+ packet(0x092b,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x092d,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0942,clif->pTakeItem,2);
+ packet(0x094e,clif->pGetCharNameRequest,2);
+ packet(0x095f,clif->pReqClickBuyingStore,2);
+ packet(0x0962,clif->pHomMenu,2,4);
+ packet(0x0969,clif->pWalkToXY,2);
#endif
// 2017-02-22aRagexeRE
#if PACKETVER == 20170222
- packet(0x0202,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0866,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0870,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0871,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0877,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0889,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0894,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08a3,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08a8,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0937,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0939,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0943,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x095d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0962,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pHomMenu,2,4);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085f,clif->pFriendsListAdd,2);
+ packet(0x0866,clif->pDropItem,2,4);
+ packet(0x0870,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0871,clif->pDull/*,XXX*/);
+ packet(0x0877,clif->pDull/*,XXX*/);
+ packet(0x0889,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0894,clif->pTakeItem,2);
+ packet(0x08a3,clif->pChangeDir,2,4);
+ packet(0x08a8,clif->pPartyInvite2,2);
+ packet(0x0937,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0939,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0943,clif->pStoragePassword,0);
+ packet(0x095d,clif->pMoveToKafra,2,4);
+ packet(0x0962,clif->pMoveFromKafra,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-02-28aRagexeRE
#if PACKETVER == 20170228
- packet(0x022d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0360,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0362,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0819,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x085e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0863,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x086b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0873,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0874,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0876,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0883,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0884,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0889,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0893,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x089e,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08a0,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x08a2,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08a6,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x08a7,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x091f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x092a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x092e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0937,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x093e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0944,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0947,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0948,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0952,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0955,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x022d,clif->pDropItem,2,4);
+ packet(0x0360,clif->pActionRequest,2,6);
+ packet(0x0362,clif->pHomMenu,2,4);
+ packet(0x0819,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x085e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0863,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x086b,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0873,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0874,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0876,clif->pReqCloseBuyingStore,0);
+ packet(0x0883,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0884,clif->pWalkToXY,2);
+ packet(0x0889,clif->pChangeDir,2,4);
+ packet(0x0893,clif->pGetCharNameRequest,2);
+ packet(0x089e,clif->pMoveToKafra,2,4);
+ packet(0x08a0,clif->pFriendsListAdd,2);
+ packet(0x08a2,clif->pStoragePassword,0);
+ packet(0x08a6,clif->pDull/*,XXX*/);
+ packet(0x08a7,clif->pReqClickBuyingStore,2);
+ packet(0x091f,clif->pUseSkillToId,2,4,6);
+ packet(0x092a,clif->pTakeItem,2);
+ packet(0x092e,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0937,clif->pTickSend,2);
+ packet(0x093e,clif->pDull/*,XXX*/);
+ packet(0x0944,clif->pMoveFromKafra,2,4);
+ packet(0x0947,clif->pSolveCharName,2);
+ packet(0x0948,clif->pPartyInvite2,2);
+ packet(0x0952,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0955,clif->pPartyBookingRegisterReq,2,4);
#endif
// 2017-03-08bRagexeRE
#if PACKETVER == 20170308
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x087d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x087d,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-03-15cRagexeRE
#if PACKETVER == 20170315
- packet(0x02c4,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x035f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0360,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0366,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0436,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x07ec,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x085c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0863,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x086a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0872,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x087b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0884,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x088b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x088d,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x088f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0892,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x089c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x08aa,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x091a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x091b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x091d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0920,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0922,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0944,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x094a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x094e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0950,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0952,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x02c4,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x035f,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0360,clif->pChangeDir,2,4);
+ packet(0x0366,clif->pTakeItem,2);
+ packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0436,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x07ec,clif->pTickSend,2);
+ packet(0x085c,clif->pDull/*,XXX*/);
+ packet(0x0863,clif->pHomMenu,2,4);
+ packet(0x086a,clif->pMoveFromKafra,2,4);
+ packet(0x0872,clif->pFriendsListAdd,2);
+ packet(0x087b,clif->pPartyInvite2,2);
+ packet(0x0884,clif->pActionRequest,2,6);
+ packet(0x088b,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x088d,clif->pDull/*,XXX*/);
+ packet(0x088f,clif->pWalkToXY,2);
+ packet(0x0892,clif->pUseSkillToId,2,4,6);
+ packet(0x089c,clif->pReqCloseBuyingStore,0);
+ packet(0x08aa,clif->pMoveToKafra,2,4);
+ packet(0x091a,clif->pDropItem,2,4);
+ packet(0x091b,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x091d,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0920,clif->pSolveCharName,2);
+ packet(0x0922,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0944,clif->pGetCharNameRequest,2);
+ packet(0x094a,clif->pReqClickBuyingStore,2);
+ packet(0x094e,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0950,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0952,clif->pStoragePassword,0);
#endif
// 2017-03-22aRagexeRE, 2017-03-22bRagexeRE
#if PACKETVER == 20170322
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x091a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x091a,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-03-29cRagexeRE, 2017-03-29dRagexeRE
#if PACKETVER == 20170329
- packet(0x0281,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0363,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x087a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0888,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x08a8,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0917,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0926,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0929,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x092e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0937,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0939,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0949,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x095f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0281,clif->pPartyInvite2,2);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pHomMenu,2,4);
+ packet(0x0363,clif->pMoveToKafra,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085d,clif->pStoragePassword,0);
+ packet(0x087a,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0888,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x08a8,clif->pDropItem,2,4);
+ packet(0x0917,clif->pDull/*,XXX*/);
+ packet(0x0926,clif->pChangeDir,2,4);
+ packet(0x0929,clif->pTakeItem,2);
+ packet(0x092e,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0937,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0939,clif->pFriendsListAdd,2);
+ packet(0x0949,clif->pMoveFromKafra,2,4);
+ packet(0x095f,clif->pDull/*,XXX*/);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-04-05bRagexeRE, 2017-04-05cRagexeRE
#if PACKETVER == 20170405
- packet(0x022d,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0281,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0860,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0864,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0865,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x086f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0893,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x08a5,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x094c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x094f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0964,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x022d,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0281,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pActionRequest,2,6);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pTakeItem,2);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pHomMenu,2,4);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085f,clif->pMoveToKafra,2,4);
+ packet(0x0860,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0864,clif->pPartyInvite2,2);
+ packet(0x0865,clif->pChangeDir,2,4);
+ packet(0x086f,clif->pFriendsListAdd,2);
+ packet(0x0893,clif->pMoveFromKafra,2,4);
+ packet(0x08a5,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x094c,clif->pStoragePassword,0);
+ packet(0x094f,clif->pDull/*,XXX*/);
+ packet(0x0964,clif->pDropItem,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-04-12aRagexeRE
#if PACKETVER == 20170412
- packet(0x023b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0365,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0863,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0869,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x086d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0878,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0879,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x087b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x088b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0890,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0893,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0898,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x089a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x089c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x08a1,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x091a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x091e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0929,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x092e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0938,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0942,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0945,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0949,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x094f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0952,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0959,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x095b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x095c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x095d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x023b,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0365,clif->pReqClickBuyingStore,2);
+ packet(0x0863,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0869,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x086d,clif->pMoveFromKafra,2,4);
+ packet(0x0878,clif->pWalkToXY,2);
+ packet(0x0879,clif->pDull/*,XXX*/);
+ packet(0x087b,clif->pUseSkillToId,2,4,6);
+ packet(0x088b,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0890,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0893,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0898,clif->pSolveCharName,2);
+ packet(0x089a,clif->pHomMenu,2,4);
+ packet(0x089c,clif->pDropItem,2,4);
+ packet(0x08a1,clif->pActionRequest,2,6);
+ packet(0x091a,clif->pChangeDir,2,4);
+ packet(0x091e,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0929,clif->pTickSend,2);
+ packet(0x092e,clif->pDull/*,XXX*/);
+ packet(0x0938,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0942,clif->pFriendsListAdd,2);
+ packet(0x0945,clif->pMoveToKafra,2,4);
+ packet(0x0949,clif->pSearchStoreInfoNextPage,0);
+ packet(0x094f,clif->pPartyInvite2,2);
+ packet(0x0952,clif->pReqCloseBuyingStore,0);
+ packet(0x0959,clif->pTakeItem,2);
+ packet(0x095b,clif->pGetCharNameRequest,2);
+ packet(0x095c,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x095d,clif->pStoragePassword,0);
#endif
// 2017-04-19bRagexeRE
#if PACKETVER == 20170419
- packet(0x0811,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0819,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0838,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x085a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x085e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0862,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0868,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x086a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0872,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0881,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x088d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x088f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0897,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0898,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x089d,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x08aa,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x091b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0920,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0922,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0930,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0931,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0935,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x093a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x093f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0942,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x095c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x095d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0963,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0965,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0811,clif->pChangeDir,2,4);
+ packet(0x0819,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0838,clif->pGetCharNameRequest,2);
+ packet(0x085a,clif->pActionRequest,2,6);
+ packet(0x085e,clif->pWalkToXY,2);
+ packet(0x0862,clif->pPartyInvite2,2);
+ packet(0x0868,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x086a,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0872,clif->pDull/*,XXX*/);
+ packet(0x0881,clif->pStoragePassword,0);
+ packet(0x088d,clif->pItemListWindowSelected,2,4,8);
+ packet(0x088f,clif->pHomMenu,2,4);
+ packet(0x0897,clif->pDropItem,2,4);
+ packet(0x0898,clif->pTickSend,2);
+ packet(0x089d,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x08aa,clif->pMoveToKafra,2,4);
+ packet(0x091b,clif->pSolveCharName,2);
+ packet(0x0920,clif->pUseSkillToId,2,4,6);
+ packet(0x0922,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0930,clif->pMoveFromKafra,2,4);
+ packet(0x0931,clif->pReqCloseBuyingStore,0);
+ packet(0x0935,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x093a,clif->pFriendsListAdd,2);
+ packet(0x093f,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0942,clif->pSearchStoreInfoNextPage,0);
+ packet(0x095c,clif->pTakeItem,2);
+ packet(0x095d,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0963,clif->pDull/*,XXX*/);
+ packet(0x0965,clif->pReqClickBuyingStore,2);
#endif
// 2017-04-26dRagexeRE
#if PACKETVER == 20170426
- packet(0x0281,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0866,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x086f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x087a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0887,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0899,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x089c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x08a2,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x08a4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x091f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0927,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0940,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0958,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0963,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0281,clif->pStoragePassword,0);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0866,clif->pItemListWindowSelected,2,4,8);
+ packet(0x086f,clif->pDull/*,XXX*/);
+ packet(0x087a,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0887,clif->pSolveCharName,2);
+ packet(0x0899,clif->pMoveFromKafra,2,4);
+ packet(0x089c,clif->pHomMenu,2,4);
+ packet(0x08a2,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x08a4,clif->pTakeItem,2);
+ packet(0x091f,clif->pDull/*,XXX*/);
+ packet(0x0927,clif->pChangeDir,2,4);
+ packet(0x0940,clif->pDropItem,2,4);
+ packet(0x0958,clif->pFriendsListAdd,2);
+ packet(0x0963,clif->pMoveToKafra,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-05-02dRagexeRE
#if PACKETVER == 20170502
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0875,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0894,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x089c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x093c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0950,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0875,clif->pStoragePassword,0);
+ packet(0x0894,clif->pChangeDir,2,4);
+ packet(0x089c,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x093c,clif->pFriendsListAdd,2);
+ packet(0x0950,clif->pHomMenu,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-05-17aRagexeRE, 2017-05-17bRagexeRE
#if PACKETVER == 20170517
- packet(0x0364,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0367,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0815,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0817,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0868,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0875,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x087b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x087d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x088c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x088d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0894,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0896,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0899,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x089e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x089f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x08a2,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x08a8,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x08aa,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x091b,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0923,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x093b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0945,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0946,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0947,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0958,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0960,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0964,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0364,clif->pDull/*,XXX*/);
+ packet(0x0367,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0437,clif->pActionRequest,2,6);
+ packet(0x0802,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0815,clif->pUseSkillToId,2,4,6);
+ packet(0x0817,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0868,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0875,clif->pSearchStoreInfoNextPage,0);
+ packet(0x087b,clif->pSolveCharName,2);
+ packet(0x087d,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x088c,clif->pMoveFromKafra,2,4);
+ packet(0x088d,clif->pChangeDir,2,4);
+ packet(0x0894,clif->pGetCharNameRequest,2);
+ packet(0x0896,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0899,clif->pPartyInvite2,2);
+ packet(0x089e,clif->pDull/*,XXX*/);
+ packet(0x089f,clif->pReqCloseBuyingStore,0);
+ packet(0x08a2,clif->pTickSend,2);
+ packet(0x08a8,clif->pWalkToXY,2);
+ packet(0x08aa,clif->pMoveToKafra,2,4);
+ packet(0x091b,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0923,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x093b,clif->pDropItem,2,4);
+ packet(0x0945,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0946,clif->pReqClickBuyingStore,2);
+ packet(0x0947,clif->pStoragePassword,0);
+ packet(0x0958,clif->pHomMenu,2,4);
+ packet(0x0960,clif->pFriendsListAdd,2);
+ packet(0x0964,clif->pTakeItem,2);
#endif
// 2017-05-24aRagexeRE
#if PACKETVER == 20170524
- packet(0x0364,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0368,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0802,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x085e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x085f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0860,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0864,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0866,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0868,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x086d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0873,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0874,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x087d,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0882,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x088d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0894,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x089c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x08a1,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x091e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0923,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0925,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0934,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0946,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0958,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x095a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x095b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0964,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0967,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0968,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0364,clif->pPartyInvite2,2);
+ packet(0x0368,clif->pStoragePassword,0);
+ packet(0x0802,clif->pDropItem,2,4);
+ packet(0x085e,clif->pActionRequest,2,6);
+ packet(0x085f,clif->pReqClickBuyingStore,2);
+ packet(0x0860,clif->pTickSend,2);
+ packet(0x0864,clif->pTakeItem,2);
+ packet(0x0866,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0868,clif->pMoveToKafra,2,4);
+ packet(0x086d,clif->pHomMenu,2,4);
+ packet(0x0873,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0874,clif->pSearchStoreInfoNextPage,0);
+ packet(0x087d,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0882,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x088d,clif->pUseSkillToId,2,4,6);
+ packet(0x0894,clif->pMoveFromKafra,2,4);
+ packet(0x089c,clif->pWalkToXY,2);
+ packet(0x08a1,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x091e,clif->pDull/*,XXX*/);
+ packet(0x0923,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0925,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0934,clif->pChangeDir,2,4);
+ packet(0x0946,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0958,clif->pDull/*,XXX*/);
+ packet(0x095a,clif->pGetCharNameRequest,2);
+ packet(0x095b,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0964,clif->pReqCloseBuyingStore,0);
+ packet(0x0967,clif->pFriendsListAdd,2);
+ packet(0x0968,clif->pSolveCharName,2);
#endif
// 2017-05-31aRagexeRE
#if PACKETVER == 20170531
- packet(0x0361,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0369,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x07e4,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x07ec,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0819,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x085b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x085f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0861,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0868,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0873,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0875,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0878,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x087b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0885,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x088b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x088d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0894,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x089a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x089c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x08a2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x08ac,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x08ad,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x092d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0933,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0937,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0940,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0945,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0963,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0968,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0361,clif->pChangeDir,2,4);
+ packet(0x0369,clif->pUseSkillToId,2,4,6);
+ packet(0x07e4,clif->pWalkToXY,2);
+ packet(0x07ec,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0819,clif->pTickSend,2);
+ packet(0x085b,clif->pDull/*,XXX*/);
+ packet(0x085f,clif->pSolveCharName,2);
+ packet(0x0861,clif->pFriendsListAdd,2);
+ packet(0x0868,clif->pDull/*,XXX*/);
+ packet(0x0873,clif->pReqCloseBuyingStore,0);
+ packet(0x0875,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0878,clif->pPartyInvite2,2);
+ packet(0x087b,clif->pActionRequest,2,6);
+ packet(0x0885,clif->pItemListWindowSelected,2,4,8);
+ packet(0x088b,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x088d,clif->pDropItem,2,4);
+ packet(0x0894,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x089a,clif->pStoragePassword,0);
+ packet(0x089c,clif->pHomMenu,2,4);
+ packet(0x08a2,clif->pSearchStoreInfoNextPage,0);
+ packet(0x08ac,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x08ad,clif->pMoveToKafra,2,4);
+ packet(0x092d,clif->pGetCharNameRequest,2);
+ packet(0x0933,clif->pMoveFromKafra,2,4);
+ packet(0x0937,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0940,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0945,clif->pReqClickBuyingStore,2);
+ packet(0x0963,clif->pTakeItem,2);
+ packet(0x0968,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
#endif
// 2017-06-07bRagexeRE, 2017-06-07cRagexeRE
#if PACKETVER == 20170607
- packet(0x0361,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0364,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x07e4,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x085a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x085e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0862,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0863,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0864,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0871,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0873,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0875,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0885,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x088a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0897,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x089d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08a9,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x08ab,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0917,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0918,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0919,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0925,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0927,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0931,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0934,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0938,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x093d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0942,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0944,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0949,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0361,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0364,clif->pStoragePassword,0);
+ packet(0x07e4,clif->pTickSend,2);
+ packet(0x085a,clif->pChangeDir,2,4);
+ packet(0x085e,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0862,clif->pGetCharNameRequest,2);
+ packet(0x0863,clif->pReqClickBuyingStore,2);
+ packet(0x0864,clif->pDropItem,2,4);
+ packet(0x0871,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0873,clif->pDull/*,XXX*/);
+ packet(0x0875,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0885,clif->pFriendsListAdd,2);
+ packet(0x088a,clif->pMoveFromKafra,2,4);
+ packet(0x0897,clif->pTakeItem,2);
+ packet(0x089d,clif->pMoveToKafra,2,4);
+ packet(0x08a9,clif->pUseSkillToId,2,4,6);
+ packet(0x08ab,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0917,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0918,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0919,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0925,clif->pPartyInvite2,2);
+ packet(0x0927,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0931,clif->pDull/*,XXX*/);
+ packet(0x0934,clif->pWalkToXY,2);
+ packet(0x0938,clif->pActionRequest,2,6);
+ packet(0x093d,clif->pReqCloseBuyingStore,0);
+ packet(0x0942,clif->pHomMenu,2,4);
+ packet(0x0944,clif->pSolveCharName,2);
+ packet(0x0949,clif->pReqOpenBuyingStore,2,4,8,9,89);
#endif
// 2017-06-14bRagexeRE
#if PACKETVER == 20170614
- packet(0x023b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0361,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0364,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0367,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0437,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0838,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x083c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0860,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0865,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0866,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0867,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x086b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x086c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0877,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0879,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x087d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x087e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0889,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0899,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x089d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x08a2,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x08ad,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x091b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0928,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x092f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0936,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0944,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0957,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0963,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x023b,clif->pMoveFromKafra,2,4);
+ packet(0x0361,clif->pWalkToXY,2);
+ packet(0x0364,clif->pHomMenu,2,4);
+ packet(0x0367,clif->pDropItem,2,4);
+ packet(0x0437,clif->pStoragePassword,0);
+ packet(0x0838,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x083c,clif->pActionRequest,2,6);
+ packet(0x0860,clif->pReqClickBuyingStore,2);
+ packet(0x0865,clif->pDull/*,XXX*/);
+ packet(0x0866,clif->pTickSend,2);
+ packet(0x0867,clif->pFriendsListAdd,2);
+ packet(0x086b,clif->pReqCloseBuyingStore,0);
+ packet(0x086c,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0877,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0879,clif->pMoveToKafra,2,4);
+ packet(0x087d,clif->pSolveCharName,2);
+ packet(0x087e,clif->pChangeDir,2,4);
+ packet(0x0889,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0899,clif->pPartyInvite2,2);
+ packet(0x089d,clif->pItemListWindowSelected,2,4,8);
+ packet(0x08a2,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x08ad,clif->pTakeItem,2);
+ packet(0x091b,clif->pUseSkillToId,2,4,6);
+ packet(0x0928,clif->pSearchStoreInfoNextPage,0);
+ packet(0x092f,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0936,clif->pGetCharNameRequest,2);
+ packet(0x0944,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0957,clif->pDull/*,XXX*/);
+ packet(0x0963,clif->pSearchStoreInfoListItemClick,2,6,10);
#endif
// 2017-06-21aRagexeRE
#if PACKETVER == 20170621
- packet(0x0202,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0365,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0366,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0802,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x087d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0885,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0889,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x08a8,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0956,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0957,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x095b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x095c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0961,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pTakeItem,2);
+ packet(0x0365,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0366,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pFriendsListAdd,2);
+ packet(0x0802,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085d,clif->pChangeDir,2,4);
+ packet(0x087d,clif->pDropItem,2,4);
+ packet(0x0885,clif->pPartyInvite2,2);
+ packet(0x0889,clif->pMoveFromKafra,2,4);
+ packet(0x08a8,clif->pHomMenu,2,4);
+ packet(0x0956,clif->pDull/*,XXX*/);
+ packet(0x0957,clif->pStoragePassword,0);
+ packet(0x095b,clif->pDull/*,XXX*/);
+ packet(0x095c,clif->pMoveToKafra,2,4);
+ packet(0x0961,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-06-28bRagexeRE
#if PACKETVER == 20170628
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0863,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0863,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-07-05aRagexeRE
#if PACKETVER == 20170705
- packet(0x0202,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x02c4,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0879,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0886,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x088d,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x088e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x089a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x089d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x091a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x092f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0930,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0932,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0934,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x094c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pStoragePassword,0);
+ packet(0x02c4,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0879,clif->pMoveToKafra,2,4);
+ packet(0x0886,clif->pFriendsListAdd,2);
+ packet(0x088d,clif->pDull/*,XXX*/);
+ packet(0x088e,clif->pPartyInvite2,2);
+ packet(0x089a,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x089d,clif->pDropItem,2,4);
+ packet(0x091a,clif->pChangeDir,2,4);
+ packet(0x092f,clif->pDull/*,XXX*/);
+ packet(0x0930,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0932,clif->pTakeItem,2);
+ packet(0x0934,clif->pMoveFromKafra,2,4);
+ packet(0x094c,clif->pHomMenu,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-07-12bRagexeRE
#if PACKETVER == 20170712
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0944,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0944,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-07-19aRagexeRE
#if PACKETVER == 20170719
- packet(0x022d,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0367,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0368,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0369,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x07e4,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x085a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x085e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0863,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x086e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x087d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0881,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0882,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0885,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0891,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0898,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x089a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x089d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x08a6,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x08a8,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x091b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x091f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x092c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x092e,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x092f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x093d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x093e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0944,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0946,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0966,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x022d,clif->pActionRequest,2,6);
+ packet(0x0367,clif->pReqCloseBuyingStore,0);
+ packet(0x0368,clif->pDull/*,XXX*/);
+ packet(0x0369,clif->pHomMenu,2,4);
+ packet(0x07e4,clif->pGetCharNameRequest,2);
+ packet(0x085a,clif->pTickSend,2);
+ packet(0x085e,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0863,clif->pReqClickBuyingStore,2);
+ packet(0x086e,clif->pPartyInvite2,2);
+ packet(0x087d,clif->pTakeItem,2);
+ packet(0x0881,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0882,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0885,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0891,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0898,clif->pUseSkillToId,2,4,6);
+ packet(0x089a,clif->pStoragePassword,0);
+ packet(0x089d,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x08a6,clif->pMoveFromKafra,2,4);
+ packet(0x08a8,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x091b,clif->pDropItem,2,4);
+ packet(0x091f,clif->pSolveCharName,2);
+ packet(0x092c,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x092e,clif->pSearchStoreInfoNextPage,0);
+ packet(0x092f,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x093d,clif->pWalkToXY,2);
+ packet(0x093e,clif->pDull/*,XXX*/);
+ packet(0x0944,clif->pChangeDir,2,4);
+ packet(0x0946,clif->pFriendsListAdd,2);
+ packet(0x0966,clif->pMoveToKafra,2,4);
#endif
// 2017-07-26cRagexeRE
#if PACKETVER == 20170726
- packet(0x0363,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0366,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0369,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0438,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0838,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0873,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0874,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0878,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0881,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0888,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x088e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x08a3,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x08a7,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08aa,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x08ab,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08ac,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x091d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x091e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x091f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0921,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0923,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0943,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x094f,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0950,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0952,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0954,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x095a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0963,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0363,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0364,clif->pMoveToKafra,2,4);
+ packet(0x0366,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0369,clif->pUseSkillToId,2,4,6);
+ packet(0x0438,clif->pPartyInvite2,2);
+ packet(0x0838,clif->pReqCloseBuyingStore,0);
+ packet(0x0873,clif->pReqClickBuyingStore,2);
+ packet(0x0874,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0878,clif->pActionRequest,2,6);
+ packet(0x0881,clif->pDull/*,XXX*/);
+ packet(0x0888,clif->pSearchStoreInfoNextPage,0);
+ packet(0x088e,clif->pWalkToXY,2);
+ packet(0x08a3,clif->pDull/*,XXX*/);
+ packet(0x08a7,clif->pStoragePassword,0);
+ packet(0x08aa,clif->pGetCharNameRequest,2);
+ packet(0x08ab,clif->pTakeItem,2);
+ packet(0x08ac,clif->pTickSend,2);
+ packet(0x091d,clif->pFriendsListAdd,2);
+ packet(0x091e,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x091f,clif->pHomMenu,2,4);
+ packet(0x0921,clif->pSolveCharName,2);
+ packet(0x0923,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0943,clif->pDropItem,2,4);
+ packet(0x094f,clif->pMoveFromKafra,2,4);
+ packet(0x0950,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0952,clif->pChangeDir,2,4);
+ packet(0x0954,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x095a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0963,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
#endif
// 2017-08-01aRagexeRE
#if PACKETVER == 20170801
- packet(0x022d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0281,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0362,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x087d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08a6,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x094f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x095a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x022d,clif->pDropItem,2,4);
+ packet(0x0281,clif->pChangeDir,2,4);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0362,clif->pHomMenu,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x087d,clif->pStoragePassword,0);
+ packet(0x08a6,clif->pDull/*,XXX*/);
+ packet(0x094f,clif->pFriendsListAdd,2);
+ packet(0x095a,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-08-09cRagexeRE
#if PACKETVER == 20170809
- packet(0x022d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0281,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0364,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0366,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0367,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x07e4,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0802,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0835,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0868,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x086e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x086f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0876,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x087d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0880,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x088c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0890,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0892,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0895,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0899,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x08a3,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x08a6,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0918,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0921,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x092a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x092b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0931,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0939,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x093b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0940,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x022d,clif->pDull/*,XXX*/);
+ packet(0x0281,clif->pMoveFromKafra,2,4);
+ packet(0x0364,clif->pPartyInvite2,2);
+ packet(0x0366,clif->pFriendsListAdd,2);
+ packet(0x0367,clif->pReqCloseBuyingStore,0);
+ packet(0x07e4,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0802,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0835,clif->pDropItem,2,4);
+ packet(0x0868,clif->pActionRequest,2,6);
+ packet(0x086e,clif->pChangeDir,2,4);
+ packet(0x086f,clif->pHomMenu,2,4);
+ packet(0x0876,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x087d,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0880,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x088c,clif->pUseSkillToId,2,4,6);
+ packet(0x0890,clif->pStoragePassword,0);
+ packet(0x0892,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0895,clif->pWalkToXY,2);
+ packet(0x0899,clif->pDull/*,XXX*/);
+ packet(0x08a3,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x08a6,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0918,clif->pTakeItem,2);
+ packet(0x0921,clif->pMoveToKafra,2,4);
+ packet(0x092a,clif->pGetCharNameRequest,2);
+ packet(0x092b,clif->pTickSend,2);
+ packet(0x0931,clif->pSolveCharName,2);
+ packet(0x0939,clif->pReqClickBuyingStore,2);
+ packet(0x093b,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0940,clif->pPartyBookingRegisterReq,2,4);
#endif
// 2017-08-16cRagexeRE, 2017-08-16dRagexeRE
#if PACKETVER == 20170816
- packet(0x022d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x035f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0361,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0362,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0438,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x085a,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0862,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0864,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x087e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0881,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0882,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0884,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0888,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0889,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x08a3,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x08a7,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x08a9,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x08ac,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x091c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0921,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0925,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x092c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x093a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x093d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0940,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0941,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0950,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0959,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0960,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x022d,clif->pGetCharNameRequest,2);
+ packet(0x035f,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0361,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0362,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0438,clif->pActionRequest,2,6);
+ packet(0x085a,clif->pSolveCharName,2);
+ packet(0x0862,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0864,clif->pReqCloseBuyingStore,0);
+ packet(0x087e,clif->pTakeItem,2);
+ packet(0x0881,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0882,clif->pStoragePassword,0);
+ packet(0x0884,clif->pDull/*,XXX*/);
+ packet(0x0888,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0889,clif->pTickSend,2);
+ packet(0x08a3,clif->pFriendsListAdd,2);
+ packet(0x08a7,clif->pDull/*,XXX*/);
+ packet(0x08a9,clif->pWalkToXY,2);
+ packet(0x08ac,clif->pHomMenu,2,4);
+ packet(0x091c,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0921,clif->pReqClickBuyingStore,2);
+ packet(0x0925,clif->pMoveFromKafra,2,4);
+ packet(0x092c,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x093a,clif->pPartyInvite2,2);
+ packet(0x093d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0940,clif->pUseSkillToId,2,4,6);
+ packet(0x0941,clif->pDropItem,2,4);
+ packet(0x0950,clif->pChangeDir,2,4);
+ packet(0x0959,clif->pMoveToKafra,2,4);
+ packet(0x0960,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
#endif
// 2017-08-23aRagexeRE
#if PACKETVER == 20170823
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x086c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x086d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08ac,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x095b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pPartyInvite2,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pChangeDir,2,4);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x086c,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x086d,clif->pStoragePassword,0);
+ packet(0x08ac,clif->pFriendsListAdd,2);
+ packet(0x095b,clif->pHomMenu,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-08-30aRagexeRE, 2017-08-30bRagexeRE
#if PACKETVER == 20170830
- packet(0x0281,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x02c4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0363,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0364,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0860,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0865,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x086a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0875,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0884,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0885,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0888,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0899,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x089a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x089e,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08a2,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08a8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x091e,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0921,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0925,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x092e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0939,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x093e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0940,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0942,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0943,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0947,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0951,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0959,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0281,clif->pChangeDir,2,4);
+ packet(0x02c4,clif->pTakeItem,2);
+ packet(0x0363,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0364,clif->pDull/*,XXX*/);
+ packet(0x0860,clif->pReqCloseBuyingStore,0);
+ packet(0x0865,clif->pWalkToXY,2);
+ packet(0x086a,clif->pPartyInvite2,2);
+ packet(0x0875,clif->pDull/*,XXX*/);
+ packet(0x0884,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0885,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0888,clif->pUseSkillToId,2,4,6);
+ packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0899,clif->pDropItem,2,4);
+ packet(0x089a,clif->pItemListWindowSelected,2,4,8);
+ packet(0x089e,clif->pMoveToKafra,2,4);
+ packet(0x08a2,clif->pStoragePassword,0);
+ packet(0x08a8,clif->pMoveFromKafra,2,4);
+ packet(0x091e,clif->pTickSend,2);
+ packet(0x0921,clif->pHomMenu,2,4);
+ packet(0x0925,clif->pReqClickBuyingStore,2);
+ packet(0x092e,clif->pGetCharNameRequest,2);
+ packet(0x0939,clif->pFriendsListAdd,2);
+ packet(0x093e,clif->pActionRequest,2,6);
+ packet(0x0940,clif->pSolveCharName,2);
+ packet(0x0942,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0943,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0947,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0951,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0959,clif->pUseSkillToPos,2,4,6,8);
#endif
// 2017-09-06cRagexeRE
#if PACKETVER == 20170906
- packet(0x0202,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0281,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x02c4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0366,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0802,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0860,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0866,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x086c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x087b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08a2,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x08a3,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x08a7,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x091a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x091e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0953,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pDull/*,XXX*/);
+ packet(0x0281,clif->pStoragePassword,0);
+ packet(0x02c4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0366,clif->pPartyInvite2,2);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0802,clif->pChangeDir,2,4);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0860,clif->pDropItem,2,4);
+ packet(0x0866,clif->pItemListWindowSelected,2,4,8);
+ packet(0x086c,clif->pDull/*,XXX*/);
+ packet(0x087b,clif->pMoveToKafra,2,4);
+ packet(0x08a2,clif->pMoveFromKafra,2,4);
+ packet(0x08a3,clif->pFriendsListAdd,2);
+ packet(0x08a7,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x091a,clif->pTakeItem,2);
+ packet(0x091e,clif->pHomMenu,2,4);
+ packet(0x0953,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-09-13bRagexeRE
#if PACKETVER == 20170913
- packet(0x0281,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x035f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0437,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x07e4,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0817,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0835,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x085a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0860,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0865,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0866,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x088c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0890,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0891,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0892,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08a6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x08a7,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x08aa,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x08ab,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x08ac,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08ad,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x091b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x091d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x091e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0920,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0923,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0925,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0927,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x095a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x095c,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0281,clif->pGetCharNameRequest,2);
+ packet(0x035f,clif->pFriendsListAdd,2);
+ packet(0x0437,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x07e4,clif->pMoveFromKafra,2,4);
+ packet(0x0817,clif->pActionRequest,2,6);
+ packet(0x0835,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x085a,clif->pReqCloseBuyingStore,0);
+ packet(0x0860,clif->pTakeItem,2);
+ packet(0x0865,clif->pPartyInvite2,2);
+ packet(0x0866,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x088c,clif->pHomMenu,2,4);
+ packet(0x0890,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0891,clif->pMoveToKafra,2,4);
+ packet(0x0892,clif->pStoragePassword,0);
+ packet(0x08a6,clif->pReqClickBuyingStore,2);
+ packet(0x08a7,clif->pDull/*,XXX*/);
+ packet(0x08aa,clif->pUseSkillToId,2,4,6);
+ packet(0x08ab,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x08ac,clif->pChangeDir,2,4);
+ packet(0x08ad,clif->pItemListWindowSelected,2,4,8);
+ packet(0x091b,clif->pTickSend,2);
+ packet(0x091d,clif->pDropItem,2,4);
+ packet(0x091e,clif->pDull/*,XXX*/);
+ packet(0x0920,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0923,clif->pWalkToXY,2);
+ packet(0x0925,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0927,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x095a,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x095c,clif->pSolveCharName,2);
#endif
// 2017-09-20bRagexeRE
#if PACKETVER == 20170920
- packet(0x0369,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0436,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x07ec,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x085a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0861,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0862,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0864,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0865,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x086a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x086c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0874,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0875,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0889,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x088e,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x089b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0919,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x091e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0921,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0923,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0926,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x092e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0937,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0939,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0945,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x094c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x095d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0961,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0966,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x096a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x0369,clif->pTakeItem,2);
+ packet(0x0436,clif->pItemListWindowSelected,2,4,8);
+ packet(0x07ec,clif->pMoveFromKafra,2,4);
+ packet(0x085a,clif->pWalkToXY,2);
+ packet(0x0861,clif->pFriendsListAdd,2);
+ packet(0x0862,clif->pUseSkillToId,2,4,6);
+ packet(0x0864,clif->pStoragePassword,0);
+ packet(0x0865,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x086a,clif->pPartyInvite2,2);
+ packet(0x086c,clif->pDropItem,2,4);
+ packet(0x0874,clif->pReqCloseBuyingStore,0);
+ packet(0x0875,clif->pDull/*,XXX*/);
+ packet(0x0889,clif->pGetCharNameRequest,2);
+ packet(0x088e,clif->pTickSend,2);
+ packet(0x089b,clif->pActionRequest,2,6);
+ packet(0x0919,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x091e,clif->pDull/*,XXX*/);
+ packet(0x0921,clif->pSolveCharName,2);
+ packet(0x0923,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0926,clif->pMoveToKafra,2,4);
+ packet(0x092e,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0937,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0939,clif->pChangeDir,2,4);
+ packet(0x0945,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x094c,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x095d,clif->pHomMenu,2,4);
+ packet(0x0961,clif->pReqClickBuyingStore,2);
+ packet(0x0966,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x096a,clif->pSearchStoreInfoNextPage,0);
#endif
// 2017-09-27bRagexeRE, 2017-09-27dRagexeRE
#if PACKETVER == 20170927
- packet(0x02c4,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x035f,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0361,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0362,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0366,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x085c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0873,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0875,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x087d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x087e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x088b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0899,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x089a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x089b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x08a3,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x08a5,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x08a6,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x08ad,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x091e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0922,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0923,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0927,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x093b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0942,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0945,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x094b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x094d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0959,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x095a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x02c4,clif->pHomMenu,2,4);
+ packet(0x035f,clif->pGetCharNameRequest,2);
+ packet(0x0361,clif->pDull/*,XXX*/);
+ packet(0x0362,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0366,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x085c,clif->pUseSkillToId,2,4,6);
+ packet(0x0873,clif->pSolveCharName,2);
+ packet(0x0875,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x087d,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x087e,clif->pChangeDir,2,4);
+ packet(0x088b,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0899,clif->pActionRequest,2,6);
+ packet(0x089a,clif->pStoragePassword,0);
+ packet(0x089b,clif->pMoveFromKafra,2,4);
+ packet(0x08a3,clif->pReqCloseBuyingStore,0);
+ packet(0x08a5,clif->pItemListWindowSelected,2,4,8);
+ packet(0x08a6,clif->pDull/*,XXX*/);
+ packet(0x08ad,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x091e,clif->pReqClickBuyingStore,2);
+ packet(0x0922,clif->pPartyInvite2,2);
+ packet(0x0923,clif->pDropItem,2,4);
+ packet(0x0927,clif->pWalkToXY,2);
+ packet(0x093b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0942,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0945,clif->pTickSend,2);
+ packet(0x094b,clif->pFriendsListAdd,2);
+ packet(0x094d,clif->pTakeItem,2);
+ packet(0x0959,clif->pMoveToKafra,2,4);
+ packet(0x095a,clif->pUseSkillToPos,2,4,6,8);
#endif
// 2017-10-02cRagexeRE
#if PACKETVER == 20171002
- packet(0x022d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0363,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0885,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0897,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0899,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x089d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0928,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x092d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0934,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x093b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x093d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x093e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0943,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x095f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x022d,clif->pDropItem,2,4);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0363,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pHomMenu,2,4);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0885,clif->pMoveToKafra,2,4);
+ packet(0x0897,clif->pChangeDir,2,4);
+ packet(0x0899,clif->pFriendsListAdd,2);
+ packet(0x089d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0928,clif->pItemListWindowSelected,2,4,8);
+ packet(0x092d,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0934,clif->pStoragePassword,0);
+ packet(0x093b,clif->pMoveFromKafra,2,4);
+ packet(0x093d,clif->pTakeItem,2);
+ packet(0x093e,clif->pDull/*,XXX*/);
+ packet(0x0943,clif->pPartyInvite2,2);
+ packet(0x095f,clif->pDull/*,XXX*/);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-10-11aRagexeRE, 2017-10-11bRagexeRE
#if PACKETVER == 20171011
- packet(0x023b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x087b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0882,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0950,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0954,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x023b,clif->pWalkToXY,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pStoragePassword,0);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x087b,clif->pFriendsListAdd,2);
+ packet(0x0882,clif->pHomMenu,2,4);
+ packet(0x0950,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0954,clif->pChangeDir,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-10-18aRagexeRE
#if PACKETVER == 20171018
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0363,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x086a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x087a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x087e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0889,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x089a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x089f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x08a6,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0938,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0944,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x094a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x094f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0363,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0364,clif->pMoveToKafra,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pTakeItem,2);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x086a,clif->pDull/*,XXX*/);
+ packet(0x087a,clif->pDull/*,XXX*/);
+ packet(0x087e,clif->pHomMenu,2,4);
+ packet(0x0889,clif->pMoveFromKafra,2,4);
+ packet(0x089a,clif->pDropItem,2,4);
+ packet(0x089f,clif->pPartyInvite2,2);
+ packet(0x08a6,clif->pChangeDir,2,4);
+ packet(0x0938,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0944,clif->pStoragePassword,0);
+ packet(0x094a,clif->pFriendsListAdd,2);
+ packet(0x094f,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-10-25bRagexeRE, 2017-10-25cRagexeRE, 2017-10-25dRagexeRE, 2017-10-25eRagexeRE
#if PACKETVER == 20171025
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x08a2,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x08a2,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-11-01bRagexeRE
#if PACKETVER == 20171101
- packet(0x022d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0368,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0369,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0438,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0835,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x085b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0860,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x086c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0872,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0876,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0886,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x088e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0890,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0895,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0899,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x089b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x089c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x08a0,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x08ab,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x08ad,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x091b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0939,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x094a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x094d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0957,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x095a,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0962,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0966,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x022d,clif->pStoragePassword,0);
+ packet(0x0368,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0369,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0438,clif->pTickSend,2);
+ packet(0x0835,clif->pDropItem,2,4);
+ packet(0x085b,clif->pHomMenu,2,4);
+ packet(0x0860,clif->pGetCharNameRequest,2);
+ packet(0x086c,clif->pUseSkillToId,2,4,6);
+ packet(0x0872,clif->pFriendsListAdd,2);
+ packet(0x0876,clif->pChangeDir,2,4);
+ packet(0x0886,clif->pDull/*,XXX*/);
+ packet(0x088e,clif->pReqClickBuyingStore,2);
+ packet(0x0890,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0895,clif->pDull/*,XXX*/);
+ packet(0x0899,clif->pPartyInvite2,2);
+ packet(0x089b,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x089c,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x08a0,clif->pMoveFromKafra,2,4);
+ packet(0x08ab,clif->pItemListWindowSelected,2,4,8);
+ packet(0x08ad,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x091b,clif->pMoveToKafra,2,4);
+ packet(0x0939,clif->pWalkToXY,2);
+ packet(0x094a,clif->pReqCloseBuyingStore,0);
+ packet(0x094d,clif->pSolveCharName,2);
+ packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0957,clif->pActionRequest,2,6);
+ packet(0x095a,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0962,clif->pTakeItem,2);
+ packet(0x0966,clif->pUseSkillToPos,2,4,6,8);
#endif
// 2017-11-08bRagexeRE
#if PACKETVER == 20171108
- packet(0x0202,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0361,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x07e4,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0815,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0819,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0838,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x085d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0863,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0878,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x087e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0884,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0896,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0897,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x08a2,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x08a9,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x08ad,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x091d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x091f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0940,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0941,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0945,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0947,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0949,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x094e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0958,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x095a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0963,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0965,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0967,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0202,clif->pTickSend,2);
+ packet(0x0361,clif->pSearchStoreInfoNextPage,0);
+ packet(0x07e4,clif->pSolveCharName,2);
+ packet(0x0815,clif->pStoragePassword,0);
+ packet(0x0819,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0838,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x085d,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0863,clif->pWalkToXY,2);
+ packet(0x0878,clif->pFriendsListAdd,2);
+ packet(0x087e,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0884,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0896,clif->pDull/*,XXX*/);
+ packet(0x0897,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x08a2,clif->pUseSkillToId,2,4,6);
+ packet(0x08a9,clif->pHomMenu,2,4);
+ packet(0x08ad,clif->pGetCharNameRequest,2);
+ packet(0x091d,clif->pReqCloseBuyingStore,0);
+ packet(0x091f,clif->pChangeDir,2,4);
+ packet(0x0940,clif->pReqClickBuyingStore,2);
+ packet(0x0941,clif->pMoveToKafra,2,4);
+ packet(0x0945,clif->pTakeItem,2);
+ packet(0x0947,clif->pDull/*,XXX*/);
+ packet(0x0949,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x094e,clif->pPartyInvite2,2);
+ packet(0x0958,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x095a,clif->pMoveFromKafra,2,4);
+ packet(0x0963,clif->pActionRequest,2,6);
+ packet(0x0965,clif->pDropItem,2,4);
+ packet(0x0967,clif->pUseSkillToPos,2,4,6,8);
#endif
// 2017-11-15aRagexeRE
#if PACKETVER == 20171115
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0365,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0802,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x086d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x086f,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x087e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0883,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x088b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0890,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0898,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08a4,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0926,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0958,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x095a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0365,clif->pDropItem,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pReqClickBuyingStore,2);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0802,clif->pFriendsListAdd,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x086d,clif->pDull/*,XXX*/);
+ packet(0x086f,clif->pItemListWindowSelected,2,4,8);
+ packet(0x087e,clif->pMoveFromKafra,2,4);
+ packet(0x0883,clif->pDull/*,XXX*/);
+ packet(0x088b,clif->pMoveToKafra,2,4);
+ packet(0x0890,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0898,clif->pStoragePassword,0);
+ packet(0x08a4,clif->pChangeDir,2,4);
+ packet(0x0926,clif->pTakeItem,2);
+ packet(0x0958,clif->pHomMenu,2,4);
+ packet(0x095a,clif->pPartyInvite2,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-11-22bRagexeRE
#if PACKETVER == 20171122
- packet(0x0281,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x02c4,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x035f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0838,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x083c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x085b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0862,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0867,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0877,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0885,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0890,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0891,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0893,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0897,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0898,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x089a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x089e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x08a6,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x08a9,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x091e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0920,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0923,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0934,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x093b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0945,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0946,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0947,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0962,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0968,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0281,clif->pSolveCharName,2);
+ packet(0x02c4,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x035f,clif->pDull/*,XXX*/);
+ packet(0x0838,clif->pMoveToKafra,2,4);
+ packet(0x083c,clif->pHomMenu,2,4);
+ packet(0x085b,clif->pGetCharNameRequest,2);
+ packet(0x0862,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0867,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0877,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0885,clif->pDull/*,XXX*/);
+ packet(0x0890,clif->pTickSend,2);
+ packet(0x0891,clif->pTakeItem,2);
+ packet(0x0893,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0897,clif->pChangeDir,2,4);
+ packet(0x0898,clif->pDropItem,2,4);
+ packet(0x089a,clif->pMoveFromKafra,2,4);
+ packet(0x089e,clif->pActionRequest,2,6);
+ packet(0x08a6,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x08a9,clif->pReqClickBuyingStore,2);
+ packet(0x091e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0920,clif->pReqCloseBuyingStore,0);
+ packet(0x0923,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0934,clif->pStoragePassword,0);
+ packet(0x093b,clif->pUseSkillToId,2,4,6);
+ packet(0x0945,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0946,clif->pFriendsListAdd,2);
+ packet(0x0947,clif->pWalkToXY,2);
+ packet(0x0962,clif->pPartyInvite2,2);
+ packet(0x0968,clif->pReqOpenBuyingStore,2,4,8,9,89);
#endif
// 2017-11-29aRagexeRE
#if PACKETVER == 20171129
- packet(0x02c4,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x035f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0363,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0365,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0862,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x086d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0876,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0878,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x088a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x089c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x08a5,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0940,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x094b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0953,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0966,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x02c4,clif->pChangeDir,2,4);
+ packet(0x035f,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0363,clif->pFriendsListAdd,2);
+ packet(0x0365,clif->pDropItem,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pPartyInvite2,2);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0862,clif->pTakeItem,2);
+ packet(0x086d,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0876,clif->pDull/*,XXX*/);
+ packet(0x0878,clif->pStoragePassword,0);
+ packet(0x088a,clif->pItemListWindowSelected,2,4,8);
+ packet(0x089c,clif->pHomMenu,2,4);
+ packet(0x08a5,clif->pMoveToKafra,2,4);
+ packet(0x0940,clif->pTickSend,2);
+ packet(0x094b,clif->pDull/*,XXX*/);
+ packet(0x0953,clif->pMoveFromKafra,2,4);
+ packet(0x0966,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-12-06aRagexeRE
#if PACKETVER == 20171206
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0867,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x086a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x086e,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0885,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0888,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0897,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x089d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08a2,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x08a4,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x091d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0923,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x092e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0936,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0942,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0958,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0961,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0867,clif->pDropItem,2,4);
+ packet(0x086a,clif->pDull/*,XXX*/);
+ packet(0x086e,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0885,clif->pTickSend,2);
+ packet(0x0888,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0897,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x089d,clif->pStoragePassword,0);
+ packet(0x08a2,clif->pPartyInvite2,2);
+ packet(0x08a4,clif->pMoveFromKafra,2,4);
+ packet(0x091d,clif->pFriendsListAdd,2);
+ packet(0x0923,clif->pMoveToKafra,2,4);
+ packet(0x092e,clif->pDull/*,XXX*/);
+ packet(0x0936,clif->pChangeDir,2,4);
+ packet(0x0942,clif->pHomMenu,2,4);
+ packet(0x0958,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0961,clif->pTakeItem,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-12-13bRagexeRE
#if PACKETVER == 20171213
- packet(0x0202,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0860,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0881,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0890,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x091a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0957,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pPartyInvite2,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pFriendsListAdd,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0860,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0881,clif->pDull/*,XXX*/);
+ packet(0x0890,clif->pStoragePassword,0);
+ packet(0x091a,clif->pChangeDir,2,4);
+ packet(0x0957,clif->pHomMenu,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-12-20aRagexeRE
#if PACKETVER == 20171220
- packet(0x0281,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0366,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0369,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0436,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0437,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x085e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0861,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0872,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0873,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0880,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0882,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0885,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x088c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0899,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x089e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x08a7,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x091b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x091e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0924,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0929,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0933,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x093e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0941,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0946,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x094e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0951,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0957,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0960,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0964,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x0281,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0366,clif->pMoveFromKafra,2,4);
+ packet(0x0369,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0436,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0437,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x085e,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0861,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0872,clif->pUseSkillToId,2,4,6);
+ packet(0x0873,clif->pGetCharNameRequest,2);
+ packet(0x0880,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0882,clif->pTickSend,2);
+ packet(0x0885,clif->pItemListWindowSelected,2,4,8);
+ packet(0x088c,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0899,clif->pStoragePassword,0);
+ packet(0x089e,clif->pWalkToXY,2);
+ packet(0x08a7,clif->pReqCloseBuyingStore,0);
+ packet(0x091b,clif->pTakeItem,2);
+ packet(0x091e,clif->pSolveCharName,2);
+ packet(0x0924,clif->pMoveToKafra,2,4);
+ packet(0x0929,clif->pDropItem,2,4);
+ packet(0x0933,clif->pChangeDir,2,4);
+ packet(0x093e,clif->pActionRequest,2,6);
+ packet(0x0941,clif->pReqClickBuyingStore,2);
+ packet(0x0946,clif->pDull/*,XXX*/);
+ packet(0x094e,clif->pDull/*,XXX*/);
+ packet(0x0951,clif->pHomMenu,2,4);
+ packet(0x0957,clif->pFriendsListAdd,2);
+ packet(0x0960,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0964,clif->pPartyInvite2,2);
#endif
// 2017-12-27aRagexeRE
#if PACKETVER == 20171227
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0802,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x087d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0888,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x088a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x088d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08a0,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08a5,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x092c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x092e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0938,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0945,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0946,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0969,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x096a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pActionRequest,2,6);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pChangeDir,2,4);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0802,clif->pGetCharNameRequest,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x087d,clif->pStoragePassword,0);
+ packet(0x0888,clif->pMoveFromKafra,2,4);
+ packet(0x088a,clif->pDull/*,XXX*/);
+ packet(0x088d,clif->pTakeItem,2);
+ packet(0x08a0,clif->pMoveToKafra,2,4);
+ packet(0x08a5,clif->pHomMenu,2,4);
+ packet(0x092c,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x092e,clif->pDull/*,XXX*/);
+ packet(0x0938,clif->pPartyInvite2,2);
+ packet(0x0945,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0946,clif->pFriendsListAdd,2);
+ packet(0x0969,clif->pDropItem,2,4);
+ packet(0x096a,clif->pPartyBookingRegisterReq,2,4);
#endif
// 2018-01-03aRagexeRE, 2018-01-03bRagexeRE
#if PACKETVER == 20180103
- packet(0x02c4,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0363,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0865,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x086b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x086d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0872,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0876,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0879,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x088e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0899,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x089f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x08a9,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08ab,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x08ac,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x091d,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0922,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0926,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0927,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x092c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0935,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0938,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0941,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0946,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0948,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x094e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x095d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x095f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0960,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
+ packet(0x02c4,clif->pMoveToKafra,2,4);
+ packet(0x0363,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0865,clif->pDull/*,XXX*/);
+ packet(0x086b,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x086d,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0872,clif->pReqClickBuyingStore,2);
+ packet(0x0876,clif->pTickSend,2);
+ packet(0x0879,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x088e,clif->pReqCloseBuyingStore,0);
+ packet(0x0899,clif->pFriendsListAdd,2);
+ packet(0x089f,clif->pSolveCharName,2);
+ packet(0x08a9,clif->pChangeDir,2,4);
+ packet(0x08ab,clif->pGetCharNameRequest,2);
+ packet(0x08ac,clif->pItemListWindowSelected,2,4,8);
+ packet(0x091d,clif->pActionRequest,2,6);
+ packet(0x0922,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0926,clif->pDull/*,XXX*/);
+ packet(0x0927,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x092c,clif->pMoveFromKafra,2,4);
+ packet(0x0935,clif->pTakeItem,2);
+ packet(0x0938,clif->pUseSkillToId,2,4,6);
+ packet(0x0941,clif->pWalkToXY,2);
+ packet(0x0946,clif->pStoragePassword,0);
+ packet(0x0948,clif->pHomMenu,2,4);
+ packet(0x094e,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x095d,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x095f,clif->pDropItem,2,4);
+ packet(0x0960,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
#endif
// 2018-01-17aRagexeRE
#if PACKETVER == 20180117
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0875,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0875,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2018-01-24bRagexeRE
#if PACKETVER == 20180124
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0802,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0868,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x086a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x086f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x087a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0888,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0890,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0919,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0940,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0946,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x094d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0958,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0961,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pMoveToKafra,2,4);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0802,clif->pDropItem,2,4);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085f,clif->pStoragePassword,0);
+ packet(0x0868,clif->pDull/*,XXX*/);
+ packet(0x086a,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x086f,clif->pDull/*,XXX*/);
+ packet(0x087a,clif->pPartyInvite2,2);
+ packet(0x0888,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0890,clif->pMoveFromKafra,2,4);
+ packet(0x0919,clif->pFriendsListAdd,2);
+ packet(0x0940,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0946,clif->pItemListWindowSelected,2,4,8);
+ packet(0x094d,clif->pTakeItem,2);
+ packet(0x0958,clif->pChangeDir,2,4);
+ packet(0x0961,clif->pHomMenu,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2018-02-07bRagexeRE
#if PACKETVER == 20180207
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0360,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0870,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0881,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x092c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x092e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0940,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0950,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pReqClickBuyingStore,2);
+ packet(0x0360,clif->pDull/*,XXX*/);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0870,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0881,clif->pFriendsListAdd,2);
+ packet(0x092c,clif->pHomMenu,2,4);
+ packet(0x092e,clif->pChangeDir,2,4);
+ packet(0x0940,clif->pTickSend,2);
+ packet(0x0950,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2018-02-13aRagexeRE
#if PACKETVER == 20180213
- packet(0x0369,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0802,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0817,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x085a,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x086f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0874,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0875,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0878,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x087b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0882,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x088c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0892,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0898,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x089c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x08a3,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x08a5,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x08a9,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x08ad,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0917,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0922,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0924,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0926,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0933,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0936,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x093c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0943,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0955,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x095a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0962,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0369,clif->pStoragePassword,0);
+ packet(0x0802,clif->pDropItem,2,4);
+ packet(0x0817,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x085a,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x086f,clif->pPartyInvite2,2);
+ packet(0x0874,clif->pTickSend,2);
+ packet(0x0875,clif->pMoveFromKafra,2,4);
+ packet(0x0878,clif->pChangeDir,2,4);
+ packet(0x087b,clif->pReqClickBuyingStore,2);
+ packet(0x0882,clif->pUseSkillToId,2,4,6);
+ packet(0x088c,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0892,clif->pTakeItem,2);
+ packet(0x0898,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x089c,clif->pDull/*,XXX*/);
+ packet(0x08a3,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x08a5,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x08a9,clif->pReqCloseBuyingStore,0);
+ packet(0x08ad,clif->pSolveCharName,2);
+ packet(0x0917,clif->pFriendsListAdd,2);
+ packet(0x0922,clif->pWalkToXY,2);
+ packet(0x0924,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0926,clif->pDull/*,XXX*/);
+ packet(0x0933,clif->pActionRequest,2,6);
+ packet(0x0936,clif->pSearchStoreInfoNextPage,0);
+ packet(0x093c,clif->pGetCharNameRequest,2);
+ packet(0x0943,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0955,clif->pMoveToKafra,2,4);
+ packet(0x095a,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0962,clif->pHomMenu,2,4);
#endif
// 2018-02-21aRagexeRE, 2018-02-21bRagexeRE
#if PACKETVER == 20180221
- packet(0x0202,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0366,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0436,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0838,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0867,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x086c,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x086f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0871,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0876,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0879,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x087d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0880,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0881,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0883,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x088f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0891,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0897,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0899,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x089d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0917,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x091e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0929,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x093d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x094b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x094d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x094e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0957,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0964,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x096a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0202,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0366,clif->pDull/*,XXX*/);
+ packet(0x0436,clif->pFriendsListAdd,2);
+ packet(0x0838,clif->pChangeDir,2,4);
+ packet(0x0867,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x086c,clif->pReqClickBuyingStore,2);
+ packet(0x086f,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0871,clif->pDropItem,2,4);
+ packet(0x0876,clif->pHomMenu,2,4);
+ packet(0x0879,clif->pMoveToKafra,2,4);
+ packet(0x087d,clif->pWalkToXY,2);
+ packet(0x0880,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0881,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0883,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x088f,clif->pSolveCharName,2);
+ packet(0x0891,clif->pDull/*,XXX*/);
+ packet(0x0897,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0899,clif->pSearchStoreInfoNextPage,0);
+ packet(0x089d,clif->pTickSend,2);
+ packet(0x0917,clif->pStoragePassword,0);
+ packet(0x091e,clif->pMoveFromKafra,2,4);
+ packet(0x0929,clif->pReqCloseBuyingStore,0);
+ packet(0x093d,clif->pPartyInvite2,2);
+ packet(0x094b,clif->pUseSkillToId,2,4,6);
+ packet(0x094d,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x094e,clif->pTakeItem,2);
+ packet(0x0957,clif->pGetCharNameRequest,2);
+ packet(0x0964,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x096a,clif->pActionRequest,2,6);
#endif
// 2018-03-07bRagexeRE
#if PACKETVER == 20180307
- packet(0x0281,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x035f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0437,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x07e4,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0861,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0862,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0864,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x086c,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0870,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0872,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0877,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x088d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0893,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x089b,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x08a6,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x08aa,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x08ab,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0917,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0920,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0937,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0939,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x093d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0941,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0944,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0948,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0951,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0954,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0957,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0969,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
-#endif
-
-// 2018-03-21aRagexeRE, 2018-03-28bRagexeRE, 2018-04-04cRagexeRE, 2018-04-18bRagexeRE, 2018-04-25cRagexeRE, 2018-05-02bRagexeRE, 2018-05-02dRagexeRE, 2018-05-16cRagexeRE, 2018-05-23aRagexeRE, 2018-05-30bRagexeRE, 2018-05-30cRagexeRE, 2018-06-05bRagexeRE, 2018-06-12aRagexeRE, 2018-06-12bRagexeRE, 2018-06-20dRagexeRE, 2018-06-20eRagexeRE, 2018-06-21aRagexeRE
+ packet(0x0281,clif->pDull/*,XXX*/);
+ packet(0x035f,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0437,clif->pDropItem,2,4);
+ packet(0x07e4,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0861,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0862,clif->pReqClickBuyingStore,2);
+ packet(0x0864,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x086c,clif->pTickSend,2);
+ packet(0x0870,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0872,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0877,clif->pWalkToXY,2);
+ packet(0x088d,clif->pMoveFromKafra,2,4);
+ packet(0x0893,clif->pUseSkillToId,2,4,6);
+ packet(0x089b,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x08a6,clif->pSearchStoreInfoNextPage,0);
+ packet(0x08aa,clif->pFriendsListAdd,2);
+ packet(0x08ab,clif->pChangeDir,2,4);
+ packet(0x0917,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0920,clif->pMoveToKafra,2,4);
+ packet(0x0937,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0939,clif->pStoragePassword,0);
+ packet(0x093d,clif->pReqCloseBuyingStore,0);
+ packet(0x0941,clif->pGetCharNameRequest,2);
+ packet(0x0944,clif->pHomMenu,2,4);
+ packet(0x0948,clif->pPartyInvite2,2);
+ packet(0x0951,clif->pDull/*,XXX*/);
+ packet(0x0954,clif->pTakeItem,2);
+ packet(0x0957,clif->pSolveCharName,2);
+ packet(0x0969,clif->pActionRequest,2,6);
+#endif
+
+// 2018-03-21aRagexeRE, 2018-03-28bRagexeRE, 2018-04-04cRagexeRE, 2018-04-18bRagexeRE, 2018-04-25cRagexeRE, 2018-05-02bRagexeRE, 2018-05-02dRagexeRE, 2018-05-16cRagexeRE, 2018-05-23aRagexeRE, 2018-05-30bRagexeRE, 2018-05-30cRagexeRE, 2018-06-05bRagexeRE, 2018-06-12aRagexeRE, 2018-06-12bRagexeRE, 2018-06-20dRagexeRE, 2018-06-20eRagexeRE, 2018-06-21aRagexeRE, 2018-07-04aRagexeRE, 2018-07-11aRagexeRE, 2018-07-18bRagexeRE, 2018-07-18bRagexeRE1, 2018-07-18cRagexeRE, 2018-08-01cRagexeRE, 2018-08-08bRagexeRE, 2018-08-22cRagexeRE, 2018-08-29aRagexeRE, 2018-08-29bRagexeRE, 2018-09-12dRagexeRE, 2018-09-19aRagexeRE, 2018-10-02aRagexeRE, 2018-10-02bRagexeRE, 2018-10-17_02aRagexeRE, 2018-10-17_03aRagexeRE, 2018-10-17bRagexeRE, 2018-10-31cRagexeRE, 2018-11-07aRagexeRE, 2018-11-14cRagexeRE, 2018-11-14dRagexeRE, 2018-11-21cRagexeRE, 2018-11-28aRagexeRE, 2018-12-05bRagexeRE, 2018-12-12aRagexeRE, 2018-12-12bRagexeRE, 2018-12-19bRagexeRE, 2018-12-26aRagexeRE, 2019-01-09bRagexeRE, 2019-01-16bRagexeRE, 2019-01-16cRagexeRE, 2019-01-23dRagexeRE, 2019-02-13IRagexeRE, 2019-02-20aRagexeRE, 2019-02-27bRagexeRE, 2019-02-28aRagexeRE, 2019-03-06bRagexeRE, 2019-03-06cRagexeRE, 2019-03-20aRagexeRE, 2019-03-22aRagexeRE, 2019-03-27bRagexeRE, 2019-04-03bRagexeRE, 2019-04-03cRagexeRE, 2019-04-17cRagexeRE, 2019-04-18aRagexeRE, 2019-05-08dRagexeRE, 2019-05-08eRagexeRE, 2019-05-22bRagexeRE, 2019-05-22cRagexeRE, 2019-05-29bRagexeRE, 2019-05-29cRagexeRE, 2019-05-30aRagexeRE, 2019-06-05hRagexeRE, 2019-06-05JRagexeRE, 2019-06-05LRagexeRE, 2019-06-19cRagexeRE, 2019-06-26bRagexeRE, 2019-07-03bRagexeRE, 2019-07-17cRagexeRE, 2019-07-17dRagexeRE, 2019-07-24bRagexeRE, 2019-07-31bRagexeRE, 2019-08-02aRagexeRE, 2019-08-07dRagexeRE, 2019-08-21cRagexeRE, 2019-08-21dRagexeRE, 2019-08-28aRagexeRE, 2019-09-04bRagexeRE, 2019-09-18cRagexeRE, 2019-09-25aRagexeRE, 2019-09-25bRagexeRE, 2019-10-02bRagexeRE, 2019-10-02dRagexeRE, 2019-10-02dRagexeRE_2, 2019-10-16fRagexeRE, 2019-10-16gRagexeRE, 2019-10-23aRagexeRE, 2019-10-30bRagexeRE, 2019-11-06bRagexeRE, 2019-11-07aRagexeRE, 2019-11-13eRagexeRE, 2019-11-20cRagexeRE, 2019-11-27aRagexeRE, 2019-12-04aRagexeRE, 2019-12-04bRagexeRE, 2019-12-04cRagexeRE, 2019-12-11fRagexeRE, 2019-12-18bRagexeRE, 2019-12-24aRagexeRE, 2019-12-24bRagexeRE, 2020-01-08bRagexeRE, 2020-01-22cRagexeRE, 2020-02-05aRagexeRE, 2020-02-12aRagexeRE, 2020-02-19eRagexeRE, 2020-03-04aRagexeRE, 2020-07-09_sakaRagexeRE
#if PACKETVER == 20180321 || \
PACKETVER == 20180328 || \
PACKETVER == 20180404 || \
@@ -9631,40 +9631,8 @@
PACKETVER == 20180605 || \
PACKETVER == 20180612 || \
PACKETVER == 20180620 || \
- PACKETVER == 20180621
- packet(0x0202,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x022d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x023b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0281,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x02c4,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x035f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0360,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0361,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0362,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0363,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0365,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0366,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0436,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0438,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x07e4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x07ec,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0811,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0815,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0817,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0835,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0838,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
-#endif
-
-// 2018-07-04aRagexeRE, 2018-07-11aRagexeRE, 2018-07-18bRagexeRE, 2018-07-18bRagexeRE1, 2018-07-18cRagexeRE, 2018-08-01cRagexeRE, 2018-08-08bRagexeRE, 2018-08-22cRagexeRE, 2018-08-29aRagexeRE, 2018-08-29bRagexeRE, 2018-09-12dRagexeRE, 2018-09-19aRagexeRE, 2018-10-02aRagexeRE, 2018-10-02bRagexeRE, 2018-10-17_02aRagexeRE, 2018-10-17_03aRagexeRE, 2018-10-17bRagexeRE, 2018-10-31cRagexeRE, 2018-11-07aRagexeRE, 2018-11-14cRagexeRE, 2018-11-14dRagexeRE, 2018-11-21cRagexeRE, 2018-11-28aRagexeRE, 2018-12-05bRagexeRE, 2018-12-12aRagexeRE, 2018-12-12bRagexeRE, 2018-12-19bRagexeRE, 2018-12-26aRagexeRE, 2019-01-09bRagexeRE, 2019-01-16bRagexeRE, 2019-01-16cRagexeRE, 2019-01-23dRagexeRE, 2019-02-13IRagexeRE, 2019-02-20aRagexeRE, 2019-02-27bRagexeRE, 2019-02-28aRagexeRE, 2019-03-06bRagexeRE, 2019-03-06cRagexeRE, 2019-03-20aRagexeRE, 2019-03-22aRagexeRE, 2019-03-27bRagexeRE, 2019-04-03bRagexeRE, 2019-04-03cRagexeRE, 2019-04-17cRagexeRE, 2019-04-18aRagexeRE, 2019-05-08dRagexeRE, 2019-05-08eRagexeRE, 2019-05-22bRagexeRE, 2019-05-22cRagexeRE, 2019-05-29bRagexeRE, 2019-05-29cRagexeRE, 2019-05-30aRagexeRE, 2019-06-05hRagexeRE, 2019-06-05JRagexeRE, 2019-06-05LRagexeRE, 2019-06-19cRagexeRE, 2019-06-26bRagexeRE, 2019-07-03bRagexeRE, 2019-07-17cRagexeRE, 2019-07-17dRagexeRE, 2019-07-24bRagexeRE, 2019-07-31bRagexeRE, 2019-08-02aRagexeRE, 2019-08-07dRagexeRE, 2019-08-21cRagexeRE, 2019-08-21dRagexeRE, 2019-08-28aRagexeRE
-#if PACKETVER == 20180704 || \
+ PACKETVER == 20180621 || \
+ PACKETVER == 20180704 || \
PACKETVER == 20180711 || \
PACKETVER == 20180718 || \
PACKETVER == 20180801 || \
@@ -9712,40 +9680,8 @@
PACKETVER == 20190802 || \
PACKETVER == 20190807 || \
PACKETVER == 20190821 || \
- PACKETVER >= 20190828
- packet(0x0202,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x022d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x023b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0281,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x02c4,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x035f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0360,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0361,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0362,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0363,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0365,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0366,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0436,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0438,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x07e4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x07ec,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0811,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0815,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0817,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0835,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0838,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 14
-#endif
-
-// 2019-09-04bRagexeRE, 2019-09-18cRagexeRE, 2019-09-25aRagexeRE, 2019-09-25bRagexeRE, 2019-10-02bRagexeRE, 2019-10-02dRagexeRE, 2019-10-02dRagexeRE_2, 2019-10-16fRagexeRE, 2019-10-16gRagexeRE, 2019-10-23aRagexeRE, 2019-10-30bRagexeRE, 2019-11-06bRagexeRE, 2019-11-07aRagexeRE, 2019-11-13eRagexeRE, 2019-11-20cRagexeRE, 2019-11-27aRagexeRE, 2019-12-04aRagexeRE, 2019-12-04bRagexeRE, 2019-12-04cRagexeRE, 2019-12-11fRagexeRE, 2019-12-18bRagexeRE, 2019-12-24aRagexeRE, 2019-12-24bRagexeRE, 2020-01-08bRagexeRE, 2020-01-22cRagexeRE, 2020-02-05aRagexeRE
-#if PACKETVER == 20190904 || \
+ PACKETVER == 20190828 || \
+ PACKETVER == 20190904 || \
PACKETVER == 20190918 || \
PACKETVER == 20190925 || \
PACKETVER == 20191002 || \
@@ -9763,36 +9699,40 @@
PACKETVER == 20191224 || \
PACKETVER == 20200108 || \
PACKETVER == 20200122 || \
- PACKETVER == 20200205
- packet(0x0202,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x022d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x023b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0281,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x02c4,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x035f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0360,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0361,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0362,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0363,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0365,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0366,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 31
- packet(0x0368,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0436,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0438,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x07e4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x07ec,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0811,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0815,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0817,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0835,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0838,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 14
+ PACKETVER == 20200205 || \
+ PACKETVER == 20200212 || \
+ PACKETVER == 20200219 || \
+ PACKETVER == 20200304 || \
+ PACKETVER >= 20200709
+ packet(0x0202,clif->pFriendsListAdd,2);
+ packet(0x022d,clif->pHomMenu,2,4);
+ packet(0x023b,clif->pStoragePassword,0);
+ packet(0x0281,clif->pDull/*,XXX*/);
+ packet(0x02c4,clif->pPartyInvite2,2);
+ packet(0x035f,clif->pWalkToXY,2);
+ packet(0x0360,clif->pTickSend,2);
+ packet(0x0361,clif->pChangeDir,2,4);
+ packet(0x0362,clif->pTakeItem,2);
+ packet(0x0363,clif->pDropItem,2,4);
+ packet(0x0364,clif->pMoveToKafra,2,4);
+ packet(0x0365,clif->pMoveFromKafra,2,4);
+ packet(0x0366,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pGetCharNameRequest,2);
+ packet(0x0369,clif->pSolveCharName,2);
+ packet(0x0436,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0437,clif->pActionRequest,2,6);
+ packet(0x0438,clif->pUseSkillToId,2,4,6);
+ packet(0x07e4,clif->pItemListWindowSelected,2,4,8);
+ packet(0x07ec,clif->pDull/*,XXX*/);
+ packet(0x0802,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0811,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0815,clif->pReqCloseBuyingStore,0);
+ packet(0x0817,clif->pReqClickBuyingStore,2);
+ packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0835,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0838,clif->pSearchStoreInfoNextPage,0);
+ packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10);
#endif
diff --git a/src/map/packets_shuffle_zero.h b/src/map/packets_shuffle_zero.h
index 602264a8f..5ff03b264 100644
--- a/src/map/packets_shuffle_zero.h
+++ b/src/map/packets_shuffle_zero.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2020 Hercules Dev Team
- * Copyright (C) 2018-2020 Andrei Karas (4144)
+ * Copyright (C) 2013-2020 Hercules Dev Team
+ * Copyright (C) 2018-2020 Andrei Karas (4144)
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -37,7 +37,7 @@
/* This file is autogenerated, please do not commit manual changes */
-// 2017-10-18aRagexe_zero, 2017-10-19aRagexe_zero, 2017-10-23aRagexe_zero, 2017-10-23bRagexe_zero, 2017-10-23cRagexe_zero, 2017-10-24aRagexe_2_zero, 2017-10-24aRagexe_zero, 2017-10-25bRagexe_zero, 2017-10-27aRagexe_zero, 2017-10-27bRagexe_zero, 2017-10-30aRagexe_zero, 2017-10-31aRagexe_zero, 2017-11-09aRagexe_zero, 2017-11-13aRagexe_zero, 2017-11-13bRagexe_zero, 2018-03-15aRagexe_zero, 2018-03-21aRagexe_zero, 2018-03-21bRagexe_zero, 2018-03-28_1aRagexe_zero, 2018-03-28cRagexe_zero, 2018-04-11aRagexe_zero, 2018-04-25_3aRagexe_zero, 2018-05-09_3aRagexe_zero, 2018-05-23aRagexe_zero, 2018-06-05bRagexe_zero, 2018-06-05cRagexe_zero, 2018-06-27aRagexe_zero, 2018-07-03aRagexe_zero, 2018-07-11_2aRagexe_zero, 2018-07-25_2aRagexe_zero, 2018-08-01aRagexe_zero, 2018-08-08_2aRagexe_zero, 2018-08-22aRagexe_zero, 2018-08-29aRagexe_zero, 2018-09-05aRagexe_zero, 2018-09-12aRagexe_zero, 2018-09-19aRagexe_zero, 2018-09-28aRagexe_zero, 2018-10-10_2aRagexe_zero, 2018-10-24_2aRagexe_zero
+// 2017-10-18aRagexe_zero, 2017-10-19aRagexe_zero, 2017-10-23aRagexe_zero, 2017-10-23bRagexe_zero, 2017-10-23cRagexe_zero, 2017-10-24aRagexe_2_zero, 2017-10-24aRagexe_zero, 2017-10-25bRagexe_zero, 2017-10-27aRagexe_zero, 2017-10-27bRagexe_zero, 2017-10-30aRagexe_zero, 2017-10-31aRagexe_zero, 2017-11-09aRagexe_zero, 2017-11-13aRagexe_zero, 2017-11-13bRagexe_zero, 2018-03-15aRagexe_zero, 2018-03-21aRagexe_zero, 2018-03-21bRagexe_zero, 2018-03-28_1aRagexe_zero, 2018-03-28cRagexe_zero, 2018-04-11aRagexe_zero, 2018-04-25_3aRagexe_zero, 2018-05-09_3aRagexe_zero, 2018-05-23aRagexe_zero, 2018-06-05bRagexe_zero, 2018-06-05cRagexe_zero, 2018-06-27aRagexe_zero, 2018-07-03aRagexe_zero, 2018-07-11_2aRagexe_zero, 2018-07-25_2aRagexe_zero, 2018-08-01aRagexe_zero, 2018-08-08_2aRagexe_zero, 2018-08-22aRagexe_zero, 2018-08-29aRagexe_zero, 2018-09-05aRagexe_zero, 2018-09-12aRagexe_zero, 2018-09-19aRagexe_zero, 2018-09-28aRagexe_zero, 2018-10-10_2aRagexe_zero, 2018-10-24_2aRagexe_zero, 2018-11-14aRagexe_zero, 2018-11-20aRagexe_zero, 2018-11-28aRagexe_zero, 2018-12-12aRagexe_zero, 2018-12-19aRagexe_zero, 2018-12-26_2aRagexe_zero, 2019-01-16_2aRagexe_zero, 2019-01-17_1aRagexe_zero, 2019-01-30_2aRagexe_zero, 2019-02-13aRagexe_zero, 2019-02-20aRagexe_zero, 2019-02-27aRagexe_zero, 2019-03-13aRagexe_zero, 2019-03-27_2aRagexe_zero, 2019-03-27_3aRagexe_zero, 2019-04-03aRagexe_zero, 2019-04-10bRagexe_zero, 2019-04-24aRagexe_zero, 2019-05-02aRagexe_zero, 2019-05-08_2aRagexe_zero, 2019-05-08aRagexe_zero, 2019-05-15aRagexe_zero, 2019-05-29aRagexe_zero, 2019-05-30aRagexe_zero, 2019-06-05_2aRagexe_zero, 2019-06-26_2aRagexe_zero, 2019-06-26_3aRagexe_zero, 2019-07-09aRagexe_zero, 2019-07-10_3aRagexe_zero, 2019-07-17aRagexe_zero, 2019-07-24aRagexe_zero, 2019-08-14_3aRagexe_zero, 2019-08-28_2aRagexe_zero, 2019-08-28_3aRagexe_zero, 2019-09-11aRagexe_zero, 2019-09-18_2aRagexe_zero, 2019-09-18aRagexe_zero, 2019-09-25_3aRagexe_zero, 2019-09-25_5aRagexe_zero, 2019-10-08_2aRagexe_zero, 2019-10-23_2aRagexe_zero, 2019-11-06aRagexe_zero, 2019-11-13aRagexe_zero, 2019-11-27_2aRagexe_zero, 2019-11-27aRagexe_zero, 2019-12-04aRagexe_zero, 2019-12-11_2aRagexe_zero, 2019-12-24_4aRagexe_zero, 2019-12-24_5aRagexe_zero, 2020-01-15_2aRagexe_zero, 2020-01-15aRagexe_zero, 2020-01-29_2aRagexe_zero, 2020-01-29aRagexe_zero, 2020-02-12aRagexe_zero, 2020-02-26aRagexe_zero, 2020-02-26bRagexe_zero, 2020-03-04aRagexe_zero, 2020-03-18_2aRagexe_zero, 2020-04-01_2aRagexe_zero, 2020-04-14bRagexe_zero, 2020-05-06aRagexe_zero, 2020-05-20_5aRagexe_zero, 2020-06-03_2aRagexe_zero, 2020-06-17aRagexe_zero, 2020-07-01_2aRagexe_zero, 2020-07-01aRagexe_zero
#if PACKETVER == 20171018 || \
PACKETVER == 20171019 || \
PACKETVER == 20171023 || \
@@ -69,238 +69,292 @@
PACKETVER == 20180919 || \
PACKETVER == 20180928 || \
PACKETVER == 20181010 || \
- PACKETVER == 20181024
- packet(0x0202,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x022d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x023b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0281,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x02c4,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x035f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0360,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0361,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0362,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0363,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0365,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0366,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0436,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0438,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x07e4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x07ec,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0811,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0815,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0817,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0835,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0838,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ PACKETVER == 20181024 || \
+ PACKETVER == 20181114 || \
+ PACKETVER == 20181120 || \
+ PACKETVER == 20181128 || \
+ PACKETVER == 20181212 || \
+ PACKETVER == 20181219 || \
+ PACKETVER == 20181226 || \
+ PACKETVER == 20190116 || \
+ PACKETVER == 20190117 || \
+ PACKETVER == 20190130 || \
+ PACKETVER == 20190213 || \
+ PACKETVER == 20190220 || \
+ PACKETVER == 20190227 || \
+ PACKETVER == 20190313 || \
+ PACKETVER == 20190327 || \
+ PACKETVER == 20190403 || \
+ PACKETVER == 20190410 || \
+ PACKETVER == 20190424 || \
+ PACKETVER == 20190502 || \
+ PACKETVER == 20190508 || \
+ PACKETVER == 20190515 || \
+ PACKETVER == 20190529 || \
+ PACKETVER == 20190530 || \
+ PACKETVER == 20190605 || \
+ PACKETVER == 20190626 || \
+ PACKETVER == 20190709 || \
+ PACKETVER == 20190710 || \
+ PACKETVER == 20190717 || \
+ PACKETVER == 20190724 || \
+ PACKETVER == 20190814 || \
+ PACKETVER == 20190828 || \
+ PACKETVER == 20190911 || \
+ PACKETVER == 20190918 || \
+ PACKETVER == 20190925 || \
+ PACKETVER == 20191008 || \
+ PACKETVER == 20191023 || \
+ PACKETVER == 20191106 || \
+ PACKETVER == 20191113 || \
+ PACKETVER == 20191127 || \
+ PACKETVER == 20191204 || \
+ PACKETVER == 20191211 || \
+ PACKETVER == 20191224 || \
+ PACKETVER == 20200115 || \
+ PACKETVER == 20200129 || \
+ PACKETVER == 20200212 || \
+ PACKETVER == 20200226 || \
+ PACKETVER == 20200304 || \
+ PACKETVER == 20200318 || \
+ PACKETVER == 20200401 || \
+ PACKETVER == 20200414 || \
+ PACKETVER == 20200506 || \
+ PACKETVER == 20200520 || \
+ PACKETVER == 20200603 || \
+ PACKETVER == 20200617 || \
+ PACKETVER >= 20200701
+ packet(0x0202,clif->pFriendsListAdd,2);
+ packet(0x022d,clif->pHomMenu,2,4);
+ packet(0x023b,clif->pStoragePassword,0);
+ packet(0x0281,clif->pDull/*,XXX*/);
+ packet(0x02c4,clif->pPartyInvite2,2);
+ packet(0x035f,clif->pWalkToXY,2);
+ packet(0x0360,clif->pTickSend,2);
+ packet(0x0361,clif->pChangeDir,2,4);
+ packet(0x0362,clif->pTakeItem,2);
+ packet(0x0363,clif->pDropItem,2,4);
+ packet(0x0364,clif->pMoveToKafra,2,4);
+ packet(0x0365,clif->pMoveFromKafra,2,4);
+ packet(0x0366,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pGetCharNameRequest,2);
+ packet(0x0369,clif->pSolveCharName,2);
+ packet(0x0436,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0437,clif->pActionRequest,2,6);
+ packet(0x0438,clif->pUseSkillToId,2,4,6);
+ packet(0x07e4,clif->pItemListWindowSelected,2,4,8);
+ packet(0x07ec,clif->pDull/*,XXX*/);
+ packet(0x0802,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0811,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0815,clif->pReqCloseBuyingStore,0);
+ packet(0x0817,clif->pReqClickBuyingStore,2);
+ packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0835,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0838,clif->pSearchStoreInfoNextPage,0);
+ packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10);
#endif
// 2017-11-15aRagexe_zero, 2017-11-15bRagexe_zero, 2017-11-16aRagexe_zero, 2017-11-17aRagexe_zero
#if PACKETVER == 20171115 || \
PACKETVER == 20171116 || \
PACKETVER == 20171117
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0860,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0881,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x091c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0922,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0959,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0966,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0860,clif->pDull/*,XXX*/);
+ packet(0x0881,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x091c,clif->pHomMenu,2,4);
+ packet(0x0922,clif->pStoragePassword,0);
+ packet(0x0959,clif->pChangeDir,2,4);
+ packet(0x0966,clif->pFriendsListAdd,2);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-11-21aRagexe_zero, 2017-11-22aRagexe_zero
#if PACKETVER == 20171121 || \
PACKETVER == 20171122
- packet(0x0202,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x022d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0866,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0889,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0892,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x089e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08ad,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0918,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x091f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0928,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0943,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0950,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pStoragePassword,0);
+ packet(0x022d,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pHomMenu,2,4);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0866,clif->pMoveToKafra,2,4);
+ packet(0x0889,clif->pMoveFromKafra,2,4);
+ packet(0x0892,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x089e,clif->pChangeDir,2,4);
+ packet(0x08ad,clif->pPartyInvite2,2);
+ packet(0x0918,clif->pTakeItem,2);
+ packet(0x091f,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0928,clif->pFriendsListAdd,2);
+ packet(0x0943,clif->pDull/*,XXX*/);
+ packet(0x0950,clif->pDull/*,XXX*/);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-11-23dRagexe_zero
#if PACKETVER == 20171123
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0367,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0860,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0876,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0882,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x088c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0896,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x089e,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x08a8,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x092b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0930,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0935,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0947,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0960,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0367,clif->pHomMenu,2,4);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085f,clif->pDropItem,2,4);
+ packet(0x0860,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0876,clif->pDull/*,XXX*/);
+ packet(0x0882,clif->pItemListWindowSelected,2,4,8);
+ packet(0x088c,clif->pPartyInvite2,2);
+ packet(0x0896,clif->pChangeDir,2,4);
+ packet(0x089e,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x08a8,clif->pFriendsListAdd,2);
+ packet(0x092b,clif->pMoveToKafra,2,4);
+ packet(0x0930,clif->pTakeItem,2);
+ packet(0x0935,clif->pMoveFromKafra,2,4);
+ packet(0x0947,clif->pStoragePassword,0);
+ packet(0x0960,clif->pDull/*,XXX*/);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-11-27aRagexe_zero, 2017-11-27cRagexe_zero, 2017-11-28aRagexe_zero
#if PACKETVER == 20171127 || \
PACKETVER == 20171128
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0893,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0893,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-11-30bRagexe_zero
#if PACKETVER == 20171130
- packet(0x0361,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0864,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x086f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0871,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0872,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0875,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0878,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0881,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0884,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0886,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0887,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x088b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0894,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0899,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x08a0,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x08a7,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0925,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0928,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0930,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0931,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0935,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x093a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0947,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x094c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x094f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x095b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x095f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0960,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0965,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x0361,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0864,clif->pGetCharNameRequest,2);
+ packet(0x086f,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0871,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0872,clif->pReqClickBuyingStore,2);
+ packet(0x0875,clif->pTakeItem,2);
+ packet(0x0878,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0881,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0884,clif->pDropItem,2,4);
+ packet(0x0886,clif->pReqCloseBuyingStore,0);
+ packet(0x0887,clif->pStoragePassword,0);
+ packet(0x088b,clif->pMoveToKafra,2,4);
+ packet(0x0894,clif->pWalkToXY,2);
+ packet(0x0899,clif->pDull/*,XXX*/);
+ packet(0x08a0,clif->pChangeDir,2,4);
+ packet(0x08a7,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0925,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0928,clif->pDull/*,XXX*/);
+ packet(0x0930,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0931,clif->pFriendsListAdd,2);
+ packet(0x0935,clif->pMoveFromKafra,2,4);
+ packet(0x093a,clif->pActionRequest,2,6);
+ packet(0x0947,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x094c,clif->pHomMenu,2,4);
+ packet(0x094f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x095b,clif->pTickSend,2);
+ packet(0x095f,clif->pPartyInvite2,2);
+ packet(0x0960,clif->pSolveCharName,2);
+ packet(0x0965,clif->pUseSkillToId,2,4,6);
#endif
// 2017-12-04bRagexe_zero
#if PACKETVER == 20171204
- packet(0x0281,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x085b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x086f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x087d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0885,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0887,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0892,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0896,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x08aa,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0917,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x091b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0921,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0924,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0937,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0960,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0281,clif->pTakeItem,2);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x085b,clif->pDull/*,XXX*/);
+ packet(0x086f,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x087d,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0885,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0887,clif->pChangeDir,2,4);
+ packet(0x0892,clif->pDull/*,XXX*/);
+ packet(0x0896,clif->pStoragePassword,0);
+ packet(0x08aa,clif->pPartyInvite2,2);
+ packet(0x0917,clif->pMoveFromKafra,2,4);
+ packet(0x091b,clif->pFriendsListAdd,2);
+ packet(0x0921,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0924,clif->pHomMenu,2,4);
+ packet(0x0937,clif->pMoveToKafra,2,4);
+ packet(0x0960,clif->pDropItem,2,4);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2017-12-06aRagexe_zero, 2017-12-06bRagexe_zero, 2017-12-06cRagexe_zero, 2017-12-06dRagexe_zero, 2017-12-08aRagexe_zero, 2017-12-08cRagexe_zero, 2017-12-08dRagexe_zero, 2017-12-09bRagexe_zero, 2017-12-09cRagexe_zero, 2017-12-10aRagexe_zero, 2017-12-11bRagexe_zero, 2017-12-12aRagexe_zero, 2017-12-13aRagexe_zero, 2017-12-13bRagexe_zero, 2017-12-13cRagexe_zero
@@ -311,542 +365,435 @@
PACKETVER == 20171211 || \
PACKETVER == 20171212 || \
PACKETVER == 20171213
- packet(0x0281,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0366,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0436,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0835,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x083c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0860,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0862,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0864,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0870,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0878,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x087a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x087b,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0885,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x088d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0893,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0897,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x089e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x08a4,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x08ac,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0920,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0934,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0936,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x093a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0940,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0941,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0959,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x095b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x095c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x095f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0281,clif->pUseSkillToId,2,4,6);
+ packet(0x0366,clif->pDropItem,2,4);
+ packet(0x0436,clif->pReqClickBuyingStore,2);
+ packet(0x0835,clif->pTakeItem,2);
+ packet(0x083c,clif->pDull/*,XXX*/);
+ packet(0x0860,clif->pDull/*,XXX*/);
+ packet(0x0862,clif->pChangeDir,2,4);
+ packet(0x0864,clif->pWalkToXY,2);
+ packet(0x0870,clif->pMoveToKafra,2,4);
+ packet(0x0878,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x087a,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x087b,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0885,clif->pSolveCharName,2);
+ packet(0x088d,clif->pPartyInvite2,2);
+ packet(0x0893,clif->pFriendsListAdd,2);
+ packet(0x0897,clif->pHomMenu,2,4);
+ packet(0x089e,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x08a4,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x08ac,clif->pActionRequest,2,6);
+ packet(0x0920,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0934,clif->pReqCloseBuyingStore,0);
+ packet(0x0936,clif->pMoveFromKafra,2,4);
+ packet(0x093a,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0940,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0941,clif->pGetCharNameRequest,2);
+ packet(0x0959,clif->pStoragePassword,0);
+ packet(0x095b,clif->pSearchStoreInfoNextPage,0);
+ packet(0x095c,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x095f,clif->pTickSend,2);
#endif
// 2017-12-14cRagexe_zero
#if PACKETVER == 20171214
- packet(0x023b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x02c4,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0438,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x085b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x085e,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0862,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0864,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x086a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0871,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0873,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0886,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x088b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x088c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0892,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0894,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0897,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x08a3,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x08a5,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x08ac,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0933,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x094a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x094d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x094f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0951,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x095a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x095b,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0960,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0969,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x096a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x023b,clif->pSearchStoreInfoNextPage,0);
+ packet(0x02c4,clif->pDropItem,2,4);
+ packet(0x0438,clif->pGetCharNameRequest,2);
+ packet(0x085b,clif->pStoragePassword,0);
+ packet(0x085e,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0862,clif->pSolveCharName,2);
+ packet(0x0864,clif->pDull/*,XXX*/);
+ packet(0x086a,clif->pWalkToXY,2);
+ packet(0x0871,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0873,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0886,clif->pReqClickBuyingStore,2);
+ packet(0x088b,clif->pDull/*,XXX*/);
+ packet(0x088c,clif->pMoveToKafra,2,4);
+ packet(0x0892,clif->pUseSkillToId,2,4,6);
+ packet(0x0894,clif->pTakeItem,2);
+ packet(0x0897,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x08a3,clif->pFriendsListAdd,2);
+ packet(0x08a5,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x08ac,clif->pReqCloseBuyingStore,0);
+ packet(0x0933,clif->pActionRequest,2,6);
+ packet(0x094a,clif->pChangeDir,2,4);
+ packet(0x094d,clif->pHomMenu,2,4);
+ packet(0x094f,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0951,clif->pPartyInvite2,2);
+ packet(0x095a,clif->pMoveFromKafra,2,4);
+ packet(0x095b,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0960,clif->pTickSend,2);
+ packet(0x0969,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x096a,clif->pUseSkillToPos,2,4,6,8);
#endif
// 2017-12-20aRagexe_zero, 2017-12-21aRagexe_zero, 2017-12-21bRagexe_zero
#if PACKETVER == 20171220 || \
PACKETVER == 20171221
- packet(0x022d,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0281,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0438,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x07ec,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0819,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0835,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0838,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x085f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0867,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x086c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0872,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x087a,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x087e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0899,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x089b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x089c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x08a3,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x08a5,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x08ad,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x091f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0921,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x092d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x092e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0932,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0934,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0937,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x094d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x095b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x022d,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0281,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0438,clif->pGetCharNameRequest,2);
+ packet(0x07ec,clif->pReqClickBuyingStore,2);
+ packet(0x0819,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0835,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0838,clif->pTickSend,2);
+ packet(0x085f,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0867,clif->pSolveCharName,2);
+ packet(0x086c,clif->pTakeItem,2);
+ packet(0x0872,clif->pMoveFromKafra,2,4);
+ packet(0x087a,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x087e,clif->pDull/*,XXX*/);
+ packet(0x0899,clif->pWalkToXY,2);
+ packet(0x089b,clif->pDull/*,XXX*/);
+ packet(0x089c,clif->pReqCloseBuyingStore,0);
+ packet(0x08a3,clif->pItemListWindowSelected,2,4,8);
+ packet(0x08a5,clif->pDropItem,2,4);
+ packet(0x08ad,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x091f,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0921,clif->pHomMenu,2,4);
+ packet(0x092d,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x092e,clif->pFriendsListAdd,2);
+ packet(0x0932,clif->pPartyInvite2,2);
+ packet(0x0934,clif->pMoveToKafra,2,4);
+ packet(0x0937,clif->pActionRequest,2,6);
+ packet(0x094d,clif->pUseSkillToId,2,4,6);
+ packet(0x095b,clif->pStoragePassword,0);
+ packet(0x096a,clif->pChangeDir,2,4);
#endif
// 2017-12-27bRagexe_zero, 2017-12-29aRagexe_zero
#if PACKETVER == 20171227 || \
PACKETVER == 20171229
- packet(0x02c4,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0860,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x086c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0871,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0872,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0874,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0876,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0877,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0878,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x087b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0885,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0889,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x088b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0894,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x089f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x091c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0920,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0925,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x092d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0930,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0939,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x093e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0941,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0945,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0946,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x094b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x095e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0967,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0968,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x02c4,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0860,clif->pChangeDir,2,4);
+ packet(0x086c,clif->pActionRequest,2,6);
+ packet(0x0871,clif->pSolveCharName,2);
+ packet(0x0872,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0874,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0876,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0877,clif->pDull/*,XXX*/);
+ packet(0x0878,clif->pTakeItem,2);
+ packet(0x087b,clif->pMoveToKafra,2,4);
+ packet(0x0885,clif->pMoveFromKafra,2,4);
+ packet(0x0889,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x088b,clif->pReqCloseBuyingStore,0);
+ packet(0x0894,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x089f,clif->pReqClickBuyingStore,2);
+ packet(0x091c,clif->pDropItem,2,4);
+ packet(0x0920,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0925,clif->pDull/*,XXX*/);
+ packet(0x092d,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0930,clif->pStoragePassword,0);
+ packet(0x0939,clif->pTickSend,2);
+ packet(0x093e,clif->pGetCharNameRequest,2);
+ packet(0x0941,clif->pFriendsListAdd,2);
+ packet(0x0945,clif->pPartyInvite2,2);
+ packet(0x0946,clif->pWalkToXY,2);
+ packet(0x094b,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x095e,clif->pHomMenu,2,4);
+ packet(0x0967,clif->pUseSkillToId,2,4,6);
+ packet(0x0968,clif->pItemListWindowSelected,2,4,8);
#endif
// 2018-01-03aRagexe_zero
#if PACKETVER == 20180103
- packet(0x035f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0360,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x07e4,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x083c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0860,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0866,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x086d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0871,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0872,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0874,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x087b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0885,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0888,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0890,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0896,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x089d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x08a6,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x091e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0924,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0938,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x093b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0956,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0958,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x095b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x095d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0964,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0966,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x096a,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
+ packet(0x035f,clif->pChangeDir,2,4);
+ packet(0x0360,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x07e4,clif->pWalkToXY,2);
+ packet(0x083c,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0860,clif->pHomMenu,2,4);
+ packet(0x0866,clif->pItemListWindowSelected,2,4,8);
+ packet(0x086d,clif->pFriendsListAdd,2);
+ packet(0x0871,clif->pTickSend,2);
+ packet(0x0872,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0874,clif->pSearchStoreInfoNextPage,0);
+ packet(0x087b,clif->pDull/*,XXX*/);
+ packet(0x0885,clif->pReqCloseBuyingStore,0);
+ packet(0x0888,clif->pActionRequest,2,6);
+ packet(0x0890,clif->pDropItem,2,4);
+ packet(0x0896,clif->pUseSkillToId,2,4,6);
+ packet(0x089d,clif->pMoveToKafra,2,4);
+ packet(0x08a6,clif->pGetCharNameRequest,2);
+ packet(0x091e,clif->pTakeItem,2);
+ packet(0x0924,clif->pDull/*,XXX*/);
+ packet(0x0938,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x093b,clif->pPartyInvite2,2);
+ packet(0x0956,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0958,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x095b,clif->pStoragePassword,0);
+ packet(0x095d,clif->pSolveCharName,2);
+ packet(0x0964,clif->pReqClickBuyingStore,2);
+ packet(0x0966,clif->pMoveFromKafra,2,4);
+ packet(0x096a,clif->pSearchStoreInfoListItemClick,2,6,10);
#endif
// 2018-01-17aRagexe_zero
#if PACKETVER == 20180117
- packet(0x0361,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0364,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0438,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x07e4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x083c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0866,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x086e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x086f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x087d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0881,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0884,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0886,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0890,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0891,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0893,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0899,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x089d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x089e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0919,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x091c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x091f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0921,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0928,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0929,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x092d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0933,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0946,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x095e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0963,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x0361,clif->pPartyInvite2,2);
+ packet(0x0364,clif->pSolveCharName,2);
+ packet(0x0438,clif->pDull/*,XXX*/);
+ packet(0x07e4,clif->pStoragePassword,0);
+ packet(0x083c,clif->pDropItem,2,4);
+ packet(0x0866,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x086e,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x086f,clif->pReqClickBuyingStore,2);
+ packet(0x087d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0881,clif->pUseSkillToId,2,4,6);
+ packet(0x0884,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0886,clif->pTakeItem,2);
+ packet(0x0890,clif->pMoveToKafra,2,4);
+ packet(0x0891,clif->pGetCharNameRequest,2);
+ packet(0x0893,clif->pActionRequest,2,6);
+ packet(0x0899,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x089d,clif->pItemListWindowSelected,2,4,8);
+ packet(0x089e,clif->pChangeDir,2,4);
+ packet(0x0919,clif->pTickSend,2);
+ packet(0x091c,clif->pMoveFromKafra,2,4);
+ packet(0x091f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0921,clif->pWalkToXY,2);
+ packet(0x0928,clif->pReqCloseBuyingStore,0);
+ packet(0x0929,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x092d,clif->pDull/*,XXX*/);
+ packet(0x0933,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0946,clif->pFriendsListAdd,2);
+ packet(0x095e,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0963,clif->pHomMenu,2,4);
#endif
// 2018-01-31dRagexe_zero
#if PACKETVER == 20180131
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0367,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0940,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0367,clif->pStoragePassword,0);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0940,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2018-02-07bRagexe_zero
#if PACKETVER == 20180207
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0967,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0967,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2018-02-13aRagexe_zero
#if PACKETVER == 20180213
- packet(0x022d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x02c4,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x035f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0361,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0802,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0815,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0838,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x085a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x085d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0868,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x087b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0882,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0887,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0888,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x088a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x088e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0899,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0917,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x091d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0922,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0930,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0941,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0942,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0947,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x094d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0958,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x095b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x095c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0967,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x022d,clif->pChangeDir,2,4);
+ packet(0x02c4,clif->pMoveToKafra,2,4);
+ packet(0x035f,clif->pDropItem,2,4);
+ packet(0x0361,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0802,clif->pTickSend,2);
+ packet(0x0815,clif->pUseSkillToId,2,4,6);
+ packet(0x0838,clif->pSearchStoreInfoNextPage,0);
+ packet(0x085a,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x085d,clif->pHomMenu,2,4);
+ packet(0x0868,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x087b,clif->pGetCharNameRequest,2);
+ packet(0x0882,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0887,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0888,clif->pSolveCharName,2);
+ packet(0x088a,clif->pDull/*,XXX*/);
+ packet(0x088e,clif->pReqClickBuyingStore,2);
+ packet(0x0899,clif->pFriendsListAdd,2);
+ packet(0x0917,clif->pActionRequest,2,6);
+ packet(0x091d,clif->pWalkToXY,2);
+ packet(0x0922,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0930,clif->pDull/*,XXX*/);
+ packet(0x0941,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0942,clif->pMoveFromKafra,2,4);
+ packet(0x0947,clif->pTakeItem,2);
+ packet(0x094d,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0958,clif->pPartyInvite2,2);
+ packet(0x095b,clif->pReqCloseBuyingStore,0);
+ packet(0x095c,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0967,clif->pStoragePassword,0);
#endif
// 2018-02-21aRagexe_zero
#if PACKETVER == 20180221
- packet(0x02c4,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0362,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0364,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0438,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x0817,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x085b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x086a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0878,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0880,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0884,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x088d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0892,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0895,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x08a1,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x08a3,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x091b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0921,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0923,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x092d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0932,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x093b,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x093d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x093e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0942,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0951,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0952,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0958,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0959,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x095d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x02c4,clif->pTickSend,2);
+ packet(0x0362,clif->pGetCharNameRequest,2);
+ packet(0x0364,clif->pChangeDir,2,4);
+ packet(0x0438,clif->pItemListWindowSelected,2,4,8);
+ packet(0x0817,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x085b,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x086a,clif->pDull/*,XXX*/);
+ packet(0x0878,clif->pReqCloseBuyingStore,0);
+ packet(0x0880,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0884,clif->pSearchStoreInfoNextPage,0);
+ packet(0x088d,clif->pSolveCharName,2);
+ packet(0x0892,clif->pDropItem,2,4);
+ packet(0x0895,clif->pReqClickBuyingStore,2);
+ packet(0x08a1,clif->pWalkToXY,2);
+ packet(0x08a3,clif->pUseSkillToId,2,4,6);
+ packet(0x091b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0921,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0923,clif->pHomMenu,2,4);
+ packet(0x092d,clif->pFriendsListAdd,2);
+ packet(0x0932,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x093b,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x093d,clif->pPartyInvite2,2);
+ packet(0x093e,clif->pMoveFromKafra,2,4);
+ packet(0x0942,clif->pStoragePassword,0);
+ packet(0x0951,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0952,clif->pDull/*,XXX*/);
+ packet(0x0958,clif->pActionRequest,2,6);
+ packet(0x0959,clif->pMoveToKafra,2,4);
+ packet(0x095d,clif->pTakeItem,2);
#endif
// 2018-02-28bRagexe_zero, 2018-03-07aRagexe_zero, 2018-03-09aRagexe_zero
#if PACKETVER == 20180228 || \
PACKETVER == 20180307 || \
PACKETVER == 20180309
- packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x0930,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0202,clif->pChangeDir,2,4);
+ packet(0x022d,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x023b,clif->pFriendsListAdd,2);
+ packet(0x0281,clif->pItemListWindowSelected,2,4,8);
+ packet(0x035f,clif->pTickSend,2);
+ packet(0x0360,clif->pReqClickBuyingStore,2);
+ packet(0x0361,clif->pHomMenu,2,4);
+ packet(0x0362,clif->pDropItem,2,4);
+ packet(0x0363,clif->pDull/*,XXX*/);
+ packet(0x0364,clif->pMoveFromKafra,2,4);
+ packet(0x0365,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0368,clif->pSolveCharName,2);
+ packet(0x0369,clif->pActionRequest,2,6);
+ packet(0x0436,clif->pDull/*,XXX*/);
+ packet(0x0437,clif->pWalkToXY,2);
+ packet(0x0438,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x07e4,clif->pTakeItem,2);
+ packet(0x07ec,clif->pMoveToKafra,2,4);
+ packet(0x0802,clif->pPartyInvite2,2);
+ packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0835,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x083c,clif->pUseSkillToId,2,4,6);
+ packet(0x0930,clif->pStoragePassword,0);
+ packet(0x096a,clif->pGetCharNameRequest,2);
#endif
// 2018-03-14nRagexe_zero
#if PACKETVER == 20180314
- packet(0x023b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x0438,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x07ec,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x083c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x085d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x085f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0866,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0878,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x088d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0891,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0897,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0899,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x089e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x08a1,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x0917,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0918,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x091f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0920,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0923,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x0930,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0931,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x093f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0946,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x094a,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x094e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0954,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0956,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0958,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x023b,clif->pPartyInvite2,2);
+ packet(0x0438,clif->pSearchStoreInfoNextPage,0);
+ packet(0x07ec,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0817,clif->pReqCloseBuyingStore,0);
+ packet(0x083c,clif->pChangeDir,2,4);
+ packet(0x085d,clif->pFriendsListAdd,2);
+ packet(0x085f,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0866,clif->pHomMenu,2,4);
+ packet(0x0878,clif->pDull/*,XXX*/);
+ packet(0x088d,clif->pStoragePassword,0);
+ packet(0x0891,clif->pMoveFromKafra,2,4);
+ packet(0x0897,clif->pTakeItem,2);
+ packet(0x0899,clif->pMoveToKafra,2,4);
+ packet(0x089e,clif->pItemListWindowSelected,2,4,8);
+ packet(0x08a1,clif->pDull/*,XXX*/);
+ packet(0x0917,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0918,clif->pActionRequest,2,6);
+ packet(0x091f,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0920,clif->pTickSend,2);
+ packet(0x0923,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x0930,clif->pDropItem,2,4);
+ packet(0x0931,clif->pReqClickBuyingStore,2);
+ packet(0x093f,clif->pSolveCharName,2);
+ packet(0x0946,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x094a,clif->pUseSkillToId,2,4,6);
+ packet(0x094e,clif->pWalkToXY,2);
+ packet(0x0954,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0956,clif->pGetCharNameRequest,2);
+ packet(0x0958,clif->pReqTradeBuyingStore,2,4,8,12);
#endif
// 2018-05-11aRagexe_zero, 2018-05-11bRagexe_zero
#if PACKETVER == 20180511
- packet(0x0817,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x085f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0863,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x086c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0877,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x087e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0880,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0889,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0893,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0896,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0899,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
- packet(0x08a2,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x08a4,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x08a5,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0919,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x091a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x091d,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0920,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x092c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x092d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x092e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0941,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x0942,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x094a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0955,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x0956,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x095c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0961,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x0968,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
-#endif
-
-// 2018-11-14aRagexe_zero, 2018-11-20aRagexe_zero, 2018-11-28aRagexe_zero, 2018-12-12aRagexe_zero, 2018-12-19aRagexe_zero, 2018-12-26_2aRagexe_zero, 2019-01-16_2aRagexe_zero, 2019-01-17_1aRagexe_zero, 2019-01-30_2aRagexe_zero, 2019-02-13aRagexe_zero, 2019-02-20aRagexe_zero, 2019-02-27aRagexe_zero, 2019-03-13aRagexe_zero, 2019-03-27_2aRagexe_zero, 2019-03-27_3aRagexe_zero, 2019-04-03aRagexe_zero, 2019-04-10bRagexe_zero, 2019-04-24aRagexe_zero, 2019-05-02aRagexe_zero, 2019-05-08_2aRagexe_zero, 2019-05-08aRagexe_zero, 2019-05-15aRagexe_zero, 2019-05-29aRagexe_zero, 2019-05-30aRagexe_zero, 2019-06-05_2aRagexe_zero, 2019-06-26_2aRagexe_zero, 2019-06-26_3aRagexe_zero, 2019-07-09aRagexe_zero, 2019-07-10_3aRagexe_zero, 2019-07-17aRagexe_zero, 2019-07-24aRagexe_zero, 2019-08-14_3aRagexe_zero
-#if PACKETVER == 20181114 || \
- PACKETVER == 20181120 || \
- PACKETVER == 20181128 || \
- PACKETVER == 20181212 || \
- PACKETVER == 20181219 || \
- PACKETVER == 20181226 || \
- PACKETVER == 20190116 || \
- PACKETVER == 20190117 || \
- PACKETVER == 20190130 || \
- PACKETVER == 20190213 || \
- PACKETVER == 20190220 || \
- PACKETVER == 20190227 || \
- PACKETVER == 20190313 || \
- PACKETVER == 20190327 || \
- PACKETVER == 20190403 || \
- PACKETVER == 20190410 || \
- PACKETVER == 20190424 || \
- PACKETVER == 20190502 || \
- PACKETVER == 20190508 || \
- PACKETVER == 20190515 || \
- PACKETVER == 20190529 || \
- PACKETVER == 20190530 || \
- PACKETVER == 20190605 || \
- PACKETVER == 20190626 || \
- PACKETVER == 20190709 || \
- PACKETVER == 20190710 || \
- PACKETVER == 20190717 || \
- PACKETVER == 20190724 || \
- PACKETVER >= 20190814
- packet(0x0202,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x022d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x023b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0281,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x02c4,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x035f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0360,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0361,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0362,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0363,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0365,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0366,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90
- packet(0x0368,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0436,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0438,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x07e4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x07ec,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0811,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0815,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0817,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0835,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0838,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 14
-#endif
-
-// 2019-08-28_2aRagexe_zero, 2019-08-28_3aRagexe_zero, 2019-09-11aRagexe_zero, 2019-09-18_2aRagexe_zero, 2019-09-18aRagexe_zero, 2019-09-25_3aRagexe_zero, 2019-09-25_5aRagexe_zero, 2019-10-08_2aRagexe_zero, 2019-10-23_2aRagexe_zero, 2019-11-06aRagexe_zero, 2019-11-13aRagexe_zero, 2019-11-27_2aRagexe_zero, 2019-11-27aRagexe_zero, 2019-12-04aRagexe_zero, 2019-12-11_2aRagexe_zero, 2019-12-24_4aRagexe_zero, 2019-12-24_5aRagexe_zero, 2020-01-15_2aRagexe_zero, 2020-01-15aRagexe_zero, 2020-01-29_2aRagexe_zero, 2020-01-29aRagexe_zero
-#if PACKETVER == 20190828 || \
- PACKETVER == 20190911 || \
- PACKETVER == 20190918 || \
- PACKETVER == 20190925 || \
- PACKETVER == 20191008 || \
- PACKETVER == 20191023 || \
- PACKETVER == 20191106 || \
- PACKETVER == 20191113 || \
- PACKETVER == 20191127 || \
- PACKETVER == 20191204 || \
- PACKETVER == 20191211 || \
- PACKETVER == 20191224 || \
- PACKETVER == 20200115 || \
- PACKETVER == 20200129
- packet(0x0202,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
- packet(0x022d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
- packet(0x023b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
- packet(0x0281,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
- packet(0x02c4,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
- packet(0x035f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
- packet(0x0360,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
- packet(0x0361,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
- packet(0x0362,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
- packet(0x0363,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
- packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
- packet(0x0365,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
- packet(0x0366,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
- packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 31
- packet(0x0368,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
- packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
- packet(0x0436,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
- packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
- packet(0x0438,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
- packet(0x07e4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
- packet(0x07ec,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
- packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
- packet(0x0811,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
- packet(0x0815,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
- packet(0x0817,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
- packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
- packet(0x0835,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
- packet(0x0838,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
- packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 14
+ packet(0x0817,clif->pSolveCharName,2);
+ packet(0x085f,clif->pDropItem,2,4);
+ packet(0x0863,clif->pReqClickBuyingStore,2);
+ packet(0x086c,clif->pActionRequest,2,6);
+ packet(0x0877,clif->pMoveFromKafra,2,4);
+ packet(0x087e,clif->pSearchStoreInfo,2,4,5,9,13,14,15);
+ packet(0x0880,clif->pGetCharNameRequest,2);
+ packet(0x0889,clif->pMoveToKafra,2,4);
+ packet(0x0893,clif->pPartyBookingRegisterReq,2,4);
+ packet(0x0896,clif->pWantToConnection,2,6,10,14,18);
+ packet(0x0899,clif->pSearchStoreInfoListItemClick,2,6,10);
+ packet(0x08a2,clif->pTakeItem,2);
+ packet(0x08a4,clif->pReqCloseBuyingStore,0);
+ packet(0x08a5,clif->pTickSend,2);
+ packet(0x0919,clif->pWalkToXY,2);
+ packet(0x091a,clif->pItemListWindowSelected,2,4,8);
+ packet(0x091d,clif->pReqOpenBuyingStore,2,4,8,9,89);
+ packet(0x0920,clif->pDull/*,XXX*/);
+ packet(0x092c,clif->pUseSkillToId,2,4,6);
+ packet(0x092d,clif->pPartyInvite2,2);
+ packet(0x092e,clif->pReqTradeBuyingStore,2,4,8,12);
+ packet(0x0941,clif->pSearchStoreInfoNextPage,0);
+ packet(0x0942,clif->pChangeDir,2,4);
+ packet(0x094a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10);
+ packet(0x0955,clif->pFriendsListAdd,2);
+ packet(0x0956,clif->pDull/*,XXX*/);
+ packet(0x095c,clif->pUseSkillToPos,2,4,6,8);
+ packet(0x0961,clif->pHomMenu,2,4);
+ packet(0x0968,clif->pStoragePassword,0);
#endif
diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h
index b604c77b8..031a23b6d 100644
--- a/src/map/packets_struct.h
+++ b/src/map/packets_struct.h
@@ -3779,7 +3779,7 @@ struct PACKET_ZC_SE_CASHSHOP_OPEN {
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_SE_CASHSHOP_OPEN, 0x0b6e);
// for ragexeRE in some version this packet unused [4144]
-#elif PACKETVER_MAIN_NUM >= 20101123 || PACKETVER_RE_NUM >= 20120328 || PACKETVER_ZERO_NUM >= defined(PACKETVER_ZERO)
+#elif PACKETVER_MAIN_NUM >= 20101123 || PACKETVER_RE_NUM >= 20120328 || defined(PACKETVER_ZERO)
struct PACKET_ZC_SE_CASHSHOP_OPEN {
int16 packetType;
uint32 cashPoints;
@@ -3819,9 +3819,15 @@ struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub {
uint32 index;
uint32 zeny;
uint32 currency_count;
- struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub2 currencies[];
+ // Workaround for fix Visual Studio bug (error C2233). Here should be currencies[]
+ struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub2 currencies[1];
} __attribute__((packed));
+// Workaround check for Visual Studio bug (error C2233)
+STATIC_ASSERT(sizeof(struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub2[1]) ==
+ sizeof(struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub2),
+ "Wrong PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub size");
+
struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN {
int16 packetType;
int16 packetLength;
@@ -3885,6 +3891,60 @@ struct PACKET_ZC_AUTORUN_SKILL {
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_AUTORUN_SKILL, 0x0147);
+#if PACKETVER_MAIN_NUM >= 20170726 || PACKETVER_RE_NUM >= 20170621 || defined(PACKETVER_ZERO)
+struct PACKET_ZC_LAPINEUPGRADE_OPEN {
+ int16 packetType;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(ZC_LAPINEUPGRADE_OPEN, 0x0ab4);
+
+struct PACKET_ZC_LAPINEUPGRADE_RESULT {
+ int16 packetType;
+ uint16 result;
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(ZC_LAPINEUPGRADE_RESULT, 0x0ab7);
+#endif // PACKETVER_MAIN_NUM >= 20170726 || PACKETVER_RE_NUM >= 20170621 || defined(PACKETVER_ZERO)
+
+#if PACKETVER_MAIN_NUM >= 20170111 || PACKETVER_RE_NUM >= 20170111 || defined(PACKETVER_ZERO)
+struct PACKET_CZ_LAPINEUPGRADE_CLOSE {
+ int16 packetType;
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(CZ_LAPINEUPGRADE_CLOSE, 0x0ab5);
+
+struct PACKET_CZ_LAPINEUPGRADE_MAKE_ITEM {
+ int16 packetType;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+ uint16 index;
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(CZ_LAPINEUPGRADE_MAKE_ITEM, 0x0ab6);
+#endif // PACKETVER_MAIN_NUM >= 20170111 || PACKETVER_RE_NUM >= 20170111 || defined(PACKETVER_ZERO)
+
+#if PACKETVER_MAIN_NUM >= 20120503 || PACKETVER_RE_NUM >= 20120502 || defined(PACKETVER_ZERO)
+struct PACKET_ZC_PERSONAL_INFOMATION_SUB {
+ int8 type;
+ int32 exp;
+ int32 death;
+ int32 drop;
+} __attribute__((packed));
+struct PACKET_ZC_PERSONAL_INFOMATION {
+ int16 packetType;
+ int16 length;
+ int32 total_exp;
+ int32 total_death;
+ int32 total_drop;
+ struct PACKET_ZC_PERSONAL_INFOMATION_SUB details[];
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(ZC_PERSONAL_INFOMATION, 0x097b);
+#endif // PACKETVER_MAIN_NUM >= 20120503 || PACKETVER_RE_NUM >= 20120502 || defined(PACKETVER_ZERO)
+
#if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
#pragma pack(pop)
#endif // not NetBSD < 6 / Solaris
diff --git a/src/map/party.c b/src/map/party.c
index 7d7f69620..5eecd3fe6 100644
--- a/src/map/party.c
+++ b/src/map/party.c
@@ -330,6 +330,8 @@ static int party_recv_info(const struct party *sp, int char_id)
party->member_withdraw(sp->party_id, sd->status.account_id, sd->status.char_id);
}
+ int option_auto_changed = p->state.option_auto_changed; // Preserve state.
+
memcpy(&p->party, sp, sizeof(struct party));
memset(&p->state, 0, sizeof(p->state));
memset(&p->data, 0, sizeof(p->data));
@@ -342,6 +344,7 @@ static int party_recv_info(const struct party *sp, int char_id)
p->party.member[member_id].leader = 1;
}
party->check_state(p);
+ p->state.option_auto_changed = option_auto_changed;
while( added_count > 0 ) { // new in party
member_id = added[--added_count];
sd = p->data[member_id].sd;
@@ -349,12 +352,9 @@ static int party_recv_info(const struct party *sp, int char_id)
continue;// not online
clif->charnameupdate(sd); //Update other people's display. [Skotlex]
clif->party_member_info(p,sd);
- clif->party_option(p,sd,0x100);
clif->party_info(p,NULL);
for( j = 0; j < p->instances; j++ ) {
if( p->instance[j] >= 0 ) {
- if( instance->list[p->instance[j]].idle_timer == INVALID_TIMER && instance->list[p->instance[j]].progress_timer == INVALID_TIMER )
- continue;
clif->instance_join(sd->fd, p->instance[j]);
break;
}
@@ -488,14 +488,14 @@ static void party_member_joined(struct map_session_data *sd)
p->data[i].sd = sd;
for( j = 0; j < p->instances; j++ ) {
if( p->instance[j] >= 0 ) {
- if( instance->list[p->instance[j]].idle_timer == INVALID_TIMER && instance->list[p->instance[j]].progress_timer == INVALID_TIMER )
- continue;
clif->instance_join(sd->fd, p->instance[j]);
break;
}
}
} else
sd->status.party_id = 0; //He does not belongs to the party really?
+
+ party->send_movemap(sd);
}
/// Invoked (from char-server) when a new member is added to the party.
@@ -536,6 +536,11 @@ static int party_member_added(int party_id, int account_id, int char_id, int fla
clif->party_member_info(p,sd);
clif->party_info(p,sd);
+ if (p->state.option_auto_changed != 0)
+ clif->party_option(p, sd, 0x04);
+ else
+ clif->party_option(p, sd, 0x08);
+
if( sd2 != NULL )
clif->party_inviteack(sd2,sd->status.name,2);
@@ -551,8 +556,6 @@ static int party_member_added(int party_id, int account_id, int char_id, int fla
for( j = 0; j < p->instances; j++ ) {
if( p->instance[j] >= 0 ) {
- if( instance->list[p->instance[j]].idle_timer == INVALID_TIMER && instance->list[p->instance[j]].progress_timer == INVALID_TIMER )
- continue;
clif->instance_join(sd->fd, p->instance[j]);
break;
}
@@ -622,6 +625,7 @@ static int party_member_withdraw(int party_id, int account_id, int char_id)
prev_leader_accountId = p->party.member[i].account_id;
}
+ clif->party_option(p, sd, 0x10);
clif->party_withdraw(p,sd,account_id,p->party.member[i].name,0x0);
memset(&p->party.member[i], 0, sizeof(p->party.member[0]));
memset(&p->data[i], 0, sizeof(p->data[0]));
@@ -677,17 +681,18 @@ static int party_member_withdraw(int party_id, int account_id, int char_id)
/// Invoked (from char-server) when a party is disbanded.
static int party_broken(int party_id)
{
- struct party_data* p;
- int i, j;
+ int i;
- p = party->search(party_id);
- if( p == NULL )
+ struct party_data *p = party->search(party_id);
+ if (p == NULL)
return 0;
- for( j = 0; j < p->instances; j++ ) {
- if( p->instance[j] >= 0 ) {
- instance->destroy( p->instance[j] );
- instance->list[p->instance[j]].owner_id = 0;
+ for (int j = 0; j < p->instances; j++) {
+ const short instance_id = p->instance[j];
+ if (instance_id >= 0) {
+ instance->destroy(instance_id);
+ if (instance_id < instance->instances)
+ instance->list[instance_id].owner_id = 0;
}
}
@@ -728,8 +733,17 @@ static int party_optionchanged(int party_id, int account_id, int exp, int item,
//Flag&0x1: Exp change denied. Flag&0x10: Item change denied.
if(!(flag&0x01) && p->party.exp != exp)
p->party.exp=exp;
- if(!(flag&0x10) && p->party.item != item) {
+ if (p->party.item != item)
p->party.item=item;
+
+ if (account_id == 0) {
+ flag |= 0x04;
+ p->state.option_auto_changed = 1;
+
+ if (p->state.member_level_changed == 0)
+ return 0; // clif_party_option() is handled in clif_parse_LoadEndAck().
+ } else {
+ flag |= 0x02;
}
clif->party_option(p,sd,flag);
@@ -810,7 +824,8 @@ static int party_recv_movemap(int party_id, int account_id, int char_id, unsigne
ShowError("party_recv_movemap: char %d/%d not found in party %s (id:%d)",account_id,char_id,p->party.name,party_id);
return 0;
}
-
+
+ p->state.member_level_changed = 0;
m = &p->party.member[i];
m->map = mapid;
m->online = online;
@@ -859,7 +874,12 @@ static void party_send_movemap(struct map_session_data *sd)
static void party_send_levelup(struct map_session_data *sd)
{
- intif->party_changemap(sd,1);
+ struct party_data *p = party->search(sd->status.party_id);
+
+ if (p != NULL)
+ p->state.member_level_changed = 1;
+
+ intif->party_changemap(sd, 1);
}
static int party_send_logout(struct map_session_data *sd)
diff --git a/src/map/party.h b/src/map/party.h
index c2306b7a8..5f3458cd4 100644
--- a/src/map/party.h
+++ b/src/map/party.h
@@ -51,6 +51,8 @@ struct party_data {
unsigned sg : 1; ///< There's at least one Star Gladiator in party?
unsigned snovice :1; ///< There's a Super Novice
unsigned tk : 1; ///< There's a taekwon
+ unsigned option_auto_changed : 1; ///< Party options were changed automatically. (inter_party_check_lv())
+ unsigned member_level_changed : 1; ///< A party member's level has changed.
} state;
struct hplugin_data_store *hdata; ///< HPM Plugin Data Store
};
diff --git a/src/map/pc.c b/src/map/pc.c
index fc1552e62..04c3cd1cb 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -998,20 +998,23 @@ static bool pc_adoption(struct map_session_data *p1_sd, struct map_session_data
return false; // Job Change Fail
}
-/*=================================================
- * Checks if the player can equip the item at index n in inventory.
- * Returns 0 (no) or 1 (yes).
- *------------------------------------------------*/
+/**
+ * Checks if a character can equip an item.
+ *
+ * @param sd The related character.
+ * @param n The item's inventory index.
+ * @retval 0 Character can't equip the item.
+ * @retval 1 Character can equip the item.
+ *
+ **/
static int pc_isequip(struct map_session_data *sd, int n)
{
- struct item_data *item;
-
nullpo_ret(sd);
Assert_ret(n >= 0 && n < sd->status.inventorySize);
- item = sd->inventory_data[n];
+ struct item_data *item = sd->inventory_data[n];
- if(item == NULL)
+ if (item == NULL)
return 0;
#if PACKETVER <= 20100707
@@ -1019,31 +1022,34 @@ static int pc_isequip(struct map_session_data *sd, int n)
return 0;
#endif
- if(pc_has_permission(sd, PC_PERM_USE_ALL_EQUIPMENT))
+ if (pc_has_permission(sd, PC_PERM_USE_ALL_EQUIPMENT))
return 1;
- if (item->elv && sd->status.base_level < item->elv) {
+ if (item->elv != 0 && sd->status.base_level < item->elv) {
#if PACKETVER >= 20100525
clif->msgtable(sd, MSG_CANNOT_EQUIP_ITEM_LEVEL);
#endif
return 0;
}
- if (item->elvmax && sd->status.base_level > item->elvmax) {
+
+ if (item->elvmax != 0 && sd->status.base_level > item->elvmax) {
#if PACKETVER >= 20100525
clif->msgtable(sd, MSG_CANNOT_EQUIP_ITEM_LEVEL);
#endif
return 0;
}
- if(item->sex != 2 && sd->status.sex != item->sex)
+
+ if (item->sex != SEX_SERVER && sd->status.sex != item->sex)
return 0;
- if ( item->equip & EQP_AMMO ) {
- if (sd->state.active && !pc_iscarton(sd) && (sd->job & MAPID_THIRDMASK) == MAPID_GENETIC) { // check if sc data is already loaded.
+ if ((item->equip & EQP_AMMO) != 0) {
+ if (sd->state.active != 0 && !pc_iscarton(sd) && (sd->job & MAPID_THIRDMASK) == MAPID_GENETIC) { // Check if sc data is already loaded.
#if PACKETVER_RE_NUM >= 20090529 || PACKETVER_MAIN_NUM >= 20090603 || defined(PACKETVER_ZERO)
clif->msgtable(sd, MSG_USESKILL_FAIL_CART);
#endif
return 0;
}
+
if (!pc_ismadogear(sd) && (sd->job & MAPID_THIRDMASK) == MAPID_MECHANIC) {
#if PACKETVER_RE_NUM >= 20090226 || PACKETVER_MAIN_NUM >= 20090304 || defined(PACKETVER_ZERO)
clif->msgtable(sd, MSG_USESKILL_FAIL_MADOGEAR);
@@ -1051,76 +1057,85 @@ static int pc_isequip(struct map_session_data *sd, int n)
return 0;
}
}
- if (sd->sc.count) {
- if(item->equip & EQP_ARMS && item->type == IT_WEAPON && sd->sc.data[SC_NOEQUIPWEAPON]) // Also works with left-hand weapons [DracoRPG]
+ if ((battle_config.unequip_restricted_equipment & 1) != 0) {
+ for (int i = 0; i < map->list[sd->bl.m].zone->disabled_items_count; i++)
+ if (map->list[sd->bl.m].zone->disabled_items[i] == item->nameid)
+ return 0;
+ }
+
+ if ((battle_config.unequip_restricted_equipment & 2) != 0 && !itemdb_isspecial(sd->status.inventory[n].card[0])) {
+ for (int slot = 0; slot < item->slot; slot++)
+ for (int i = 0; i < map->list[sd->bl.m].zone->disabled_items_count; i++)
+ if (map->list[sd->bl.m].zone->disabled_items[i] == sd->status.inventory[n].card[slot])
+ return 0;
+ }
+
+ if (sd->sc.count != 0) {
+ if ((item->equip & EQP_ARMS) != 0 && item->type == IT_WEAPON && sd->sc.data[SC_NOEQUIPWEAPON] != NULL) // Also works with left-hand weapons. [DracoRPG]
return 0;
- if(item->equip & EQP_SHIELD && item->type == IT_ARMOR && sd->sc.data[SC_NOEQUIPSHIELD])
+
+ if ((item->equip & EQP_SHIELD) != 0 && item->type == IT_ARMOR && sd->sc.data[SC_NOEQUIPSHIELD] != NULL)
return 0;
- if(item->equip & EQP_ARMOR && sd->sc.data[SC_NOEQUIPARMOR])
+
+ if ((item->equip & EQP_ARMOR) != 0 && sd->sc.data[SC_NOEQUIPARMOR] != NULL)
return 0;
- if(item->equip & EQP_HEAD_TOP && sd->sc.data[SC_NOEQUIPHELM])
+
+ if ((item->equip & EQP_HEAD_TOP) != 0 && sd->sc.data[SC_NOEQUIPHELM] != NULL)
return 0;
- if(item->equip & EQP_ACC && sd->sc.data[SC__STRIPACCESSARY])
+
+ if ((item->equip & EQP_ACC) != 0 && sd->sc.data[SC__STRIPACCESSARY] != NULL)
return 0;
- if(item->equip && sd->sc.data[SC_KYOUGAKU])
+
+ if (item->equip != 0 && sd->sc.data[SC_KYOUGAKU] != NULL)
return 0;
- if (sd->sc.data[SC_SOULLINK] && sd->sc.data[SC_SOULLINK]->val2 == SL_SUPERNOVICE) {
- //Spirit of Super Novice equip bonuses. [Skotlex]
- if (sd->status.base_level > 90 && item->equip & EQP_HELM)
- return 1; //Can equip all helms
-
- if (sd->status.base_level > 96 && item->equip & EQP_ARMS && item->type == IT_WEAPON)
- switch (item->subtype) { //In weapons, the look determines type of weapon.
- case W_DAGGER: //Level 4 Knives are equippable.. this means all knives, I'd guess?
- case W_1HSWORD: //All 1H swords
- case W_1HAXE: //All 1H Axes
- case W_MACE: //All 1H Maces
- case W_STAFF: //All 1H Staves
+ if (sd->sc.data[SC_SOULLINK] != NULL && sd->sc.data[SC_SOULLINK]->val2 == SL_SUPERNOVICE) { // Spirit of Super Novice equip bonuses. [Skotlex]
+ if (sd->status.base_level > 90 && (item->equip & EQP_HELM) != 0)
+ return 1; // Can equip all helms.
+
+ if (sd->status.base_level > 96 && (item->equip & EQP_ARMS) != 0 && item->type == IT_WEAPON) {
+ switch (item->subtype) { // In weapons, the look determines type of weapon.
+ case W_DAGGER: // Level 4 Knives are equippable.. this means all knives, I'd guess?
+ case W_1HSWORD: // All 1H swords.
+ case W_1HAXE: // All 1H axes.
+ case W_MACE: // All 1H maces.
+ case W_STAFF: // All 1H staffs.
return 1;
}
+ }
}
}
- //Not equipable by class. [Skotlex]
- if (((1ULL<<(sd->job & MAPID_BASEMASK)) & item->class_base[(sd->job & JOBL_2_1) != 0 ? 1 : ((sd->job & JOBL_2_2) != 0 ? 2 : 0)]) == 0)
+
+ uint64 mask_job = 1ULL << (sd->job & MAPID_BASEMASK);
+ uint64 mask_item = item->class_base[((sd->job & JOBL_2_1) != 0) ? 1 : (((sd->job & JOBL_2_2) != 0) ? 2 : 0)];
+
+ if ((mask_job & mask_item) == 0) // Not equipable by class. [Skotlex]
return 0;
- //Not usable by upper class. [Inkfish]
- while( 1 ) {
+
+ // Not usable by upper class. [Inkfish]
+ while (1) {
if ((item->class_upper & ITEMUPPER_NORMAL) != 0) {
- if ((sd->job & (JOBL_UPPER|JOBL_THIRD|JOBL_BABY)) == 0)
+ if ((sd->job & (JOBL_UPPER | JOBL_THIRD | JOBL_BABY)) == 0)
break;
}
+
if ((item->class_upper & ITEMUPPER_UPPER) != 0) {
- if ((sd->job & (JOBL_UPPER|JOBL_THIRD)) != 0)
+ if ((sd->job & (JOBL_UPPER | JOBL_THIRD)) != 0)
break;
}
+
if ((item->class_upper & ITEMUPPER_BABY) != 0) {
if ((sd->job & JOBL_BABY) != 0)
break;
}
+
if ((item->class_upper & ITEMUPPER_THIRD) != 0) {
if ((sd->job & JOBL_THIRD) != 0)
break;
}
- return 0;
- }
-
- if ( battle_config.unequip_restricted_equipment & 1 ) {
- int i;
- for ( i = 0; i < map->list[sd->bl.m].zone->disabled_items_count; i++ )
- if ( map->list[sd->bl.m].zone->disabled_items[i] == sd->status.inventory[n].nameid )
- return 0;
- }
- if ( battle_config.unequip_restricted_equipment & 2 ) {
- if ( !itemdb_isspecial( sd->status.inventory[n].card[0] ) ) {
- int i, slot;
- for ( slot = 0; slot < MAX_SLOTS; slot++ )
- for ( i = 0; i < map->list[sd->bl.m].zone->disabled_items_count; i++ )
- if ( map->list[sd->bl.m].zone->disabled_items[i] == sd->status.inventory[n].card[slot] )
- return 0;
- }
+ return 0;
}
return 1;
@@ -1264,6 +1279,7 @@ static bool pc_authok(struct map_session_data *sd, int login_id2, time_t expirat
sd->bg_queue.client_has_bg_data = 0;
sd->bg_queue.type = 0;
+ VECTOR_INIT(sd->auto_cast); // Initialize auto-cast vector.
VECTOR_INIT(sd->channels);
VECTOR_INIT(sd->script_queues);
VECTOR_INIT(sd->achievement); // Achievements [Smokexyz/Hercules]
@@ -1590,58 +1606,56 @@ static void pc_calc_skilltree_clear(struct map_session_data *sd)
*------------------------------------------*/
static int pc_calc_skilltree(struct map_session_data *sd)
{
- int i,id=0,flag;
- int class = 0, classidx = 0;
-
nullpo_ret(sd);
- i = pc->calc_skilltree_normalize_job(sd);
- class = pc->mapid2jobid(i, sd->status.sex);
+ uint32 job = pc->calc_skilltree_normalize_job(sd);
+ int class = pc->mapid2jobid(job, sd->status.sex);
if (class == -1) {
//Unable to normalize job??
- ShowError("pc_calc_skilltree: Unable to normalize job %d for character %s (%d:%d)\n", i, sd->status.name, sd->status.account_id, sd->status.char_id);
+ ShowError("pc_calc_skilltree: Unable to normalize job %u for character %s (%d:%d)\n", job, sd->status.name, sd->status.account_id, sd->status.char_id);
return 1;
}
- classidx = pc->class2idx(class);
+ int classidx = pc->class2idx(class);
pc->calc_skilltree_clear(sd);
- for (i = 0; i < MAX_SKILL_DB; i++) {
- if( sd->status.skill[i].flag != SKILL_FLAG_PERMANENT && sd->status.skill[i].flag != SKILL_FLAG_PERM_GRANTED && sd->status.skill[i].flag != SKILL_FLAG_PLAGIARIZED )
- { // Restore original level of skills after deleting earned skills.
+ for (int i = 0; i < MAX_SKILL_DB; i++) {
+ if (sd->status.skill[i].flag == SKILL_FLAG_TEMPORARY || sd->status.skill[i].flag >= SKILL_FLAG_REPLACED_LV_0) {
+ // Restore original level of skills after deleting earned skills.
sd->status.skill[i].lv = (sd->status.skill[i].flag == SKILL_FLAG_TEMPORARY) ? 0 : sd->status.skill[i].flag - SKILL_FLAG_REPLACED_LV_0;
sd->status.skill[i].flag = SKILL_FLAG_PERMANENT;
}
- if( sd->sc.count && sd->sc.data[SC_SOULLINK] && sd->sc.data[SC_SOULLINK]->val2 == SL_BARDDANCER && skill->dbs->db[i].nameid >= DC_HUMMING && skill->dbs->db[i].nameid <= DC_SERVICEFORYOU )
- { //Enable Bard/Dancer spirit linked skills.
- if (sd->status.sex) {
- // Link dancer skills to bard.
- if (i < 8) {
- Assert_report(i >= 8);
- continue;
- }
- if (sd->status.skill[i-8].lv < 10)
- continue;
- sd->status.skill[i].id = skill->dbs->db[i].nameid;
- sd->status.skill[i].lv = sd->status.skill[i-8].lv; // Set the level to the same as the linking skill
- sd->status.skill[i].flag = SKILL_FLAG_TEMPORARY; // Tag it as a non-savable, non-uppable, bonus skill
+ if (sd->sc.count && sd->sc.data[SC_SOULLINK] && sd->sc.data[SC_SOULLINK]->val2 == SL_BARDDANCER
+ && ((skill->dbs->db[i].nameid >= BA_WHISTLE && skill->dbs->db[i].nameid <= BA_APPLEIDUN)
+ || (skill->dbs->db[i].nameid >= DC_HUMMING && skill->dbs->db[i].nameid <= DC_SERVICEFORYOU))
+ ) {
+ //Enable Bard/Dancer spirit linked skills.
+ int linked_nameid = skill->get_linked_song_dance_id(skill->dbs->db[i].nameid);
+ if (linked_nameid == 0) {
+ Assert_report("Linked bard/dance skill not found");
+ continue;
+ }
+ int copy_from_index;
+ int copy_to_index;
+ if (sd->status.sex == SEX_MALE && skill->dbs->db[i].nameid >= BA_WHISTLE && skill->dbs->db[i].nameid <= BA_APPLEIDUN) {
+ copy_from_index = i;
+ copy_to_index = skill->get_index(linked_nameid);
} else {
- // Link bard skills to dancer.
- if (i < 8) {
- Assert_report(i >= 8);
- continue;
- }
- if (sd->status.skill[i].lv < 10)
- continue;
- sd->status.skill[i-8].id = skill->dbs->db[i-8].nameid;
- sd->status.skill[i-8].lv = sd->status.skill[i].lv; // Set the level to the same as the linking skill
- sd->status.skill[i-8].flag = SKILL_FLAG_TEMPORARY; // Tag it as a non-savable, non-uppable, bonus skill
+ copy_from_index = skill->get_index(linked_nameid);
+ copy_to_index = i;
}
+ if (copy_from_index < copy_to_index)
+ continue; // Copy only after the source skill has been filled into the tree
+ if (sd->status.skill[copy_from_index].lv < 10)
+ continue; // Copy only if the linked skill has been mastered
+ sd->status.skill[copy_to_index].id = skill->dbs->db[copy_to_index].nameid;
+ sd->status.skill[copy_to_index].lv = sd->status.skill[copy_from_index].lv; // Set the level to the same as the linking skill
+ sd->status.skill[copy_to_index].flag = SKILL_FLAG_TEMPORARY; // Tag it as a non-savable, non-uppable, bonus skill
}
}
if( pc_has_permission(sd, PC_PERM_ALL_SKILL) ) {
- for (i = 0; i < MAX_SKILL_DB; i++) {
+ for (int i = 0; i < MAX_SKILL_DB; i++) {
switch(skill->dbs->db[i].nameid) {
/**
* Dummy skills must be added here otherwise they'll be displayed in the,
@@ -1673,9 +1687,11 @@ static int pc_calc_skilltree(struct map_session_data *sd)
return 0;
}
+ bool changed = false;
do {
- flag = 0;
- for (i = 0; i < MAX_SKILL_TREE && (id = pc->skill_tree[classidx][i].id) > 0; i++) {
+ changed = false;
+ int id;
+ for (int i = 0; i < MAX_SKILL_TREE && (id = pc->skill_tree[classidx][i].id) > 0; i++) {
int idx = pc->skill_tree[classidx][i].idx;
bool satisfied = true;
if (sd->status.skill[idx].id > 0)
@@ -1725,10 +1741,10 @@ static int pc_calc_skilltree(struct map_session_data *sd)
sd->status.skill[idx].lv = 1; // need to manually specify a skill level
sd->status.skill[idx].flag = SKILL_FLAG_TEMPORARY; //So it is not saved, and tagged as a "bonus" skill.
}
- flag = 1; // skill list has changed, perform another pass
+ changed = true; // skill list has changed, perform another pass
}
}
- } while(flag);
+ } while (changed);
pc->calc_skilltree_bonus(sd, classidx);
@@ -4191,7 +4207,7 @@ static int pc_skill(struct map_session_data *sd, int id, int level, int flag)
if( sd->status.skill[index].id == id ) {
if( sd->status.skill[index].lv >= level )
return 0;
- if( sd->status.skill[index].flag == SKILL_FLAG_PERMANENT ) //Non-granted skill, store it's level.
+ if (sd->status.skill[index].flag == SKILL_FLAG_PERMANENT) // Non-granted skill, store its level.
sd->status.skill[index].flag = SKILL_FLAG_REPLACED_LV_0 + sd->status.skill[index].lv;
} else {
sd->status.skill[index].id = id;
@@ -5147,7 +5163,8 @@ static int pc_useitem(struct map_session_data *sd, int n)
nullpo_ret(sd);
Assert_ret(n >= 0 && n < sd->status.inventorySize);
- if (sd->npc_id || sd->state.workinprogress & 1) {
+ if ((sd->npc_id != 0 && sd->state.using_megaphone == 0 && (sd->npc_item_flag & ITEMENABLEDNPC_CONSUME) == 0)
+ || (sd->state.workinprogress & 1) != 0) {
#if PACKETVER >= 20110308
clif->msgtable(sd, MSG_BUSY);
#else
@@ -5156,7 +5173,7 @@ static int pc_useitem(struct map_session_data *sd, int n)
return 0;
}
- if (battle_config.storage_use_item == 1 && sd->state.storage_flag != STORAGE_FLAG_CLOSED) {
+ if (battle_config.storage_use_item == 0 && sd->state.storage_flag != STORAGE_FLAG_CLOSED) {
clif->messagecolor_self(sd->fd, COLOR_RED, msg_sd(sd, 1475));
return 0; // You cannot use this item while storage is open.
}
@@ -5173,6 +5190,16 @@ static int pc_useitem(struct map_session_data *sd, int n)
// Store information for later use before it is lost (via pc->delitem) [Paradox924X]
nameid = sd->inventory_data[n]->nameid;
+ if (nameid == ITEMID_MEGAPHONE && ((sd->state.workinprogress & 2) != 0 || sd->state.using_megaphone != 0
+ || sd->npc_id != 0)) {
+#if PACKETVER >= 20110308
+ clif->msgtable(sd, MSG_BUSY);
+#else
+ clif->messagecolor_self(sd->fd, COLOR_WHITE, msg_sd(sd, 48));
+#endif
+ return 0;
+ }
+
if (nameid != ITEMID_NAUTHIZ && sd->sc.opt1 > 0 && sd->sc.opt1 != OPT1_STONEWAIT && sd->sc.opt1 != OPT1_BURNING)
return 0;
@@ -5280,10 +5307,6 @@ static int pc_useitem(struct map_session_data *sd, int n)
if(sd->catch_target_class != -1) //Abort pet catching.
sd->catch_target_class = -1;
- // Removes abracadabra/randomize spell flag for delayed consume items or item doesn't get consumed
- if (sd->inventory_data[n]->flag.delay_consume)
- sd->state.abra_flag = 0;
-
amount = sd->status.inventory[n].amount;
//Check if the item is to be consumed immediately [Skotlex]
if (sd->inventory_data[n]->flag.delay_consume || sd->inventory_data[n]->flag.keepafteruse)
@@ -5307,6 +5330,9 @@ static int pc_useitem(struct map_session_data *sd, int n)
// Update item use time.
sd->canuseitem_tick = tick + battle_config.item_use_interval;
+ if (nameid == ITEMID_MEGAPHONE)
+ sd->state.using_megaphone = 1;
+
script->run_use_script(sd, sd->inventory_data[n], npc->fake_nd->bl.id);
script->potion_flag = 0;
@@ -5322,23 +5348,79 @@ static int pc_useitem(struct map_session_data *sd, int n)
}
/**
- * Sets state flags and helper variables, used by itemskill() script command, to 0.
+ * Unsets a character's currently processed auto-cast skill data.
*
- * @param sd The character's session data.
- * @return 0 if parameter sd is NULL, otherwise 1.
- */
-static int pc_itemskill_clear(struct map_session_data *sd)
+ * @param sd The character.
+ *
+ **/
+static void pc_autocast_clear_current(struct map_session_data *sd)
{
- nullpo_ret(sd);
+ nullpo_retv(sd);
- sd->itemskill_id = 0;
- sd->itemskill_lv = 0;
- sd->state.itemskill_conditions_checked = 0;
- sd->state.itemskill_no_conditions = 0;
- sd->state.itemskill_no_casttime = 0;
- sd->state.itemskill_castonself = 0;
+ sd->auto_cast_current.type = AUTOCAST_NONE;
+ sd->auto_cast_current.skill_id = 0;
+ sd->auto_cast_current.skill_lv = 0;
+ sd->auto_cast_current.itemskill_conditions_checked = false;
+ sd->auto_cast_current.itemskill_check_conditions = true;
+ sd->auto_cast_current.itemskill_instant_cast = false;
+ sd->auto_cast_current.itemskill_cast_on_self = false;
+}
- return 1;
+/**
+ * Unsets a character's auto-cast related data.
+ *
+ * @param sd The character.
+ *
+ **/
+static void pc_autocast_clear(struct map_session_data *sd)
+{
+ nullpo_retv(sd);
+
+ pc->autocast_clear_current(sd);
+ VECTOR_TRUNCATE(sd->auto_cast); // Truncate auto-cast vector.
+}
+
+/**
+ * Sets a character's currently processed auto-cast skill data by comparing the skill ID.
+ *
+ * @param sd The character.
+ * @param skill_id The skill ID to compare.
+ *
+ **/
+static void pc_autocast_set_current(struct map_session_data *sd, int skill_id)
+{
+ nullpo_retv(sd);
+
+ pc->autocast_clear_current(sd);
+
+ for (int i = 0; i < VECTOR_LENGTH(sd->auto_cast); i++) {
+ if (VECTOR_INDEX(sd->auto_cast, i).skill_id == skill_id) {
+ sd->auto_cast_current = VECTOR_INDEX(sd->auto_cast, i);
+ break;
+ }
+ }
+}
+
+/**
+ * Removes a specific entry from a character's auto-cast vector.
+ *
+ * @param sd The character.
+ * @param type The entry's auto-cast type.
+ * @param skill_id The entry's skill ID.
+ * @param skill_lv The entry's skill level.
+ *
+ **/
+static void pc_autocast_remove(struct map_session_data *sd, enum autocast_type type, int skill_id, int skill_lv)
+{
+ nullpo_retv(sd);
+
+ for (int i = 0; i < VECTOR_LENGTH(sd->auto_cast); i++) {
+ if (VECTOR_INDEX(sd->auto_cast, i).type == type && VECTOR_INDEX(sd->auto_cast, i).skill_id == skill_id
+ && VECTOR_INDEX(sd->auto_cast, i).skill_lv == skill_lv) {
+ VECTOR_ERASE(sd->auto_cast, i);
+ break;
+ }
+ }
}
/*==========================================
@@ -5688,242 +5770,290 @@ static int pc_steal_coin(struct map_session_data *sd, struct block_list *target,
return 0;
}
-/*==========================================
- * Set's a player position.
- * Return values:
- * 0 - Success.
- * 1 - Invalid map index.
- * 2 - Map not in this map-server, and failed to locate alternate map-server.
- *------------------------------------------*/
+/**
+ * Sets a character's position.
+ *
+ * @param sd The related character.
+ * @param map_index The target map's index.
+ * @param x The target x-coordinate.
+ * @param y The target y-coordinate.
+ * @param clrtype The unit clear type, which should be used.
+ * @retval 0 Success.
+ * @retval 1 Invalid map index.
+ * @retval 2 Map not in this map-server, and failed to locate alternative map-server.
+ * @retval 3 No character data. (Parameter sd is a NULL pointer.)
+ * @retval 4 Character is jailed.
+ *
+ **/
static int pc_setpos(struct map_session_data *sd, unsigned short map_index, int x, int y, enum clr_type clrtype)
{
- int16 m;
+ nullpo_retr(3, sd);
- nullpo_ret(sd);
+ int map_id = map->mapindex2mapid(map_index);
- if( !map_index || !mapindex_id2name(map_index) || ( m = map->mapindex2mapid(map_index) ) == -1 ) {
- ShowDebug("pc_setpos: Passed mapindex(%d) is invalid!\n", map_index);
+ if (map_index == 0 || !mapindex_id2name(map_index) || map_id == INDEX_NOT_FOUND) {
+ ShowDebug("pc_setpos: Passed mapindex %d is invalid!\n", map_index);
return 1;
}
- if( pc_isdead(sd) ) { //Revive dead people before warping them
+ if (pc_isdead(sd)) { // Revive dead character before warping.
pc->setstand(sd);
- pc->setrestartvalue(sd,1);
+ pc->setrestartvalue(sd, 1);
}
- if( map->list[m].flag.src4instance ) {
- struct party_data *p;
+ if (map->list[map_id].flag.src4instance != 0) {
bool stop = false;
- int i = 0, j = 0;
- if( sd->instances ) {
- for( i = 0; i < sd->instances; i++ ) {
- if( sd->instance[i] >= 0 ) {
- ARR_FIND(0, instance->list[sd->instance[i]].num_map, j, map->list[instance->list[sd->instance[i]].map[j]].instance_src_map == m && !map->list[instance->list[sd->instance[i]].map[j]].custom_name);
- if( j != instance->list[sd->instance[i]].num_map )
+ if (sd->instances != 0) {
+ int i, j = 0;
+
+ for (i = 0; i < sd->instances; i++) {
+ if (sd->instance[i] >= 0) {
+ ARR_FIND(0, instance->list[sd->instance[i]].num_map, j,
+ map->list[instance->list[sd->instance[i]].map[j]].instance_src_map == map_id
+ && !map->list[instance->list[sd->instance[i]].map[j]].custom_name);
+
+ if (j != instance->list[sd->instance[i]].num_map)
break;
}
}
- if( i != sd->instances ) {
- m = instance->list[sd->instance[i]].map[j];
- map_index = map_id2index(m);
+
+ if (i != sd->instances) {
+ map_id = instance->list[sd->instance[i]].map[j];
+ map_index = map_id2index(map_id);
stop = true;
}
}
- if ( !stop && sd->status.party_id && (p = party->search(sd->status.party_id)) != NULL && p->instances ) {
- for( i = 0; i < p->instances; i++ ) {
- if( p->instance[i] >= 0 ) {
- ARR_FIND(0, instance->list[p->instance[i]].num_map, j, map->list[instance->list[p->instance[i]].map[j]].instance_src_map == m && !map->list[instance->list[p->instance[i]].map[j]].custom_name);
- if( j != instance->list[p->instance[i]].num_map )
+
+ struct party_data *p = party->search(sd->status.party_id);
+
+ if (!stop && sd->status.party_id != 0 && p != NULL && p->instances != 0) {
+ int i, j = 0;
+
+ for (i = 0; i < p->instances; i++) {
+ if (p->instance[i] >= 0) {
+ ARR_FIND(0, instance->list[p->instance[i]].num_map, j,
+ map->list[instance->list[p->instance[i]].map[j]].instance_src_map == map_id
+ && !map->list[instance->list[p->instance[i]].map[j]].custom_name);
+
+ if (j != instance->list[p->instance[i]].num_map)
break;
}
}
- if( i != p->instances ) {
- m = instance->list[p->instance[i]].map[j];
- map_index = map_id2index(m);
+
+ if (i != p->instances) {
+ map_id = instance->list[p->instance[i]].map[j];
+ map_index = map_id2index(map_id);
stop = true;
}
}
- if ( !stop && sd->status.guild_id && sd->guild && sd->guild->instances ) {
- for( i = 0; i < sd->guild->instances; i++ ) {
- if( sd->guild->instance[i] >= 0 ) {
- ARR_FIND(0, instance->list[sd->guild->instance[i]].num_map, j, map->list[instance->list[sd->guild->instance[i]].map[j]].instance_src_map == m && !map->list[instance->list[sd->guild->instance[i]].map[j]].custom_name);
- if( j != instance->list[sd->guild->instance[i]].num_map )
+
+ if (!stop && sd->status.guild_id != 0 && sd->guild != NULL && sd->guild->instances != 0) {
+ int i, j = 0;
+
+ for (i = 0; i < sd->guild->instances; i++) {
+ if (sd->guild->instance[i] >= 0) {
+ ARR_FIND(0, instance->list[sd->guild->instance[i]].num_map, j,
+ map->list[instance->list[sd->guild->instance[i]].map[j]].instance_src_map == map_id
+ && !map->list[instance->list[sd->guild->instance[i]].map[j]].custom_name);
+
+ if (j != instance->list[sd->guild->instance[i]].num_map)
break;
}
}
- if( i != sd->guild->instances ) {
- m = instance->list[sd->guild->instance[i]].map[j];
- map_index = map_id2index(m);
- //stop = true; Uncomment if adding new checks
+
+ if (i != sd->guild->instances) {
+ map_id = instance->list[sd->guild->instance[i]].map[j];
+ map_index = map_id2index(map_id);
+ //stop = true; Uncomment when adding new checks.
}
}
- /* we hit a instance, if empty we populate the spawn data */
- if( map->list[m].instance_id >= 0 && instance->list[map->list[m].instance_id].respawn.map == 0 &&
- instance->list[map->list[m].instance_id].respawn.x == 0 &&
- instance->list[map->list[m].instance_id].respawn.y == 0) {
- instance->list[map->list[m].instance_id].respawn.map = map_index;
- instance->list[map->list[m].instance_id].respawn.x = x;
- instance->list[map->list[m].instance_id].respawn.y = y;
+ // We hit an instance. If empty we populate the spawn data.
+ if (map->list[map_id].instance_id >= 0 && instance->list[map->list[map_id].instance_id].respawn.map == 0
+ && instance->list[map->list[map_id].instance_id].respawn.x == 0
+ && instance->list[map->list[map_id].instance_id].respawn.y == 0) {
+ instance->list[map->list[map_id].instance_id].respawn.map = map_index;
+ instance->list[map->list[map_id].instance_id].respawn.x = x;
+ instance->list[map->list[map_id].instance_id].respawn.y = y;
}
}
- sd->state.changemap = (sd->mapindex != map_index);
+ sd->state.changemap = (sd->mapindex != map_index) ? 1 : 0;
sd->state.warping = 1;
sd->state.workinprogress = 0;
- if( sd->state.changemap ) { // Misc map-changing settings
- int i;
+
+ if (sd->state.changemap != 0) { // Miscellaneous map-changing settings.
sd->state.pmap = sd->bl.m;
- for (i = 0; i < VECTOR_LENGTH(sd->script_queues); i++) {
+ for (int i = 0; i < VECTOR_LENGTH(sd->script_queues); i++) {
struct script_queue *queue = script->queue(VECTOR_INDEX(sd->script_queues, i));
- if (queue && queue->event_mapchange[0] != '\0') {
- pc->setregstr(sd, script->add_variable("@Queue_Destination_Map$"), map->list[m].name);
+
+ if (queue != NULL && queue->event_mapchange[0] != '\0') {
+ pc->setregstr(sd, script->add_variable("@Queue_Destination_Map$"), map->list[map_id].name);
npc->event(sd, queue->event_mapchange, 0);
}
}
- if( map->list[m].cell == (struct mapcell *)0xdeadbeaf )
- map->cellfromcache(&map->list[m]);
- if (sd->sc.count) { // Cancel some map related stuff.
- if (sd->sc.data[SC_JAILED])
- return 1; //You may not get out!
+ if (map->list[map_id].cell == (struct mapcell *)0xdeadbeaf)
+ map->cellfromcache(&map->list[map_id]);
+
+ if (sd->sc.count != 0) { // Cancel some map related stuff.
+ if (sd->sc.data[SC_JAILED] != NULL)
+ return 4; // You may not get out!
+
status_change_end(&sd->bl, SC_CASH_BOSS_ALARM, INVALID_TIMER);
status_change_end(&sd->bl, SC_WARM, INVALID_TIMER);
status_change_end(&sd->bl, SC_SUN_COMFORT, INVALID_TIMER);
status_change_end(&sd->bl, SC_MOON_COMFORT, INVALID_TIMER);
status_change_end(&sd->bl, SC_STAR_COMFORT, INVALID_TIMER);
status_change_end(&sd->bl, SC_MIRACLE, INVALID_TIMER);
- status_change_end(&sd->bl, SC_NEUTRALBARRIER_MASTER, INVALID_TIMER);//Will later check if this is needed. [Rytech]
+ status_change_end(&sd->bl, SC_NEUTRALBARRIER_MASTER, INVALID_TIMER); // Will later check if this is needed. [Rytech]
status_change_end(&sd->bl, SC_NEUTRALBARRIER, INVALID_TIMER);
status_change_end(&sd->bl, SC_STEALTHFIELD_MASTER, INVALID_TIMER);
status_change_end(&sd->bl, SC_STEALTHFIELD, INVALID_TIMER);
- if (sd->sc.data[SC_KNOWLEDGE]) {
+
+ if (sd->sc.data[SC_KNOWLEDGE] != NULL) {
struct status_change_entry *sce = sd->sc.data[SC_KNOWLEDGE];
+
if (sce->timer != INVALID_TIMER)
timer->delete(sce->timer, status->change_timer);
- sce->timer = timer->add(timer->gettick() + skill->get_time(SG_KNOWLEDGE, sce->val1), status->change_timer, sd->bl.id, SC_KNOWLEDGE);
+
+ sce->timer = timer->add(timer->gettick() + skill->get_time(SG_KNOWLEDGE, sce->val1),
+ status->change_timer, sd->bl.id, SC_KNOWLEDGE);
}
+
status_change_end(&sd->bl, SC_PROPERTYWALK, INVALID_TIMER);
status_change_end(&sd->bl, SC_CLOAKING, INVALID_TIMER);
status_change_end(&sd->bl, SC_CLOAKINGEXCEED, INVALID_TIMER);
}
- for( i = 0; i < EQI_MAX; i++ ) {
- if( sd->equip_index[ i ] >= 0 )
- if( !pc->isequip( sd , sd->equip_index[ i ] ) )
- pc->unequipitem(sd, sd->equip_index[i], PCUNEQUIPITEM_FORCE);
- }
- if (battle_config.clear_unit_onwarp&BL_PC)
+
+ if ((battle_config.clear_unit_onwarp & BL_PC) != 0)
skill->clear_unitgroup(&sd->bl);
- party->send_dot_remove(sd); //minimap dot fix [Kevin]
+
+ party->send_dot_remove(sd); // Minimap dot fix. [Kevin]
guild->send_dot_remove(sd);
bg->send_dot_remove(sd);
- if (sd->regen.state.gc)
+
+ if (sd->regen.state.gc != 0)
sd->regen.state.gc = 0;
- // make sure vending is allowed here
- if (sd->state.vending && map->list[m].flag.novending) {
- clif->message (sd->fd, msg_sd(sd,276)); // "You can't open a shop on this map"
+
+ // Make sure that vending is allowed here.
+ if (sd->state.vending != 0 && map->list[map_id].flag.novending != 0) {
+ clif->message(sd->fd, msg_sd(sd, 276)); // "You can't open a shop on this map"
vending->close(sd);
}
- if (sd->mapindex != 0) {
- // Only if the character is already on a map
- if (map->list[sd->bl.m].channel) {
- channel->leave(map->list[sd->bl.m].channel,sd);
- }
- }
+ if (sd->mapindex != 0 && map->list[sd->bl.m].channel != NULL) // Only if the character is already on a map.
+ channel->leave(map->list[sd->bl.m].channel, sd);
}
- if( m < 0 ) {
+ if (map_id < 0) {
uint32 ip;
uint16 port;
- //if can't find any map-servers, just abort setting position.
- if(!sd->mapindex || map->mapname2ipport(map_index,&ip,&port))
+
+ // If can't find any map-servers, just abort setting position.
+ if (sd->mapindex == 0 || map->mapname2ipport(map_index, &ip, &port) != 0)
return 2;
- if (sd->npc_id)
+ if (sd->npc_id != 0)
npc->event_dequeue(sd);
+
npc->script_event(sd, NPCE_LOGOUT);
- //remove from map, THEN change x/y coordinates
- unit->remove_map_pc(sd,clrtype);
+
+ // Remove from map, THEN change x/y coordinates.
+ unit->remove_map_pc(sd, clrtype);
+
if (battle_config.player_warp_keep_direction == 0)
- sd->ud.dir = 0; // makes character face north
+ sd->ud.dir = 0; /// Make character facing north.
+
sd->mapindex = map_index;
- sd->bl.x=x;
- sd->bl.y=y;
+ sd->bl.x= x;
+ sd->bl.y= y;
pc->clean_skilltree(sd);
- chrif->save(sd,2);
- chrif->changemapserver(sd, ip, (short)port);
+ chrif->save(sd, 2);
+ chrif->changemapserver(sd, ip, port);
- //Free session data from this map server [Kevin]
+ // Free session data from this map server. [Kevin]
unit->free_pc(sd);
return 0;
}
- if( x < 0 || x >= map->list[m].xs || y < 0 || y >= map->list[m].ys ) {
- ShowError("pc_setpos: attempt to place player %s (%d:%d) on invalid coordinates (%s-%d,%d)\n", sd->status.name, sd->status.account_id, sd->status.char_id, mapindex_id2name(map_index),x,y);
- x = y = 0; // make it random
+ if (x < 0 || x >= map->list[map_id].xs || y < 0 || y >= map->list[map_id].ys) { // Invalid coordinates. Randomize them.
+ ShowError("pc_setpos: Attempt to place player %s (%d:%d) on invalid coordinates (%s-%d,%d)!\n",
+ sd->status.name, sd->status.account_id, sd->status.char_id,
+ mapindex_id2name(map_index), x, y);
+ x = 0;
+ y = 0;
}
- if( x == 0 && y == 0 ) {// pick a random walkable cell
+ if (x == 0 && y == 0) { // Pick a random walkable cell.
do {
- x=rnd()%(map->list[m].xs-2)+1;
- y=rnd()%(map->list[m].ys-2)+1;
- } while(map->getcell(m, &sd->bl, x, y, CELL_CHKNOPASS));
+ x = rnd() % (map->list[map_id].xs - 2) + 1;
+ y = rnd() % (map->list[map_id].ys - 2) + 1;
+ } while(map->getcell(map_id, &sd->bl, x, y, CELL_CHKNOPASS) != 0);
}
- if (sd->state.vending && map->getcell(m, &sd->bl, x, y, CELL_CHKNOVENDING)) {
- clif->message (sd->fd, msg_sd(sd,204)); // "You can't open a shop on this cell."
+ if (sd->state.vending != 0 && map->getcell(map_id, &sd->bl, x, y, CELL_CHKNOVENDING) != 0) {
+ clif->message(sd->fd, msg_sd(sd, 204)); // "You can't open a shop on this cell."
vending->close(sd);
}
if (battle_config.player_warp_keep_direction == 0)
- sd->ud.dir = 0; // makes character face north
+ sd->ud.dir = 0; // Make character facing north.
- if(sd->bl.prev != NULL){
- unit->remove_map_pc(sd,clrtype);
- clif->changemap(sd,m,x,y); // [MouseJstr]
- } else if(sd->state.active)
- //Tag player for rewarping after map-loading is done. [Skotlex]
- sd->state.rewarp = 1;
+ if (sd->bl.prev != NULL) {
+ unit->remove_map_pc(sd, clrtype);
+ clif->changemap(sd, map_id, x, y); // [MouseJstr]
+ } else if (sd->state.active != 0) {
+ sd->state.rewarp = 1; // Tag character for re-warping after map-loading is done. [Skotlex]
+ }
sd->mapindex = map_index;
- sd->bl.m = m;
- sd->bl.x = sd->ud.to_x = x;
- sd->bl.y = sd->ud.to_y = y;
+ sd->bl.m = map_id;
+ sd->bl.x = x;
+ sd->bl.y = y;
+ sd->ud.to_x = x;
+ sd->ud.to_y = y;
- if( sd->status.guild_id > 0 && map->list[m].flag.gvg_castle ) { // Increased guild castle regen [Valaris]
+ if (sd->status.guild_id > 0 && map->list[map_id].flag.gvg_castle != 0) { // Double regeneration in guild castle. [Valaris]
struct guild_castle *gc = guild->mapindex2gc(sd->mapindex);
- if(gc && gc->guild_id == sd->status.guild_id)
+
+ if (gc != NULL && gc->guild_id == sd->status.guild_id)
sd->regen.state.gc = 1;
}
- if( sd->status.pet_id > 0 && sd->pd && sd->pd->pet.intimate > 0 ) {
- sd->pd->bl.m = m;
- sd->pd->bl.x = sd->pd->ud.to_x = x;
- sd->pd->bl.y = sd->pd->ud.to_y = y;
+ if (sd->status.pet_id > 0 && sd->pd != NULL && sd->pd->pet.intimate > PET_INTIMACY_NONE) {
+ sd->pd->bl.m = map_id;
+ sd->pd->bl.x = x;
+ sd->pd->bl.y = y;
+ sd->pd->ud.to_x = x;
+ sd->pd->ud.to_y = y;
sd->pd->ud.dir = sd->ud.dir;
}
- if( homun_alive(sd->hd) ) {
- sd->hd->bl.m = m;
- sd->hd->bl.x = sd->hd->ud.to_x = x;
- sd->hd->bl.y = sd->hd->ud.to_y = y;
+ if (homun_alive(sd->hd)) {
+ sd->hd->bl.m = map_id;
+ sd->hd->bl.x = x;
+ sd->hd->bl.y = y;
+ sd->hd->ud.to_x = x;
+ sd->hd->ud.to_y = y;
sd->hd->ud.dir = sd->ud.dir;
}
- if( sd->md ) {
- sd->md->bl.m = m;
- sd->md->bl.x = sd->md->ud.to_x = x;
- sd->md->bl.y = sd->md->ud.to_y = y;
+ if (sd->md != NULL) {
+ sd->md->bl.m = map_id;
+ sd->md->bl.x = x;
+ sd->md->bl.y = y;
+ sd->md->ud.to_x = x;
+ sd->md->ud.to_y = y;
sd->md->ud.dir = sd->ud.dir;
}
- /* given autotrades have no clients you have to trigger this manually otherwise they get stuck in memory limbo bugreport:7495 */
- if( sd->state.autotrade )
- clif->pLoadEndAck(0,sd);
+ // Given autotrades have no clients. You have to trigger this manually, otherwise they get stuck in memory limbo. (bugreport:7495)
+ if (sd->state.autotrade != 0)
+ clif->pLoadEndAck(0, sd);
return 0;
}
@@ -7503,7 +7633,7 @@ static int pc_allskillup(struct map_session_data *sd)
nullpo_ret(sd);
for (i = 0; i < MAX_SKILL_DB; i++) {
- if (sd->status.skill[i].flag != SKILL_FLAG_PERMANENT && sd->status.skill[i].flag != SKILL_FLAG_PERM_GRANTED && sd->status.skill[i].flag != SKILL_FLAG_PLAGIARIZED) {
+ if (sd->status.skill[i].flag == SKILL_FLAG_TEMPORARY || sd->status.skill[i].flag >= SKILL_FLAG_REPLACED_LV_0) {
sd->status.skill[i].lv = (sd->status.skill[i].flag == SKILL_FLAG_TEMPORARY) ? 0 : sd->status.skill[i].flag - SKILL_FLAG_REPLACED_LV_0;
sd->status.skill[i].flag = SKILL_FLAG_PERMANENT;
if (sd->status.skill[i].lv == 0)
@@ -8003,163 +8133,175 @@ static void pc_damage(struct map_session_data *sd, struct block_list *src, unsig
}
}
-/*==========================================
- * Invoked when a player has negative current hp
- *------------------------------------------*/
+/**
+ * Invoked when a character died.
+ *
+ * @param sd The died character.
+ * @param src The unit which caused the death.
+ * @retval 0 Death canceled.
+ * @retval 1 Standard death.
+ * @retval 9 Died in PVP/GVG/BG.
+ *
+ **/
static int pc_dead(struct map_session_data *sd, struct block_list *src)
{
- int i=0,j=0;
- int64 tick = timer->gettick();
+ nullpo_ret(sd);
- nullpo_retr(0, sd);
+ for (int i = 0; i < MAX_PC_DEVOTION; i++) {
+ if (sd->devotion[i] != 0) {
+ struct map_session_data *devsd = map->id2sd(sd->devotion[i]);
- for (j = 0; j < MAX_PC_DEVOTION; j++) {
- if (sd->devotion[j]) {
- struct map_session_data *devsd = map->id2sd(sd->devotion[j]);
- if (devsd)
+ if (devsd != NULL)
status_change_end(&devsd->bl, SC_DEVOTION, INVALID_TIMER);
- sd->devotion[j] = 0;
+
+ sd->devotion[i] = 0;
}
}
- if(sd->status.pet_id > 0 && sd->pd) {
+ if (sd->status.pet_id > 0 && sd->pd != NULL) {
struct pet_data *pd = sd->pd;
- if( !map->list[sd->bl.m].flag.noexppenalty ) {
+
+ if (map->list[sd->bl.m].flag.noexppenalty == 0)
pet->set_intimate(pd, pd->pet.intimate - pd->petDB->die);
- if( pd->pet.intimate < 0 )
- pd->pet.intimate = 0;
- clif->send_petdata(sd,sd->pd,1,pd->pet.intimate);
- }
- if( sd->pd->target_id ) // Unlock all targets...
+
+ if (sd->pd != NULL && sd->pd->target_id != 0) // Unlock all targets.
pet->unlocktarget(sd->pd);
}
- if (sd->status.hom_id > 0){
- if(battle_config.homunculus_auto_vapor && sd->hd)
- homun->vaporize(sd, HOM_ST_REST, true);
- }
+ if (sd->status.hom_id > 0 && sd->hd != NULL && battle_config.homunculus_auto_vapor != 0)
+ homun->vaporize(sd, HOM_ST_REST, true);
- if( sd->md )
- mercenary->delete(sd->md, 3); // Your mercenary soldier has ran away.
+ if (sd->md != NULL)
+ mercenary->delete(sd->md, 3); // Your mercenary soldier ran away.
- if( sd->ed )
+ if (sd->ed != NULL)
elemental->delete(sd->ed, 0);
- // Leave duel if you die [LuzZza]
- if(battle_config.duel_autoleave_when_die) {
- if(sd->duel_group > 0)
+ if (battle_config.duel_autoleave_when_die != 0) { // Leave duel if character died. [LuzZza]
+ if (sd->duel_group > 0)
duel->leave(sd->duel_group, sd);
- if(sd->duel_invite > 0)
+ if (sd->duel_invite > 0)
duel->reject(sd->duel_invite, sd);
}
- if (sd->npc_id && sd->st && sd->st->state != RUN)
+ if (sd->npc_id != 0 && sd->state.using_megaphone == 0 && sd->st != NULL && sd->st->state != RUN)
npc->event_dequeue(sd);
- pc_setglobalreg(sd,script->add_variable("PC_DIE_COUNTER"),sd->die_counter+1);
- pc->setparam(sd, SP_KILLERRID, src?src->id:0);
+ pc_setglobalreg(sd, script->add_variable("PC_DIE_COUNTER"), sd->die_counter + 1);
+ pc->setparam(sd, SP_KILLERRID, (src != NULL) ? src->id : 0);
+
+ if (sd->bg_id != 0) { //TODO: Purge when bgqueue is deemed ok.
+ struct battleground_data *bgd = bg->team_search(sd->bg_id);
- if( sd->bg_id ) {/* TODO: purge when bgqueue is deemed ok */
- struct battleground_data *bgd;
- if( (bgd = bg->team_search(sd->bg_id)) != NULL && bgd->die_event[0] )
+ if (bgd != NULL && bgd->die_event[0] != '\0')
npc->event(sd, bgd->die_event, 0);
}
- for (i = 0; i < VECTOR_LENGTH(sd->script_queues); i++ ) {
+ for (int i = 0; i < VECTOR_LENGTH(sd->script_queues); i++) {
struct script_queue *queue = script->queue(VECTOR_INDEX(sd->script_queues, i));
- if (queue && queue->event_death[0] != '\0')
+
+ if (queue != NULL && queue->event_death[0] != '\0')
npc->event(sd, queue->event_death, 0);
}
- npc->script_event(sd,NPCE_DIE);
+ npc->script_event(sd, NPCE_DIE);
- // Clear anything NPC-related when you die and was interacting with one.
- if ( (sd->npc_id || sd->npc_shopid) && sd->state.dialog) {
- if (sd->state.using_fake_npc) {
+ // Clear anything NPC-related if character died while interacting with one.
+ if (((sd->npc_id != 0 && sd->state.using_megaphone == 0) || sd->npc_shopid != 0) && sd->state.dialog != 0) {
+ if (sd->state.using_fake_npc != 0) {
clif->clearunit_single(sd->npc_id, CLR_OUTSIGHT, sd->fd);
sd->state.using_fake_npc = 0;
}
- if (sd->state.menu_or_input)
+
+ if (sd->state.menu_or_input != 0)
sd->state.menu_or_input = 0;
- if (sd->npc_menu)
+
+ if (sd->npc_menu != 0)
sd->npc_menu = 0;
sd->npc_id = 0;
sd->npc_shopid = 0;
- if (sd->st && sd->st->state != END)
+
+ if (sd->st != NULL && sd->st->state != END)
sd->st->state = END;
}
- /* e.g. not killed through pc->damage */
- if( pc_issit(sd) ) {
+ // E.g. not killed through pc->damage().
+ if (pc_issit(sd))
clif->sc_end(&sd->bl, sd->bl.id, SELF, status->get_sc_icon(SC_SIT));
- }
pc_setdead(sd);
-
clif->party_dead_notification(sd);
- //Reset menu skills/item skills
- if (sd->skillitem)
- sd->skillitem = sd->skillitemlv = 0;
- if (sd->menuskill_id)
- sd->menuskill_id = sd->menuskill_val = 0;
- //Reset ticks.
- sd->hp_loss.tick = sd->sp_loss.tick = sd->hp_regen.tick = sd->sp_regen.tick = 0;
+ pc->autocast_clear(sd); // Unset auto-cast data.
+
+ if (sd->menuskill_id != 0) { // Reset menu skills.
+ sd->menuskill_id = 0;
+ sd->menuskill_val = 0;
+ }
- if ( sd->spiritball )
+ // Reset ticks.
+ sd->hp_loss.tick = 0;
+ sd->sp_loss.tick = 0;
+ sd->hp_regen.tick = 0;
+ sd->sp_regen.tick = 0;
+
+ if (sd->spiritball != 0)
pc->delspiritball(sd, sd->spiritball, 0);
+
if (sd->charm_type != CHARM_TYPE_NONE && sd->charm_count > 0)
pc->del_charm(sd, sd->charm_count, sd->charm_type);
+ int64 tick = timer->gettick();
+
if (src != NULL) {
switch (src->type) {
- case BL_MOB:
- {
- struct mob_data *md = BL_UCAST(BL_MOB, src);
- if (md->target_id==sd->bl.id)
- mob->unlocktarget(md,tick);
- if (battle_config.mobs_level_up && md->status.hp
- && md->level < pc->maxbaselv(sd)
- && !md->guardian_data && md->special_state.ai == AI_NONE// Guardians/summons should not level. [Skotlex]
- ) {
- // monster level up [Valaris]
- clif->misceffect(&md->bl,0);
- md->level++;
- status_calc_mob(md, SCO_NONE);
- status_percent_heal(src,10,0);
-
- if( battle_config.show_mob_info&4 )
- {// update name with new level
- clif->blname_ack(0, &md->bl);
- }
- }
- src = battle->get_master(src); // Maybe Player Summon
+ case BL_MOB: {
+ struct mob_data *md = BL_UCAST(BL_MOB, src);
+
+ if (md->target_id == sd->bl.id)
+ mob->unlocktarget(md, tick);
+
+ if (battle_config.mobs_level_up != 0 && md->status.hp != 0 && md->level < pc->maxbaselv(sd)
+ && md->guardian_data == NULL && md->special_state.ai == AI_NONE) { // Guardians/summons should not level up. [Skotlex]
+ /// Monster level up. [Valaris]
+ clif->misceffect(&md->bl, 0);
+ md->level++;
+ status_calc_mob(md, SCO_NONE);
+ status_percent_heal(src, 10, 0);
+
+ if ((battle_config.show_mob_info & 4) != 0)
+ clif->blname_ack(0, &md->bl); // Update name with new level.
}
+
+ src = battle->get_master(src); // Maybe character summon.
break;
- case BL_PET: //Pass on to master...
- src = &BL_UCAST(BL_PET, src)->msd->bl;
+ }
+ case BL_PET:
+ src = &BL_UCAST(BL_PET, src)->msd->bl; // Pass on to master.
break;
- case BL_HOM:
- src = &BL_UCAST(BL_HOM, src)->master->bl;
+ case BL_HOM:
+ src = &BL_UCAST(BL_HOM, src)->master->bl; // Pass on to master.
break;
- case BL_MER:
- src = &BL_UCAST(BL_MER, src)->master->bl;
+ case BL_MER:
+ src = &BL_UCAST(BL_MER, src)->master->bl; // Pass on to master.
break;
}
}
if (src != NULL && src->type == BL_PC) {
struct map_session_data *ssd = BL_UCAST(BL_PC, src);
+
pc->setparam(ssd, SP_KILLEDRID, sd->bl.id);
npc->script_event(ssd, NPCE_KILLPC);
+ achievement->validate_pc_kill(ssd, sd);
- achievement->validate_pc_kill(ssd, sd); // Achievements [Smokexyz/Hercules]
-
- if (battle_config.pk_mode&2) {
+ if ((battle_config.pk_mode & 2) != 0) {
ssd->status.manner -= 5;
- if(ssd->status.manner < 0)
- sc_start(NULL,src,SC_NOCHAT,100,0,0);
+
+ if (ssd->status.manner < 0)
+ sc_start(NULL, src, SC_NOCHAT, 100, 0, 0);
+
#if 0
// PK/Karma system code (not enabled yet) [celest]
// originally from Kade Online, so i don't know if any of these is correct ^^;
@@ -8171,14 +8313,15 @@ static int pc_dead(struct map_session_data *sd, struct block_list *src)
// If player killed was more evil
sd->status.karma--;
ssd->status.karma--;
- }
- else if (sd->status.karma < ssd->status.karma) // If player killed was more good
+ } else if (sd->status.karma < ssd->status.karma) { // If player killed was more good
ssd->status.karma++;
+ }
// or the PK System way...
if (sd->status.karma > 0) // player killed is dishonourable?
ssd->status.karma--; // honour points earned
+
sd->status.karma++; // honour points lost
// To-do: Receive exp on certain occasions
@@ -8186,137 +8329,156 @@ static int pc_dead(struct map_session_data *sd, struct block_list *src)
}
}
- if( battle_config.bone_drop==2
- || (battle_config.bone_drop==1 && map->list[sd->bl.m].flag.pvp)
- ) {
+ if (battle_config.bone_drop == 2 || (battle_config.bone_drop == 1 && map->list[sd->bl.m].flag.pvp != 0)) {
struct item item_tmp;
- memset(&item_tmp,0,sizeof(item_tmp));
- item_tmp.nameid=ITEMID_SKULL_;
- item_tmp.identify=1;
- item_tmp.card[0]=CARD0_CREATE;
- item_tmp.card[1]=0;
- item_tmp.card[2]=GetWord(sd->status.char_id,0); // CharId
- item_tmp.card[3]=GetWord(sd->status.char_id,1);
+
+ memset(&item_tmp, 0, sizeof(item_tmp));
+ item_tmp.nameid = ITEMID_SKULL_;
+ item_tmp.identify = 1;
+ item_tmp.card[0] = CARD0_CREATE;
+ item_tmp.card[1] = 0;
+ item_tmp.card[2] = GetWord(sd->status.char_id, 0);
+ item_tmp.card[3] = GetWord(sd->status.char_id, 1);
map->addflooritem(&sd->bl, &item_tmp, 1, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0, false);
}
- // activate Steel body if a super novice dies at 99+% exp [celest]
- if ((sd->job & MAPID_UPPERMASK) == MAPID_SUPER_NOVICE && !sd->state.snovice_dead_flag) {
+ // Activate Steel Body if a Super Novice dies at 99+% EXP. [celest]
+ if ((sd->job & MAPID_UPPERMASK) == MAPID_SUPER_NOVICE && sd->state.snovice_dead_flag == 0) {
uint64 next = pc->nextbaseexp(sd);
- if( next == 0 ) next = pc->thisbaseexp(sd);
+
+ if (next == 0)
+ next = pc->thisbaseexp(sd);
+
if (get_percentage64(sd->status.base_exp, next) >= 99) {
sd->state.snovice_dead_flag = 1;
pc->setstand(sd);
status_percent_heal(&sd->bl, 100, 100);
clif->resurrection(&sd->bl, 1);
- if(battle_config.pc_invincible_time)
+
+ if (battle_config.pc_invincible_time != 0)
pc->setinvincibletimer(sd, battle_config.pc_invincible_time);
- sc_start(NULL,&sd->bl,status->skill2sc(MO_STEELBODY),100,1,skill->get_time(MO_STEELBODY,1));
- if(map_flag_gvg2(sd->bl.m))
+
+ sc_start(NULL, &sd->bl, status->skill2sc(MO_STEELBODY), 100, 1, skill->get_time(MO_STEELBODY, 1));
+
+ if (map_flag_gvg2(sd->bl.m))
pc->respawn_timer(INVALID_TIMER, timer->gettick(), sd->bl.id, 0);
+
return 0;
}
}
- // changed penalty options, added death by player if pk_mode [Valaris]
- if (battle_config.death_penalty_type
- && pc->isDeathPenaltyJob(sd->job)
- && !map->list[sd->bl.m].flag.noexppenalty && !map_flag_gvg2(sd->bl.m)
- && !sd->sc.data[SC_BABY] && !sd->sc.data[SC_CASH_DEATHPENALTY]
- && !pc->auto_exp_insurance(sd)
- ) {
+ if (battle_config.death_penalty_type != 0 && pc->isDeathPenaltyJob(sd->job) && !map_flag_gvg2(sd->bl.m)
+ && map->list[sd->bl.m].flag.noexppenalty == 0 && sd->sc.data[SC_BABY] == NULL
+ && sd->sc.data[SC_CASH_DEATHPENALTY] == NULL && !pc->auto_exp_insurance(sd)) {
if (battle_config.death_penalty_base > 0) {
unsigned int base_penalty = 0;
+ int rate = battle_config.death_penalty_base;
+
switch (battle_config.death_penalty_type) {
- case 1:
- base_penalty = (unsigned int) apply_percentrate64(pc->nextbaseexp(sd), battle_config.death_penalty_base, 10000);
- break;
- case 2:
- base_penalty = (unsigned int) apply_percentrate64(sd->status.base_exp, battle_config.death_penalty_base, 10000);
- break;
+ case 1:
+ base_penalty = (unsigned int)apply_percentrate64(pc->nextbaseexp(sd), rate, 10000);
+ break;
+ case 2:
+ base_penalty = (unsigned int)apply_percentrate64(sd->status.base_exp, rate, 10000);
+ break;
}
if (base_penalty != 0) {
- if (battle_config.pk_mode && src && src->type==BL_PC)
- base_penalty*=2;
- if( sd->status.mod_death != 100 )
+ if (battle_config.pk_mode != 0 && src != NULL && src->type == BL_PC)
+ base_penalty *= 2;
+
+ if (sd->status.mod_death != 100)
base_penalty = base_penalty * sd->status.mod_death / 100;
+
sd->status.base_exp -= min(sd->status.base_exp, base_penalty);
- clif->updatestatus(sd,SP_BASEEXP);
+ clif->updatestatus(sd, SP_BASEEXP);
}
}
- if(battle_config.death_penalty_job > 0) {
+ if (battle_config.death_penalty_job > 0) {
unsigned int job_penalty = 0;
+ int rate = battle_config.death_penalty_job;
switch (battle_config.death_penalty_type) {
- case 1:
- job_penalty = (unsigned int) apply_percentrate64(pc->nextjobexp(sd), battle_config.death_penalty_job, 10000);
- break;
- case 2:
- job_penalty = (unsigned int) apply_percentrate64(sd->status.job_exp, battle_config.death_penalty_job, 10000);
- break;
+ case 1:
+ job_penalty = (unsigned int)apply_percentrate64(pc->nextjobexp(sd), rate, 10000);
+ break;
+ case 2:
+ job_penalty = (unsigned int)apply_percentrate64(sd->status.job_exp, rate, 10000);
+ break;
}
if (job_penalty != 0) {
- if (battle_config.pk_mode && src && src->type==BL_PC)
- job_penalty*=2;
- if( sd->status.mod_death != 100 )
+ if (battle_config.pk_mode != 0 && src != NULL && src->type == BL_PC)
+ job_penalty *= 2;
+
+ if (sd->status.mod_death != 100)
job_penalty = job_penalty * sd->status.mod_death / 100;
+
sd->status.job_exp -= min(sd->status.job_exp, job_penalty);
- clif->updatestatus(sd,SP_JOBEXP);
+ clif->updatestatus(sd, SP_JOBEXP);
}
}
- if (battle_config.zeny_penalty > 0 && !map->list[sd->bl.m].flag.nozenypenalty) {
+ if (battle_config.zeny_penalty > 0 && map->list[sd->bl.m].flag.nozenypenalty == 0) {
int zeny_penalty = apply_percentrate(sd->status.zeny, battle_config.zeny_penalty, 10000);
+
if (zeny_penalty != 0)
pc->payzeny(sd, zeny_penalty, LOG_TYPE_PICKDROP_PLAYER, NULL);
}
}
- if(map->list[sd->bl.m].flag.pvp_nightmaredrop) {
- // Moved this outside so it works when PVP isn't enabled and during pk mode [Ancyker]
- for(j=0;j<map->list[sd->bl.m].drop_list_count;j++){
- int id = map->list[sd->bl.m].drop_list[j].drop_id;
- int type = map->list[sd->bl.m].drop_list[j].drop_type;
- int per = map->list[sd->bl.m].drop_list[j].drop_per;
- if(id == 0)
+ if (map->list[sd->bl.m].flag.pvp_nightmaredrop != 0) {
+ // Moved this outside so it works when PVP isn't enabled and during pk mode. [Ancyker]
+ for (int i = 0; i < map->list[sd->bl.m].drop_list_count; i++) {
+ int id = map->list[sd->bl.m].drop_list[i].drop_id;
+ int type = map->list[sd->bl.m].drop_list[i].drop_type;
+ int per = map->list[sd->bl.m].drop_list[i].drop_per;
+
+ if (id == 0)
continue;
- if(id == -1){
- int eq_num = 0, eq_n[MAX_INVENTORY], k;
- memset(eq_n,0,sizeof(eq_n));
- for(i = 0; i < sd->status.inventorySize; i++) {
- if( (type == 1 && !sd->status.inventory[i].equip)
- || (type == 2 && sd->status.inventory[i].equip)
- || type == 3)
- {
+
+ if (id == -1) {
+ int eq_num = 0;
+ int eq_n[MAX_INVENTORY];
+
+ memset(eq_n, 0, sizeof(eq_n));
+
+ for (int j = 0; j < sd->status.inventorySize; j++) {
+ bool is_equipped = (sd->status.inventory[j].equip != 0);
+
+ if ((type == 1 && !is_equipped) || (type == 2 && is_equipped) || type == 3) {
+ int k;
+
ARR_FIND(0, sd->status.inventorySize, k, eq_n[k] <= 0);
+
if (k < sd->status.inventorySize)
- eq_n[k] = i;
+ eq_n[k] = j;
eq_num++;
}
}
- if(eq_num > 0){
- int n = eq_n[rnd()%eq_num];
- if(rnd()%10000 < per){
- if(sd->status.inventory[n].equip)
+
+ if (eq_num > 0) {
+ int n = eq_n[rnd() % eq_num];
+
+ if (rnd() % 10000 < per) {
+ if (sd->status.inventory[n].equip != 0)
pc->unequipitem(sd, n, PCUNEQUIPITEM_RECALC|PCUNEQUIPITEM_FORCE);
- pc->dropitem(sd,n,1);
+
+ pc->dropitem(sd, n, 1);
}
}
- }
- else if(id > 0){
- for( i = 0; i < sd->status.inventorySize; i++) {
- if(sd->status.inventory[i].nameid == id
- && rnd()%10000 < per
- && ((type == 1 && !sd->status.inventory[i].equip)
- || (type == 2 && sd->status.inventory[i].equip)
- || type == 3) ){
- if(sd->status.inventory[i].equip)
- pc->unequipitem(sd, i, PCUNEQUIPITEM_RECALC|PCUNEQUIPITEM_FORCE);
- pc->dropitem(sd,i,1);
+ } else if (id > 0) {
+ for (int j = 0; j < sd->status.inventorySize; j++) {
+ bool is_equipped = (sd->status.inventory[j].equip != 0);
+
+ if (((type == 1 && !is_equipped) || (type == 2 && is_equipped) || type == 3)
+ && sd->status.inventory[j].nameid == id && rnd() % 10000 < per) {
+ if (is_equipped)
+ pc->unequipitem(sd, j, PCUNEQUIPITEM_RECALC|PCUNEQUIPITEM_FORCE);
+
+ pc->dropitem(sd, j, 1);
break;
}
}
@@ -8324,46 +8486,51 @@ static int pc_dead(struct map_session_data *sd, struct block_list *src)
}
}
- // Remove autotrade to prevent autotrading from save point
- if( (sd->state.standalone || sd->state.autotrade)
- && (map->list[sd->bl.m].flag.pvp || map->list[sd->bl.m].flag.gvg)
- ) {
+ // Remove autotrade to prevent autotrading from save point.
+ if ((map->list[sd->bl.m].flag.pvp != 0 || map->list[sd->bl.m].flag.gvg != 0)
+ && (sd->state.standalone != 0 || sd->state.autotrade != 0)) {
sd->state.autotrade = 0;
sd->state.standalone = 0;
- pc->autotrade_update(sd,PAUC_REMOVE);
+ pc->autotrade_update(sd, PAUC_REMOVE);
map->quit(sd);
}
- // pvp
- // disable certain pvp functions on pk_mode [Valaris]
- if( map->list[sd->bl.m].flag.pvp && !battle_config.pk_mode && !map->list[sd->bl.m].flag.pvp_nocalcrank ) {
+ // Disable certain PVP functions on pk_mode. [Valaris]
+ if (map->list[sd->bl.m].flag.pvp != 0 && battle_config.pk_mode == 0
+ && map->list[sd->bl.m].flag.pvp_nocalcrank == 0) {
sd->pvp_point -= 5;
sd->pvp_lost++;
+
if (src != NULL && src->type == BL_PC) {
struct map_session_data *ssd = BL_UCAST(BL_PC, src);
+
ssd->pvp_point++;
ssd->pvp_won++;
}
- if( sd->pvp_point < 0 )
- {
- timer->add(tick+1, pc->respawn_timer,sd->bl.id,0);
+
+ if (sd->pvp_point < 0) {
+ timer->add(tick + 1, pc->respawn_timer, sd->bl.id, 0);
return 1|8;
}
}
- //GvG
- if( map_flag_gvg2(sd->bl.m) ) {
- timer->add(tick+1, pc->respawn_timer, sd->bl.id, 0);
+
+ // GVG
+ if (map_flag_gvg2(sd->bl.m)) {
+ timer->add(tick + 1, pc->respawn_timer, sd->bl.id, 0);
return 1|8;
- } else if( sd->bg_id ) {
+ }
+
+ if (sd->bg_id != 0) {
struct battleground_data *bgd = bg->team_search(sd->bg_id);
- if( bgd && bgd->mapindex > 0 ) { // Respawn by BG
- timer->add(tick+1000, pc->respawn_timer, sd->bl.id, 0);
+
+ if (bgd != NULL && bgd->mapindex > 0) { // Respawn by BG.
+ timer->add(tick + 1000, pc->respawn_timer, sd->bl.id, 0);
return 1|8;
}
}
- //Reset "can log out" tick.
- if( battle_config.prevent_logout )
+ // Reset "can log out" tick.
+ if (battle_config.prevent_logout != 0)
sd->canlog_tick = timer->gettick() - battle_config.prevent_logout;
return 1;
@@ -8786,6 +8953,10 @@ static int pc_itemheal(struct map_session_data *sd, int itemid, int hp, int sp)
// 2014 Halloween Event : Pumpkin Bonus
if ( sd->sc.data[SC_MTF_PUMPKIN] && itemid == ITEMID_PUMPKIN )
hp += (int)(hp * sd->sc.data[SC_MTF_PUMPKIN]->val1/100);
+
+ // Activation Potion
+ if (sd->sc.data[SC_VITALIZE_POTION] != NULL)
+ hp += hp * sd->sc.data[SC_VITALIZE_POTION]->val3 / 100;
}
if(sp) {
bonus = 100 + (sd->battle_status.int_<<1)
@@ -9180,6 +9351,72 @@ static int pc_changelook(struct map_session_data *sd, int type, int val)
return 0;
}
+/**
+ * Hides a character.
+ *
+ * @param sd The character to hide.
+ * @param show_msg Whether to show message to the character or not.
+ *
+ **/
+static void pc_hide(struct map_session_data *sd, bool show_msg)
+{
+ nullpo_retv(sd);
+
+ clif->clearunit_area(&sd->bl, CLR_OUTSIGHT);
+ sd->sc.option |= OPTION_INVISIBLE;
+ sd->vd.class = INVISIBLE_CLASS;
+
+ if (show_msg)
+ clif->message(sd->fd, atcommand->msgsd(sd, 11)); // Invisible: On
+
+ // Decrement the number of pvp players on the map.
+ map->list[sd->bl.m].users_pvp--;
+
+ if (map->list[sd->bl.m].flag.pvp != 0 && map->list[sd->bl.m].flag.pvp_nocalcrank == 0
+ && sd->pvp_timer != INVALID_TIMER) { // Unregister the player for ranking.
+ timer->delete(sd->pvp_timer, pc->calc_pvprank_timer);
+ sd->pvp_timer = INVALID_TIMER;
+ }
+
+ clif->changeoption(&sd->bl);
+}
+
+/**
+ * Unhides a character.
+ *
+ * @param sd The character to unhide.
+ * @param show_msg Whether to show message to the character or not.
+ *
+ **/
+static void pc_unhide(struct map_session_data *sd, bool show_msg)
+{
+ nullpo_retv(sd);
+
+ sd->sc.option &= ~OPTION_INVISIBLE;
+
+ if (sd->disguise != -1)
+ status->set_viewdata(&sd->bl, sd->disguise);
+ else
+ status->set_viewdata(&sd->bl, sd->status.class);
+
+ if (show_msg)
+ clif->message(sd->fd, atcommand->msgsd(sd, 10)); // Invisible: Off
+
+ // Increment the number of pvp players on the map.
+ map->list[sd->bl.m].users_pvp++;
+
+ if (map->list[sd->bl.m].flag.pvp != 0 && map->list[sd->bl.m].flag.pvp_nocalcrank == 0) // Register the player for ranking.
+ sd->pvp_timer = timer->add(timer->gettick() + 200, pc->calc_pvprank_timer, sd->bl.id, 0);
+
+ // bugreport:2266
+ map->foreachinmovearea(clif->insight, &sd->bl, AREA_SIZE, sd->bl.x, sd->bl.y, BL_ALL, &sd->bl);
+
+ if (sd->disguise != -1)
+ clif->spawn_unit(&sd->bl, AREA_WOS);
+
+ clif->changeoption(&sd->bl);
+}
+
/*==========================================
* Give an option (type) to player (sd) and display it to client
*------------------------------------------*/
@@ -9191,7 +9428,13 @@ static int pc_setoption(struct map_session_data *sd, int type)
//Option has to be changed client-side before the class sprite or it won't always work (eg: Wedding sprite) [Skotlex]
sd->sc.option=type;
- clif->changeoption(&sd->bl);
+
+ if ((p_type & OPTION_INVISIBLE) != 0 && (type & OPTION_INVISIBLE) == 0) // Unhide character.
+ pc->unhide(sd, false);
+ else if ((p_type & OPTION_INVISIBLE) == 0 && (type & OPTION_INVISIBLE) != 0) // Hide character.
+ pc->hide(sd, false);
+ else
+ clif->changeoption(&sd->bl);
if( (type&OPTION_RIDING && !(p_type&OPTION_RIDING)) || (type&OPTION_DRAGON && !(p_type&OPTION_DRAGON) && pc->checkskill(sd,RK_DRAGONTRAINING) > 0) ) {
// Mounting
@@ -10144,141 +10387,163 @@ static void pc_equipitem_pos(struct map_session_data *sd, struct item_data *id,
}
}
-/*==========================================
- * Equip item on player sd at req_pos from inventory index n
- * Return:
- * 0 = fail
- * 1 = success
- *------------------------------------------*/
+/**
+ * Attempts to equip an item.
+ *
+ * @param sd The related character.
+ * @param n The item's inventory index.
+ * @param req_pos The equipment slot, where the item should be equipped. (See enum equip_pos.)
+ * @return 0 on failure, 1 on success.
+ *
+ **/
static int pc_equipitem(struct map_session_data *sd, int n, int req_pos)
{
- int i,pos,flag=0,iflag;
- struct item_data *id;
-
nullpo_ret(sd);
if (n < 0 || n >= sd->status.inventorySize) {
- clif->equipitemack(sd,0,0,EIA_FAIL);
+ clif->equipitemack(sd, 0, 0, EIA_FAIL);
return 0;
}
- if( DIFF_TICK(sd->canequip_tick,timer->gettick()) > 0 )
- {
- clif->equipitemack(sd,n,0,EIA_FAIL);
+ // If the character is in berserk mode, the item can't be equipped.
+ if (sd->sc.count != 0 && (sd->sc.data[SC_BERSERK] != NULL || sd->sc.data[SC_NO_SWITCH_EQUIP] != NULL)) {
+ clif->equipitemack(sd, n, 0, EIA_FAIL);
return 0;
}
- id = sd->inventory_data[n];
- pos = pc->equippoint(sd,n); //With a few exceptions, item should go in all specified slots.
+ if (battle_config.battle_log != 0)
+ ShowInfo("equip %d(%d) %x:%x\n", sd->status.inventory[n].nameid, n, sd->status.inventory[n].equip,
+ (unsigned int)req_pos);
- if(battle_config.battle_log)
- ShowInfo("equip %d(%d) %x:%x\n", sd->status.inventory[n].nameid, n, (unsigned int)(id ? id->equip : 0), (unsigned int)req_pos);
- if(!pc->isequip(sd,n) || !(pos&req_pos) || sd->status.inventory[n].equip != 0 || (sd->status.inventory[n].attribute & ATTR_BROKEN) != 0 ) { // [Valaris]
- // FIXME: pc->isequip: equip level failure uses 2 instead of 0
- clif->equipitemack(sd,n,0,EIA_FAIL); // fail
+ if (DIFF_TICK(sd->canequip_tick, timer->gettick()) > 0) {
+ clif->equipitemack(sd, n, 0, EIA_FAIL);
return 0;
}
- if (sd->sc.data[SC_BERSERK] || sd->sc.data[SC_NO_SWITCH_EQUIP])
- {
- clif->equipitemack(sd,n,0,EIA_FAIL); // fail
+ int pos = pc->equippoint(sd, n); // With a few exceptions, item should go in all specified slots.
+
+ if (pc->isequip(sd,n) == 0 || (pos & req_pos) == 0 || sd->status.inventory[n].equip != 0
+ || (sd->status.inventory[n].attribute & ATTR_BROKEN) != 0) {
+ clif->equipitemack(sd, n, 0, EIA_FAIL);
return 0;
+ }
+
+ if (sd->inventory_data[n]->flag.bindonequip != 0 && sd->status.inventory[n].bound == 0) {
+ sd->status.inventory[n].bound = IBT_CHARACTER;
+ clif->notify_bounditem(sd, n);
}
- /* won't fail from this point onwards */
- if( id->flag.bindonequip && !sd->status.inventory[n].bound ) {
- sd->status.inventory[n].bound = (unsigned char)IBT_CHARACTER;
- clif->notify_bounditem(sd,n);
- }
-
- if(pos == EQP_ACC) { //Accesories should only go in one of the two,
- pos = req_pos&EQP_ACC;
- if (pos == EQP_ACC) //User specified both slots..
- pos = sd->equip_index[EQI_ACC_R] >= 0 ? EQP_ACC_L : EQP_ACC_R;
- } else if(pos == EQP_ARMS && id->equip == EQP_HAND_R) { //Dual wield capable weapon.
- pos = (req_pos&EQP_ARMS);
- if (pos == EQP_ARMS) //User specified both slots, pick one for them.
- pos = sd->equip_index[EQI_HAND_R] >= 0 ? EQP_HAND_L : EQP_HAND_R;
- } else if(pos == EQP_SHADOW_ACC) { //Accesories should only go in one of the two,
- pos = req_pos&EQP_SHADOW_ACC;
- if (pos == EQP_SHADOW_ACC) //User specified both slots..
- pos = sd->equip_index[EQI_SHADOW_ACC_R] >= 0 ? EQP_SHADOW_ACC_L : EQP_SHADOW_ACC_R;
- } else if( pos == EQP_SHADOW_ARMS && id->equip == EQP_SHADOW_WEAPON) { //Dual wield capable weapon.
- pos = (req_pos&EQP_SHADOW_ARMS);
- if (pos == EQP_SHADOW_ARMS) //User specified both slots, pick one for them.
- pos = sd->equip_index[EQI_SHADOW_WEAPON] >= 0 ? EQP_SHADOW_SHIELD : EQP_SHADOW_WEAPON;
- }
-
- if (pos&EQP_HAND_R && battle_config.use_weapon_skill_range&BL_PC) {
- //Update skill-block range database when weapon range changes. [Skotlex]
- i = sd->equip_index[EQI_HAND_R];
- if (i < 0 || !sd->inventory_data[i]) //No data, or no weapon equipped
+ if (pos == EQP_ACC) { // Accesories should only go in one of the two.
+ pos = req_pos & EQP_ACC;
+
+ if (pos == EQP_ACC) // User specified both slots.
+ pos = (sd->equip_index[EQI_ACC_R] >= 0) ? EQP_ACC_L : EQP_ACC_R;
+ } else if (pos == EQP_ARMS && sd->inventory_data[n]->equip == EQP_HAND_R) { // Dual wield capable weapon.
+ pos = req_pos & EQP_ARMS;
+
+ if (pos == EQP_ARMS) // User specified both slots, pick one for them.
+ pos = (sd->equip_index[EQI_HAND_R] >= 0) ? EQP_HAND_L : EQP_HAND_R;
+ } else if (pos == EQP_SHADOW_ACC) { // Accesories should only go in one of the two,
+ pos = req_pos & EQP_SHADOW_ACC;
+
+ if (pos == EQP_SHADOW_ACC) // User specified both slots.
+ pos = (sd->equip_index[EQI_SHADOW_ACC_R] >= 0) ? EQP_SHADOW_ACC_L : EQP_SHADOW_ACC_R;
+ } else if (pos == EQP_SHADOW_ARMS && sd->inventory_data[n]->equip == EQP_SHADOW_WEAPON) { // Dual wield capable weapon.
+ pos = req_pos & EQP_SHADOW_ARMS;
+
+ if (pos == EQP_SHADOW_ARMS) // User specified both slots, pick one for them.
+ pos = (sd->equip_index[EQI_SHADOW_WEAPON] >= 0) ? EQP_SHADOW_SHIELD : EQP_SHADOW_WEAPON;
+ }
+
+ int flag = 0;
+
+ // Update skill-block range database when weapon range changes. [Skotlex]
+ if ((pos & EQP_HAND_R) != 0 && (battle_config.use_weapon_skill_range & BL_PC) != 0) {
+ int idx = sd->equip_index[EQI_HAND_R];
+
+ if (idx < 0 || sd->inventory_data[idx] == NULL) // No data, or no weapon equipped.
flag = 1;
else
- flag = id->range != sd->inventory_data[i]->range;
+ flag = (sd->inventory_data[n]->range != sd->inventory_data[idx]->range) ? 1 : 0;
}
- for(i=0;i<EQI_MAX;i++) {
- if(pos & pc->equip_pos[i]) {
- if(sd->equip_index[i] >= 0) //Slot taken, remove item from there.
+ for (int i = 0; i < EQI_MAX; i++) {
+ if ((pos & pc->equip_pos[i]) != 0) {
+ if (sd->equip_index[i] >= 0) // Slot taken, remove item from there.
pc->unequipitem(sd, sd->equip_index[i], PCUNEQUIPITEM_FORCE);
sd->equip_index[i] = n;
}
}
- if(pos==EQP_AMMO){
- clif->arrowequip(sd,n);
- clif->arrow_fail(sd,3);
+ if (pos == EQP_AMMO) {
+ clif->arrowequip(sd, n);
+ clif->arrow_fail(sd, 3);
+ } else {
+ clif->equipitemack(sd, n, pos, EIA_SUCCESS);
}
- else
- clif->equipitemack(sd,n,pos,EIA_SUCCESS);
- sd->status.inventory[n].equip=pos;
+ sd->status.inventory[n].equip = pos;
+ pc->equipitem_pos(sd, sd->inventory_data[n], n, pos);
+ pc->checkallowskill(sd); // Check if status changes should be halted.
- pc->equipitem_pos(sd, id, n, pos);
+ int iflag = sd->npc_item_flag;
- pc->checkallowskill(sd); //Check if status changes should be halted.
- iflag = sd->npc_item_flag;
+ // Check for combos. (MUST be done before status->calc_pc()!)
+ if (sd->inventory_data[n]->combos_count != 0)
+ pc->checkcombo(sd, sd->inventory_data[n]);
- /* check for combos (MUST be before status_calc_pc) */
- if( id->combos_count )
- pc->checkcombo(sd,id);
- if(itemdb_isspecial(sd->status.inventory[n].card[0]))
- ; //No cards
- else {
- for( i = 0; i < id->slot; i++ ) {
- struct item_data *data;
- if (!sd->status.inventory[n].card[i])
+ if (!itemdb_isspecial(sd->status.inventory[n].card[0])) {
+ for (int i = 0; i < sd->inventory_data[n]->slot; i++) {
+ if (sd->status.inventory[n].card[i] == 0)
continue;
- if ( ( data = itemdb->exists(sd->status.inventory[n].card[i]) ) != NULL ) {
- if( data->combos_count )
- pc->checkcombo(sd,data);
- }
+
+ struct item_data *data = itemdb->exists(sd->status.inventory[n].card[i]);
+
+ if (data != NULL && data->combos_count != 0)
+ pc->checkcombo(sd, data);
}
}
- status_calc_pc(sd,SCO_NONE);
- if (flag) //Update skill data
+ status_calc_pc(sd, SCO_NONE);
+
+ if (flag != 0) // Update skill data.
clif->skillinfoblock(sd);
+
+ // Execute equip script. [Skotlex]
+ struct item_data *equip_data = sd->inventory_data[n];
+ struct map_zone_data *zone = map->list[sd->bl.m].zone;
+ int dis_items_cnt = zone->disabled_items_count;
- //OnEquip script [Skotlex]
- if (id->equip_script)
- script->run_item_equip_script(sd, id, npc->fake_nd->bl.id);
+ if (equip_data->equip_script != NULL) {
+ int idx;
- if(itemdb_isspecial(sd->status.inventory[n].card[0]))
- ; //No cards
- else {
- for( i = 0; i < id->slot; i++ ) {
- struct item_data *data;
- if (!sd->status.inventory[n].card[i])
+ ARR_FIND(0, dis_items_cnt, idx, zone->disabled_items[idx] == equip_data->nameid);
+
+ if (idx == dis_items_cnt)
+ script->run_item_equip_script(sd, equip_data, npc->fake_nd->bl.id);
+ }
+
+ struct item *equip = &sd->status.inventory[n];
+
+ if (!itemdb_isspecial(equip->card[0])) {
+ for (int slot = 0; slot < equip_data->slot; slot++) {
+ if (equip->card[slot] == 0)
continue;
- if ( ( data = itemdb->exists(sd->status.inventory[n].card[i]) ) != NULL ) {
- if (data->equip_script)
- script->run_item_equip_script(sd, data, npc->fake_nd->bl.id);
+
+ struct item_data *card_data = itemdb->exists(equip->card[slot]);
+
+ if (card_data != NULL && card_data->equip_script != NULL) {
+ int idx;
+
+ ARR_FIND(0, dis_items_cnt, idx, zone->disabled_items[idx] == card_data->nameid);
+
+ if (idx == dis_items_cnt)
+ script->run_item_equip_script(sd, card_data, npc->fake_nd->bl.id);
}
}
}
+
sd->npc_item_flag = iflag;
return 1;
@@ -10350,19 +10615,17 @@ static void pc_unequipitem_pos(struct map_session_data *sd, int n, int pos)
}
}
-/*==========================================
- * Called when attemting to unequip an item from player
- * type: @see enum pc_unequipitem_flag
- * Return:
- * 0 = fail
- * 1 = success
- *------------------------------------------*/
+/**
+ * Attempts to unequip an item.
+ *
+ * @param sd The related character.
+ * @param n The item's inventory index.
+ * @param flag Modifier for additional actions. (See enum pc_unequipitem_flag.)
+ * @return 0 on failure, 1 on success.
+ *
+ **/
static int pc_unequipitem(struct map_session_data *sd, int n, int flag)
{
- int i, iflag;
- bool status_calc = false;
- int pos;
-
nullpo_ret(sd);
if (n < 0 || n >= sd->status.inventorySize) {
@@ -10370,127 +10633,128 @@ static int pc_unequipitem(struct map_session_data *sd, int n, int flag)
return 0;
}
- // if player is berserk then cannot unequip
- if (!(flag & PCUNEQUIPITEM_FORCE) && sd->sc.count && (sd->sc.data[SC_BERSERK] || sd->sc.data[SC_NO_SWITCH_EQUIP])) {
+ // If the character is in berserk mode, the item can't be unequipped.
+ if (sd->sc.count != 0 && (sd->sc.data[SC_BERSERK] != NULL || sd->sc.data[SC_NO_SWITCH_EQUIP] != NULL)
+ && (flag & PCUNEQUIPITEM_FORCE) == 0) {
clif->unequipitemack(sd, n, 0, UIA_FAIL);
return 0;
}
- if (!(flag & PCUNEQUIPITEM_FORCE) && sd->sc.count && sd->sc.data[SC_KYOUGAKU]) {
+ if ((flag & PCUNEQUIPITEM_FORCE) == 0 && sd->sc.count != 0 && sd->sc.data[SC_KYOUGAKU] != NULL) {
clif->unequipitemack(sd, n, 0, UIA_FAIL);
return 0;
}
- if (battle_config.battle_log)
+ if (battle_config.battle_log != 0)
ShowInfo("unequip %d %x:%x\n", n, (unsigned int)(pc->equippoint(sd, n)), sd->status.inventory[n].equip);
- if (sd->status.inventory[n].equip == 0) { //Nothing to unequip
+ if (sd->status.inventory[n].equip == 0) { // Nothing to unequip.
clif->unequipitemack(sd, n, 0, UIA_FAIL);
return 0;
}
- for (i = 0; i < EQI_MAX; i++) {
- if (sd->status.inventory[n].equip & pc->equip_pos[i])
+ for (int i = 0; i < EQI_MAX; i++) {
+ if ((sd->status.inventory[n].equip & pc->equip_pos[i]) != 0)
sd->equip_index[i] = -1;
}
- pos = sd->status.inventory[n].equip;
- pc->unequipitem_pos(sd, n, pos);
+ int pos = sd->status.inventory[n].equip;
+ pc->unequipitem_pos(sd, n, pos);
clif->unequipitemack(sd, n, pos, UIA_SUCCESS);
- if ((pos & EQP_ARMS) &&
- sd->weapontype1 == W_FIST && sd->weapontype2 == W_FIST && (sd->sc.data[SC_TK_SEVENWIND] == NULL || sd->sc.data[SC_ASPERSIO] != NULL)) //Check for seven wind (but not level seven!)
+ if ((pos & EQP_ARMS) != 0 && sd->weapontype1 == W_FIST && sd->weapontype2 == W_FIST
+ && (sd->sc.data[SC_TK_SEVENWIND] == NULL || sd->sc.data[SC_ASPERSIO] != NULL)) { // Check for Seven Wind. (But not level seven!)
skill->enchant_elemental_end(&sd->bl, -1);
+ }
- if (pos & EQP_ARMOR) {
- // On Armor Change...
+ if ((pos & EQP_ARMOR) != 0) {
status_change_end(&sd->bl, SC_BENEDICTIO, INVALID_TIMER);
status_change_end(&sd->bl, SC_ARMOR_RESIST, INVALID_TIMER);
}
#ifdef RENEWAL
- if (battle->bc->bow_unequip_arrow && pos&EQP_ARMS && sd->equip_index[EQI_AMMO] > 0)
+ if (battle->bc->bow_unequip_arrow != 0 && (pos & EQP_ARMS) != 0 && sd->equip_index[EQI_AMMO] > 0)
pc->unequipitem(sd, sd->equip_index[EQI_AMMO], PCUNEQUIPITEM_FORCE);
#endif
- if( sd->state.autobonus&pos )
- sd->state.autobonus &= ~sd->status.inventory[n].equip; //Check for activated autobonus [Inkfish]
+ if ((sd->state.autobonus & pos) != 0) // Check for activated autobonus. [Inkfish]
+ sd->state.autobonus &= ~sd->status.inventory[n].equip;
sd->status.inventory[n].equip = 0;
- iflag = sd->npc_item_flag;
- /* check for combos (MUST be before status_calc_pc) */
+ bool status_calc = false;
+ int iflag = sd->npc_item_flag;
+
+ // Check for combos. (MUST be done before status->calc_pc()!)
if (sd->inventory_data[n] != NULL) {
- if (sd->inventory_data[n]->combos_count) {
- if (pc->removecombo(sd, sd->inventory_data[n]))
- status_calc = true;
- }
- if (itemdb_isspecial(sd->status.inventory[n].card[0]) == false) {
- for (i = 0; i < sd->inventory_data[n]->slot; i++) {
- struct item_data *data;
+ if (sd->inventory_data[n]->combos_count != 0 && pc->removecombo(sd, sd->inventory_data[n]) != 0)
+ status_calc = true;
+
+ if (!itemdb_isspecial(sd->status.inventory[n].card[0])) {
+ for (int i = 0; i < sd->inventory_data[n]->slot; i++) {
if (sd->status.inventory[n].card[i] == 0)
continue;
- if ((data = itemdb->exists(sd->status.inventory[n].card[i])) != NULL) {
- if (data->combos_count) {
- if (pc->removecombo(sd, data))
- status_calc = true;
- }
- }
+
+ struct item_data *data = itemdb->exists(sd->status.inventory[n].card[i]);
+
+ if (data != NULL && data->combos_count != 0 && pc->removecombo(sd, data) != 0)
+ status_calc = true;
}
}
- /* Item Options checking */
- for (i = 0; i < MAX_ITEM_OPTIONS; i++) {
- struct itemdb_option *ito = NULL;
- int16 item_option = sd->status.inventory[n].option[i].index;
- if (item_option <= 0)
+ // Check item options.
+ for (int i = 0; i < MAX_ITEM_OPTIONS; i++) {
+ if (sd->status.inventory[n].option[i].index <= 0)
continue;
- if ((ito = itemdb->option_exists(sd->status.inventory[n].option[i].index)) == NULL)
+
+ if (itemdb->option_exists(sd->status.inventory[n].option[i].index) == NULL)
continue;
status_calc = true;
}
}
- if (flag & PCUNEQUIPITEM_RECALC || status_calc) {
+ if ((flag & PCUNEQUIPITEM_RECALC) != 0 || status_calc) {
pc->checkallowskill(sd);
status_calc_pc(sd, SCO_NONE);
}
- if (sd->sc.data[SC_CRUCIS] && battle->check_undead(sd->battle_status.race, sd->battle_status.def_ele) == false)
+ if (sd->sc.data[SC_CRUCIS] != NULL && !battle->check_undead(sd->battle_status.race, sd->battle_status.def_ele))
status_change_end(&sd->bl, SC_CRUCIS, INVALID_TIMER);
- //OnUnEquip script [Skotlex]
+ // Execute unequip script. [Skotlex]
if (sd->inventory_data[n] != NULL) {
- if (sd->inventory_data[n]->unequip_script != NULL) {
- if (battle_config.unequip_restricted_equipment & 1) {
- ARR_FIND(0, map->list[sd->bl.m].zone->disabled_items_count, i, map->list[sd->bl.m].zone->disabled_items[i] == sd->status.inventory[n].nameid);
- if (i == map->list[sd->bl.m].zone->disabled_items_count)
- script->run_item_unequip_script(sd, sd->inventory_data[n], npc->fake_nd->bl.id);
- }
- else
- script->run_item_unequip_script(sd, sd->inventory_data[n], npc->fake_nd->bl.id);
+ struct item_data *equip_data = sd->inventory_data[n];
+ struct map_zone_data *zone = map->list[sd->bl.m].zone;
+ int dis_items_cnt = zone->disabled_items_count;
+
+ if (equip_data->unequip_script != NULL) {
+ int idx;
+
+ ARR_FIND(0, dis_items_cnt, idx, zone->disabled_items[idx] == equip_data->nameid);
+
+ if (idx == dis_items_cnt)
+ script->run_item_unequip_script(sd, equip_data, npc->fake_nd->bl.id);
}
- if (itemdb_isspecial(sd->status.inventory[n].card[0]) == false) {
- for (i = 0; i < sd->inventory_data[n]->slot; i++) {
- struct item_data *data = NULL;
- if (sd->status.inventory[n].card[i] == 0)
+
+ struct item *equip = &sd->status.inventory[n];
+
+ if (!itemdb_isspecial(equip->card[0])) {
+ for (int slot = 0; slot < equip_data->slot; slot++) {
+ if (equip->card[slot] == 0)
continue;
- if ((data = itemdb->exists(sd->status.inventory[n].card[i])) != NULL) {
- if (data->unequip_script) {
- if (battle_config.unequip_restricted_equipment & 2) {
- int j;
- ARR_FIND(0, map->list[sd->bl.m].zone->disabled_items_count, j, map->list[sd->bl.m].zone->disabled_items[j] == sd->status.inventory[n].card[i]);
- if (j == map->list[sd->bl.m].zone->disabled_items_count)
- script->run_item_unequip_script(sd, data, npc->fake_nd->bl.id);
- } else {
- script->run_item_unequip_script(sd, data, npc->fake_nd->bl.id);
- }
- }
- }
+ struct item_data *card_data = itemdb->exists(equip->card[slot]);
+
+ if (card_data != NULL && card_data->unequip_script != NULL) {
+ int idx;
+ ARR_FIND(0, dis_items_cnt, idx, zone->disabled_items[idx] == card_data->nameid);
+
+ if (idx == dis_items_cnt)
+ script->run_item_unequip_script(sd, card_data, npc->fake_nd->bl.id);
+ }
}
}
}
@@ -11127,7 +11391,7 @@ static int pc_charm_timer(int tid, int64 tick, int id, intptr_t data)
* @param max Maximum amount of charms to add.
* @param type Charm type (@see spirit_charm_types)
*/
-static void pc_add_charm(struct map_session_data *sd, int interval, int max, int type)
+static void pc_add_charm(struct map_session_data *sd, int interval, int max, enum spirit_charm_types type)
{
int tid, i;
@@ -11169,7 +11433,7 @@ static void pc_add_charm(struct map_session_data *sd, int interval, int max, int
* @param count Amount of charms to remove.
* @param type Type of charm to remove.
*/
-static void pc_del_charm(struct map_session_data *sd, int count, int type)
+static void pc_del_charm(struct map_session_data *sd, int count, enum spirit_charm_types type)
{
int i;
@@ -11864,7 +12128,6 @@ static void pc_scdata_received(struct map_session_data *sd)
{
nullpo_retv(sd);
pc->inventory_rentals(sd);
- clif->show_modifiers(sd);
if (sd->expiration_time != 0) { // don't display if it's unlimited or unknow value
time_t exp_time = sd->expiration_time;
@@ -12682,7 +12945,10 @@ void pc_defaults(void)
pc->unequipitem_pos = pc_unequipitem_pos;
pc->checkitem = pc_checkitem;
pc->useitem = pc_useitem;
- pc->itemskill_clear = pc_itemskill_clear;
+ pc->autocast_clear_current = pc_autocast_clear_current;
+ pc->autocast_clear = pc_autocast_clear;
+ pc->autocast_set_current = pc_autocast_set_current;
+ pc->autocast_remove = pc_autocast_remove;
pc->skillatk_bonus = pc_skillatk_bonus;
pc->skillheal_bonus = pc_skillheal_bonus;
@@ -12695,6 +12961,8 @@ void pc_defaults(void)
pc->itemheal = pc_itemheal;
pc->percentheal = pc_percentheal;
pc->jobchange = pc_jobchange;
+ pc->hide = pc_hide;
+ pc->unhide = pc_unhide;
pc->setoption = pc_setoption;
pc->setcart = pc_setcart;
pc->setfalcon = pc_setfalcon;
diff --git a/src/map/pc.h b/src/map/pc.h
index e940c3310..e8e591b09 100644
--- a/src/map/pc.h
+++ b/src/map/pc.h
@@ -103,6 +103,13 @@ enum pc_checkitem_types {
PCCHECKITEM_GSTORAGE = 0x8
};
+/** Bit flags for allowed item actions while interacting with NPC. **/
+enum item_enabled_npc_flags {
+ ITEMENABLEDNPC_NONE = 0x0, //!< Don't allow any item actions while interacting with NPC.
+ ITEMENABLEDNPC_EQUIP = 0x1, //!< Allow changing equipment while interacting with NPC.
+ ITEMENABLEDNPC_CONSUME = 0x2, //!< Allow consuming usable items while interacting with NPC.
+};
+
struct weapon_data {
int atkmods[3];
BEGIN_ZEROED_BLOCK; // all the variables within this block get zero'ed in each call of status_calc_pc
@@ -173,6 +180,17 @@ struct pc_combos {
int id; /* this combo id */
};
+/** Auto-cast related data. **/
+struct autocast_data {
+ enum autocast_type type; // The auto-cast type.
+ int skill_id; // The auto-cast skill ID.
+ int skill_lv; // The auto-cast skill level.
+ bool itemskill_conditions_checked; // Used by itemskill() script command, to prevent second check of conditions after target was selected.
+ bool itemskill_check_conditions; // Used by itemskill() script command, to check skill conditions and consume them.
+ bool itemskill_instant_cast; // Used by itemskill() script command, to cast skill instantaneously.
+ bool itemskill_cast_on_self; // Used by itemskill() script command, to forcefully cast skill on invoking character.
+};
+
struct map_session_data {
struct block_list bl;
struct unit_data ud;
@@ -181,6 +199,8 @@ struct map_session_data {
struct status_change sc;
struct regen_data regen;
struct regen_data_sub sregen, ssregen;
+ struct autocast_data auto_cast_current; // Currently processed auto-cast skill.
+ VECTOR_DECL(struct autocast_data) auto_cast; // Auto-cast vector.
//NOTE: When deciding to add a flag to state or special_state, take into consideration that state is preserved in
//status_calc_pc, while special_state is recalculated in each call. [Skotlex]
struct {
@@ -194,8 +214,6 @@ struct map_session_data {
unsigned int rest : 1;
unsigned int storage_flag : 2; // @see enum storage_flag
unsigned int snovice_dead_flag : 1; //Explosion spirits on death: 0 off, 1 used.
- unsigned int abra_flag : 2; // Abracadabra bugfix by Aru
- unsigned int autocast : 1; // Autospell flag [Inkfish]
unsigned int autotrade : 2; //By Fantik
unsigned int showdelay :1;
unsigned int showexp :1;
@@ -206,6 +224,7 @@ struct map_session_data {
unsigned int size :2; // for tiny/large types
unsigned int night :1; //Holds whether or not the player currently has the SI_NIGHT effect on. [Skotlex]
unsigned int using_fake_npc :1;
+ unsigned int using_megaphone : 1; //!< Whether the character is currently using a Megephone (ID=12221).
unsigned int rewarp :1; //Signals that a player should warp as soon as he is done loading a map. [Skotlex]
unsigned int killer : 1;
unsigned int killable : 1;
@@ -240,10 +259,6 @@ struct map_session_data {
unsigned int refine_ui : 1;
unsigned int npc_unloaded : 1; ///< The player is talking with an unloaded NPCs (respawned tombstones)
unsigned int lapine_ui : 1;
- unsigned int itemskill_conditions_checked : 1; // Used by itemskill() script command, to prevent second check of conditions after target was selected.
- unsigned int itemskill_no_conditions : 1; // Used by itemskill() script command, to ignore skill conditions and don't consume them.
- unsigned int itemskill_no_casttime : 1; // Used by itemskill() script command, to cast skill instantaneously.
- unsigned int itemskill_castonself : 1; // Used by itemskill() script command, to forcefully cast skill on invoking character.
} state;
struct {
unsigned char no_weapon_damage, no_magic_damage, no_misc_damage;
@@ -298,7 +313,6 @@ struct map_session_data {
int followtimer; // [MouseJstr]
int followtarget;
time_t emotionlasttime; // to limit flood with emotion packets
- int skillitem,skillitemlv;
uint16 skill_id_old,skill_lv_old;
uint16 skill_id_dance,skill_lv_dance;
short cook_mastery; // range: [0,1999] [Inkfish]
@@ -434,7 +448,7 @@ END_ZEROED_BLOCK;
int spiritball, spiritball_old;
int spirit_timer[MAX_SPIRITBALL];
int charm_count;
- int charm_type;
+ enum spirit_charm_types charm_type;
int charm_timer[MAX_SPIRITCHARM];
unsigned char potion_success_counter; //Potion successes in row counter
unsigned char mission_count; //Stores the bounty kill count for TK_MISSION
@@ -492,6 +506,7 @@ END_ZEROED_BLOCK;
int change_level_3rd; // job level when changing from 2nd to 3rd class [jobchange_level_3rd in global_reg_value]
char fakename[NAME_LENGTH]; // fake names [Valaris]
+ int fakename_options; // Fake name display options.
int duel_group; // duel vars [LuzZza]
int duel_invite;
@@ -623,10 +638,6 @@ END_ZEROED_BLOCK;
uint8 lang_id;
- // temporary debugging of bug #3504
- const char* delunit_prevfile;
- int delunit_prevline;
-
// HatEffect
VECTOR_DECL(int) hatEffectId;
@@ -647,15 +658,6 @@ END_ZEROED_BLOCK;
bool achievements_received;
// Title
VECTOR_DECL(int) title_ids;
-
- /*
- * itemskill_conditions_checked/itemskill_no_conditions/itemskill_no_casttime/itemskill_castonself abuse prevention.
- * If a skill, casted by itemskill() script command, is aborted while target selection,
- * the map server gets no notification where these states could be unset.
- * Thus we need this helper variables to prevent abusing these states for next skill cast.
- */
- int itemskill_id;
- int itemskill_lv;
};
#define EQP_WEAPON EQP_HAND_R
@@ -680,7 +682,11 @@ END_ZEROED_BLOCK;
#define pc_issit(sd) ( (sd)->vd.dead_sit == 2 )
#define pc_isidle(sd) ( (sd)->chat_id != 0 || (sd)->state.vending || (sd)->state.buyingstore || DIFF_TICK(sockt->last_tick, (sd)->idletime) >= battle->bc->idle_no_share )
#define pc_istrading(sd) ( (sd)->npc_id || (sd)->state.vending || (sd)->state.buyingstore || (sd)->state.trading )
+#define pc_istrading_except_npc(sd) ( (sd)->state.vending != 0 || (sd)->state.buyingstore != 0 || (sd)->state.trading != 0 )
#define pc_cant_act(sd) ( (sd)->npc_id || (sd)->state.vending || (sd)->state.buyingstore || (sd)->chat_id != 0 || ((sd)->sc.opt1 && (sd)->sc.opt1 != OPT1_BURNING) || (sd)->state.trading || (sd)->state.storage_flag || (sd)->state.prevend || (sd)->state.refine_ui == 1 || (sd)->state.lapine_ui == 1)
+#define pc_cant_act_except_lapine(sd) ((sd)->npc_id || (sd)->state.vending || (sd)->state.buyingstore || (sd)->chat_id != 0 || ((sd)->sc.opt1 && (sd)->sc.opt1 != OPT1_BURNING) || (sd)->state.trading || (sd)->state.storage_flag || (sd)->state.prevend || (sd)->state.refine_ui == 1)
+#define pc_cant_act_except_npc(sd) ( (sd)->state.vending != 0 || (sd)->state.buyingstore != 0 || (sd)->chat_id != 0 || ((sd)->sc.opt1 != 0 && (sd)->sc.opt1 != OPT1_BURNING) || (sd)->state.trading != 0 || (sd)->state.storage_flag != 0 || (sd)->state.prevend != 0 || (sd)->state.refine_ui == 1 || (sd)->state.lapine_ui == 1)
+#define pc_cant_act_except_npc_chat(sd) ( (sd)->state.vending != 0 || (sd)->state.buyingstore != 0 || ((sd)->sc.opt1 != 0 && (sd)->sc.opt1 != OPT1_BURNING) || (sd)->state.trading != 0 || (sd)->state.storage_flag != 0 || (sd)->state.prevend != 0 || (sd)->state.refine_ui == 1 || (sd)->state.lapine_ui == 1)
/* equals pc_cant_act except it doesn't check for chat rooms */
#define pc_cant_act2(sd) ( (sd)->npc_id || (sd)->state.buyingstore || ((sd)->sc.opt1 && (sd)->sc.opt1 != OPT1_BURNING) || (sd)->state.trading || (sd)->state.storage_flag || (sd)->state.prevend || (sd)->state.refine_ui == 1 || (sd)->state.lapine_ui == 1)
@@ -690,7 +696,7 @@ END_ZEROED_BLOCK;
#define pc_ishiding(sd) ( (sd)->sc.option&(OPTION_HIDE|OPTION_CLOAK|OPTION_CHASEWALK) )
#define pc_iscloaking(sd) ( !((sd)->sc.option&OPTION_CHASEWALK) && ((sd)->sc.option&OPTION_CLOAK) )
#define pc_ischasewalk(sd) ( (sd)->sc.option&OPTION_CHASEWALK )
-#define pc_ismuted(sc,type) ( (sc)->data[SC_NOCHAT] && (sc)->data[SC_NOCHAT]->val1&(type) )
+#define pc_ismuted(sc, type) ( (sc)->data[SC_NOCHAT] != NULL && (battle_config.manner_system & (type)) != 0 )
#define pc_isvending(sd) ((sd)->state.vending || (sd)->state.prevend || (sd)->state.buyingstore)
#ifdef NEW_CARTS
@@ -724,6 +730,9 @@ END_ZEROED_BLOCK;
/// Rune Knight Dragon
#define pc_isridingdragon(sd) ( (sd)->sc.option&OPTION_DRAGON )
+// Check if character has a pet.
+#define pc_has_pet(sd) ( (sd)->status.pet_id != 0 && (sd)->pd != NULL && (sd)->pd->pet.intimate > PET_INTIMACY_NONE )
+
#define pc_stop_walking(sd, type) (unit->stop_walking(&(sd)->bl, (type)))
#define pc_stop_attack(sd) (unit->stop_attack(&(sd)->bl))
@@ -870,6 +879,12 @@ struct class_exp_tables {
struct class_exp_group *class_exp_table[CLASS_COUNT][2];
};
+enum player_actions_when_dead_flags {
+ PCALLOWACTION_NONE = 0x0, // Don't allow trading and open chat rooms.
+ PCALLOWACTION_TRADE = 0x1, // Allow trading when dead.
+ PCALLOWACTION_CHAT = 0x2, // Allow open chat room when dead.
+};
+
/*=====================================
* Interface : pc.h
* Generated by HerculesInterfaceMaker
@@ -1034,7 +1049,10 @@ END_ZEROED_BLOCK; /* End */
void (*unequipitem_pos) (struct map_session_data *sd, int n, int pos);
int (*checkitem) (struct map_session_data *sd);
int (*useitem) (struct map_session_data *sd,int n);
- int (*itemskill_clear) (struct map_session_data *sd);
+ void (*autocast_clear_current) (struct map_session_data *sd);
+ void (*autocast_clear) (struct map_session_data *sd);
+ void (*autocast_set_current) (struct map_session_data *sd, int skill_id);
+ void (*autocast_remove) (struct map_session_data *sd, enum autocast_type type, int skill_id, int skill_lv);
int (*skillatk_bonus) (struct map_session_data *sd, uint16 skill_id);
int (*skillheal_bonus) (struct map_session_data *sd, uint16 skill_id);
@@ -1047,6 +1065,8 @@ END_ZEROED_BLOCK; /* End */
int (*itemheal) (struct map_session_data *sd,int itemid, int hp,int sp);
int (*percentheal) (struct map_session_data *sd,int hp,int sp);
int (*jobchange) (struct map_session_data *sd, int class, int upper);
+ void (*hide) (struct map_session_data *sd, bool show_msg);
+ void (*unhide) (struct map_session_data *sd, bool show_msg);
int (*setoption) (struct map_session_data *sd,int type);
int (*setcart) (struct map_session_data* sd, int type);
void (*setfalcon) (struct map_session_data *sd, bool flag);
@@ -1130,8 +1150,8 @@ END_ZEROED_BLOCK; /* End */
int (*load_combo) (struct map_session_data *sd);
- void (*add_charm) (struct map_session_data *sd, int interval, int max, int type);
- void (*del_charm) (struct map_session_data *sd, int count, int type);
+ void (*add_charm) (struct map_session_data *sd, int interval, int max, enum spirit_charm_types type);
+ void (*del_charm) (struct map_session_data *sd, int count, enum spirit_charm_types type);
void (*baselevelchanged) (struct map_session_data *sd);
int (*level_penalty_mod) (int diff, unsigned char race, uint32 mode, int type);
diff --git a/src/map/pet.c b/src/map/pet.c
index f20de2650..f10c55f57 100644
--- a/src/map/pet.c
+++ b/src/map/pet.c
@@ -60,62 +60,140 @@ struct pet_interface *pet;
#define MIN_PETTHINKTIME 100
+/**
+ * Gets a pet's hunger value, depending it's hunger level.
+ * This value is only used in clif_parse_LoadEndAck() when calling clif_pet_emotion().
+ *
+ * @param pd The pet.
+ * @return The pet's hunger value.
+ *
+ **/
static int pet_hungry_val(struct pet_data *pd)
{
nullpo_ret(pd);
- if(pd->pet.hungry > 90)
+ if (pd->pet.hungry > PET_HUNGER_SATISFIED)
return 4;
- else if(pd->pet.hungry > 75)
+ else if (pd->pet.hungry > PET_HUNGER_NEUTRAL)
return 3;
- else if(pd->pet.hungry > 25)
+ else if (pd->pet.hungry > PET_HUNGER_HUNGRY)
return 2;
- else if(pd->pet.hungry > 10)
+ else if (pd->pet.hungry > PET_HUNGER_VERY_HUNGRY)
return 1;
else
return 0;
}
-static void pet_set_intimate(struct pet_data *pd, int value)
+/**
+ * Sets a pet's hunger value.
+ *
+ * @param pd The pet.
+ * @param value The pet's new hunger value.
+ *
+ **/
+static void pet_set_hunger(struct pet_data *pd, int value)
{
- int intimate;
- struct map_session_data *sd;
+ nullpo_retv(pd);
+ nullpo_retv(pd->msd);
+
+ pd->pet.hungry = cap_value(value, PET_HUNGER_STARVING, PET_HUNGER_STUFFED);
+
+ clif->send_petdata(pd->msd, pd, 2, pd->pet.hungry);
+}
+
+/**
+ * Calculates the value to store in a pet egg's 4th card slot
+ * based on the passed rename flag and intimacy value.
+ *
+ * @param rename_flag The pet's rename flag.
+ * @param intimacy The pet's intimacy value.
+ * @return The value to store in the pet egg's 4th card slot. (Defaults to 0 in case of error.)
+ *
+ **/
+static int pet_get_card4_value(int rename_flag, int intimacy)
+{
+ Assert_ret(rename_flag == 0 || rename_flag == 1);
+ Assert_ret(intimacy >= PET_INTIMACY_NONE && intimacy <= PET_INTIMACY_MAX);
+
+ int card4 = rename_flag;
+
+ if (intimacy <= PET_INTIMACY_SHY)
+ card4 |= (1 << 1);
+ else if (intimacy <= PET_INTIMACY_NEUTRAL)
+ card4 |= (2 << 1);
+ else if (intimacy <= PET_INTIMACY_CORDIAL)
+ card4 |= (3 << 1);
+ else if (intimacy <= PET_INTIMACY_LOYAL)
+ card4 |= (4 << 1);
+ else
+ card4 |= (5 << 1);
+
+ return card4;
+}
+/**
+ * Sets a pet's intimacy value.
+ * Deletes the pet if its intimacy value reaches PET_INTIMACY_NONE (0).
+ *
+ * @param pd The pet.
+ * @param value The pet's new intimacy value.
+ *
+ **/
+static void pet_set_intimate(struct pet_data *pd, int value)
+{
nullpo_retv(pd);
- intimate = pd->pet.intimate;
- sd = pd->msd;
+ nullpo_retv(pd->msd);
- pd->pet.intimate = value;
+ pd->pet.intimate = cap_value(value, PET_INTIMACY_NONE, PET_INTIMACY_MAX);
- if( (intimate >= battle_config.pet_equip_min_friendly && pd->pet.intimate < battle_config.pet_equip_min_friendly) || (intimate < battle_config.pet_equip_min_friendly && pd->pet.intimate >= battle_config.pet_equip_min_friendly) )
- status_calc_pc(sd,SCO_NONE);
+ struct map_session_data *sd = pd->msd;
- /* Pet is lost, delete the egg */
- if (value <= 0) {
+ if (pd->pet.intimate == PET_INTIMACY_NONE) { // Pet is lost, delete it.
int i;
- ARR_FIND(0, sd->status.inventorySize, i, sd->status.inventory[i].card[0] == CARD0_PET &&
- pd->pet.pet_id == MakeDWord(sd->status.inventory[i].card[1], sd->status.inventory[i].card[2]));
+ ARR_FIND(0, sd->status.inventorySize, i, sd->status.inventory[i].card[0] == CARD0_PET
+ && pd->pet.pet_id == MakeDWord(sd->status.inventory[i].card[1], sd->status.inventory[i].card[2]));
- if (i != sd->status.inventorySize) {
+ if (i != sd->status.inventorySize)
pc->delitem(sd, i, 1, 0, DELITEM_NORMAL, LOG_TYPE_EGG);
+
+ if (battle_config.pet_remove_immediately != 0) {
+ pet_stop_attack(pd);
+ unit->remove_map(&pd->bl, CLR_OUTSIGHT, ALC_MARK);
}
+ } else {
+ clif->send_petdata(sd, pd, 1, pd->pet.intimate);
}
+
+ status_calc_pc(sd, SCO_NONE);
}
+/**
+ * Creates a pet egg.
+ *
+ * @param sd The character who tries to create the pet egg.
+ * @param item_id The pet egg's item ID.
+ * @return 0 on failure, 1 on success.
+ *
+ **/
static int pet_create_egg(struct map_session_data *sd, int item_id)
{
- int pet_id = pet->search_petDB_index(item_id, PET_EGG);
nullpo_ret(sd);
- if (pet_id < 0) return 0; //No pet egg here.
- if (!pc->inventoryblank(sd)) return 0; // Inventory full
+
+ int pet_id = pet->search_petDB_index(item_id, PET_EGG);
+
+ if (pet_id == INDEX_NOT_FOUND) // No pet egg here.
+ return 0;
+
+ if (pc->inventoryblank(sd) == 0) // Inventory full.
+ return 0;
+
sd->catch_target_class = pet->db[pet_id].class_;
- intif->create_pet(sd->status.account_id, sd->status.char_id,
- pet->db[pet_id].class_,
- mob->db(pet->db[pet_id].class_)->lv,
- pet->db[pet_id].EggID, 0,
- (short)pet->db[pet_id].intimate,
- 100, 0, 1, pet->db[pet_id].jname);
+ intif->create_pet(sd->status.account_id, sd->status.char_id, pet->db[pet_id].class_,
+ mob->db(pet->db[pet_id].class_)->lv, pet->db[pet_id].EggID, 0,
+ (short)pet->db[pet_id].intimate, PET_HUNGER_STUFFED,
+ 0, 1, pet->db[pet_id].jname);
+
return 1;
}
@@ -162,48 +240,42 @@ static int pet_attackskill(struct pet_data *pd, int target_id)
return 0;
}
+/**
+ * Checks if a pet can attack a target.
+ *
+ * @param sd The pet's master.
+ * @param bl The pet's target.
+ * @param type 0 - Support master when attacking. Not 0 - Support master when being attacked.
+ * @return 0 on failure, 1 on success.
+ *
+ **/
static int pet_target_check(struct map_session_data *sd, struct block_list *bl, int type)
{
- struct pet_data *pd;
- int rate;
-
nullpo_ret(sd);
- pd = sd->pd;
+ nullpo_ret(sd->pd);
+ nullpo_ret(bl);
+ Assert_ret(sd->pd->msd == NULL || sd->pd->msd->pd == sd->pd);
- Assert_ret(pd->msd == 0 || pd->msd->pd == pd);
+ struct pet_data *pd = sd->pd;
- if( bl == NULL || bl->type != BL_MOB || bl->prev == NULL
- || pd->pet.intimate < battle_config.pet_support_min_friendly
- || pd->pet.hungry < 1
- || pd->pet.class_ == status->get_class(bl))
- return 0;
+ if ((type == 0 && pd->petDB->attack_rate == 0) || (type != 0 && pd->petDB->defence_attack_rate == 0))
+ return 0; // If base rate is 0, there's nothing to do.
- if( pd->bl.m != bl->m
- || !check_distance_bl(&pd->bl, bl, pd->db->range2))
+ if (bl->type != BL_MOB || bl->prev == NULL || pd->pet.intimate < battle_config.pet_support_min_friendly
+ || pd->pet.hungry <= PET_HUNGER_STARVING || pd->pet.class_ == status->get_class(bl)
+ || pd->bl.m != bl->m || !check_distance_bl(&pd->bl, bl, pd->db->range2)
+ || status->check_skilluse(&pd->bl, bl, 0, 0) == 0) {
return 0;
+ }
- if (!status->check_skilluse(&pd->bl, bl, 0, 0))
- return 0;
+ int rate = ((type == 0) ? pd->petDB->attack_rate : pd->petDB->defence_attack_rate) * pd->rate_fix / 1000;
- if(!type) {
- rate = pd->petDB->attack_rate;
- rate = rate * pd->rate_fix/1000;
- if(pd->petDB->attack_rate > 0 && rate <= 0)
- rate = 1;
- } else {
- rate = pd->petDB->defence_attack_rate;
- rate = rate * pd->rate_fix/1000;
- if(pd->petDB->defence_attack_rate > 0 && rate <= 0)
- rate = 1;
- }
- if(rnd()%10000 < rate)
- {
- if(pd->target_id == 0 || rnd()%10000 < pd->petDB->change_target_rate)
- pd->target_id = bl->id;
- }
+ if (rnd() % 10000 < max(rate, 1) && (pd->target_id == 0 || rnd() % 10000 < pd->petDB->change_target_rate))
+ pd->target_id = bl->id;
return 0;
}
+
/*==========================================
* Pet SC Check [Skotlex]
*------------------------------------------*/
@@ -226,59 +298,70 @@ static int pet_sc_check(struct map_session_data *sd, int type)
return 0;
}
+/**
+ * Updates a pet's hunger value and timer and updates the pet's intimacy value if starving.
+ *
+ * @param tid The timer ID.
+ * @param tick The base amount of ticks to add to the pet's hunger timer. (The timer's current ticks when calling this fuction.)
+ * @param id The pet master's account ID.
+ * @param data Unused.
+ * @return 1 on failure, 0 on success.
+ *
+ **/
static int pet_hungry(int tid, int64 tick, int id, intptr_t data)
{
- struct map_session_data *sd;
- struct pet_data *pd;
- int interval;
+ struct map_session_data *sd = map->id2sd(id);
- sd=map->id2sd(id);
- if(!sd)
+ if (sd == NULL || sd->status.pet_id == 0 || sd->pd == NULL)
return 1;
- if(!sd->status.pet_id || !sd->pd)
- return 1;
+ struct pet_data *pd = sd->pd;
- pd = sd->pd;
- if(pd->pet_hungry_timer != tid){
- ShowError("pet_hungry_timer %d != %d\n",pd->pet_hungry_timer,tid);
+ /**
+ * If HungerDelay is 0, there's nothing to do.
+ * Actually this shouldn't happen, since the timer wasn't added in pet_data_init(), but just to be sure...
+ *
+ **/
+ if (pd->petDB->hungry_delay == 0) {
+ pet->hungry_timer_delete(pd);
return 0;
}
+
+ if (pd->pet_hungry_timer != tid) {
+ ShowError("pet_hungry: pet_hungry_timer %d != %d\n", pd->pet_hungry_timer, tid);
+ return 1;
+ }
+
pd->pet_hungry_timer = INVALID_TIMER;
- if (pd->pet.intimate <= 0)
- return 1; //You lost the pet already, the rest is irrelevant.
+ if (pd->pet.intimate <= PET_INTIMACY_NONE)
+ return 1; // You lost the pet already, the rest is irrelevant.
+
+ pet->set_hunger(pd, pd->pet.hungry - pd->petDB->hunger_decrement);
- pd->pet.hungry--;
- /* Pet Autofeed */
- if (battle_config.feature_enable_pet_autofeed != 0) {
- if (pd->petDB->autofeed == 1 && pd->pet.autofeed == 1 && pd->pet.hungry <= 25) {
+ // Pet auto-feed.
+ if (battle_config.feature_enable_pet_autofeed == 1) {
+ if (pd->petDB->autofeed == 1 && pd->pet.autofeed == 1 && pd->pet.hungry <= PET_HUNGER_HUNGRY)
pet->food(sd, pd);
- }
}
- if( pd->pet.hungry < 0 )
- {
+ int interval = pd->petDB->hungry_delay;
+
+ if (pd->pet.hungry == PET_HUNGER_STARVING) {
pet_stop_attack(pd);
- pd->pet.hungry = 0;
- pet->set_intimate(pd, pd->pet.intimate - battle_config.pet_hungry_friendly_decrease);
- if( pd->pet.intimate <= 0 )
- {
- pd->pet.intimate = 0;
- pd->status.speed = pd->db->status.speed;
- }
+ pet->set_intimate(pd, pd->pet.intimate - pd->petDB->starving_decrement);
+
+ if (sd->pd == NULL)
+ return 0;
+
status_calc_pet(pd, SCO_NONE);
- clif->send_petdata(sd,pd,1,pd->pet.intimate);
+
+ if (pd->petDB->starving_delay > 0)
+ interval = pd->petDB->starving_delay;
}
- clif->send_petdata(sd,pd,2,pd->pet.hungry);
- if(battle_config.pet_hungry_delay_rate != 100)
- interval = (pd->petDB->hungry_delay*battle_config.pet_hungry_delay_rate)/100;
- else
- interval = pd->petDB->hungry_delay;
- if(interval <= 0)
- interval = 1;
- pd->pet_hungry_timer = timer->add(tick+interval,pet->hungry,sd->bl.id,0);
+ interval = interval * battle_config.pet_hungry_delay_rate / 100;
+ pd->pet_hungry_timer = timer->add(tick + max(interval, 1), pet->hungry, sd->bl.id, 0);
return 0;
}
@@ -315,21 +398,31 @@ static int pet_hungry_timer_delete(struct pet_data *pd)
return 1;
}
+/**
+ * Makes a pet start performing/dancing.
+ *
+ * @param sd Unused.
+ * @param pd The pet.
+ * @return 0 on failure, 1 on success.
+ *
+ **/
static int pet_performance(struct map_session_data *sd, struct pet_data *pd)
{
+ nullpo_ret(pd);
+
int val;
- nullpo_retr(1, pd);
- if (pd->pet.intimate > 900)
- val = (pd->petDB->s_perfor > 0)? 4:3;
- else if(pd->pet.intimate > 750) //TODO: this is way too high
+ if (pd->pet.intimate > PET_INTIMACY_LOYAL)
+ val = (pd->petDB->s_perfor > 0) ? 4 : 3;
+ else if (pd->pet.intimate > PET_INTIMACY_CORDIAL) //TODO: This is way too high.
val = 2;
else
val = 1;
- pet_stop_walking(pd,STOPWALKING_FLAG_NONE | (2000<<8)); // Stop walking for 2000ms
- clif->send_petdata(NULL, pd, 4, rnd()%val + 1);
- pet->lootitem_drop(pd,NULL);
+ pet_stop_walking(pd, STOPWALKING_FLAG_NONE | (2000 << 8)); // Stop walking for 2 seconds.
+ clif->send_petdata(NULL, pd, 4, rnd() % val + 1);
+ pet->lootitem_drop(pd, NULL);
+
return 1;
}
@@ -348,6 +441,8 @@ static int pet_return_egg(struct map_session_data *sd, struct pet_data *pd)
if (i != sd->status.inventorySize) {
sd->status.inventory[i].attribute &= ~ATTR_BROKEN;
sd->status.inventory[i].bound = IBT_NONE;
+ sd->status.inventory[i].card[3] = pet->get_card4_value(pd->pet.rename_flag, pd->pet.intimate);
+ clif->inventoryList(sd);
} else {
// The pet egg wasn't found: it was probably hatched with the old system that deleted the egg.
struct item tmp_item = {0};
@@ -358,14 +453,13 @@ static int pet_return_egg(struct map_session_data *sd, struct pet_data *pd)
tmp_item.card[0] = CARD0_PET;
tmp_item.card[1] = GetWord(pd->pet.pet_id, 0);
tmp_item.card[2] = GetWord(pd->pet.pet_id, 1);
- tmp_item.card[3] = pd->pet.rename_flag;
+ tmp_item.card[3] = pet->get_card4_value(pd->pet.rename_flag, pd->pet.intimate);
if ((flag = pc->additem(sd, &tmp_item, 1, LOG_TYPE_EGG)) != 0) {
clif->additem(sd, 0, 0, flag);
map->addflooritem(&sd->bl, &tmp_item, 1, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0, false);
}
}
#if PACKETVER >= 20180704
- clif->inventoryList(sd);
clif->send_petdata(sd, pd, 6, 0);
#endif
pd->pet.incubate = 1;
@@ -377,78 +471,109 @@ static int pet_return_egg(struct map_session_data *sd, struct pet_data *pd)
return 1;
}
+/**
+ * Initializes a pet.
+ *
+ * @param sd The pet's master.
+ * @param petinfo The pet's status data.
+ * @return 1 on failure, 0 on success.
+ *
+ **/
static int pet_data_init(struct map_session_data *sd, struct s_pet *petinfo)
{
- struct pet_data *pd;
- int i=0,interval=0;
-
nullpo_retr(1, sd);
nullpo_retr(1, petinfo);
- Assert_retr(1, sd->status.pet_id == 0 || sd->pd == 0 || sd->pd->msd == sd);
+ Assert_retr(1, sd->status.pet_id == 0 || sd->pd == NULL || sd->pd->msd == sd);
- if(sd->status.account_id != petinfo->account_id || sd->status.char_id != petinfo->char_id) {
+ if (sd->status.account_id != petinfo->account_id || sd->status.char_id != petinfo->char_id) {
sd->status.pet_id = 0;
return 1;
}
+
if (sd->status.pet_id != petinfo->pet_id) {
- if (sd->status.pet_id) {
- //Wrong pet?? Set incubate to no and send it back for saving.
+ if (sd->status.pet_id != 0) { // Wrong pet? Set incubate to no and send it back for saving.
petinfo->incubate = 1;
- intif->save_petdata(sd->status.account_id,petinfo);
+ intif->save_petdata(sd->status.account_id, petinfo);
sd->status.pet_id = 0;
return 1;
}
- //The pet_id value was lost? odd... restore it.
- sd->status.pet_id = petinfo->pet_id;
+
+ sd->status.pet_id = petinfo->pet_id; // The pet_id value was lost? Odd... Restore it.
}
- i = pet->search_petDB_index(petinfo->class_,PET_CLASS);
- if(i < 0) {
+ int i = pet->search_petDB_index(petinfo->class_, PET_CLASS);
+
+ if (i == INDEX_NOT_FOUND) {
sd->status.pet_id = 0;
return 1;
}
+
+ struct pet_data *pd;
+
CREATE(pd, struct pet_data, 1);
- pd->bl.type = BL_PET;
- pd->bl.id = npc->get_new_npc_id();
+ memcpy(&pd->pet, petinfo, sizeof(struct s_pet));
sd->pd = pd;
-
pd->msd = sd;
pd->petDB = &pet->db[i];
- pd->db = mob->db(petinfo->class_);
- memcpy(&pd->pet, petinfo, sizeof(struct s_pet));
- status->set_viewdata(&pd->bl, petinfo->class_);
+ pd->db = mob->db(pd->petDB->class_);
+ pd->bl.type = BL_PET;
+ pd->bl.id = npc->get_new_npc_id();
+ status->set_viewdata(&pd->bl, pd->petDB->class_);
unit->dataset(&pd->bl);
pd->ud.dir = sd->ud.dir;
-
pd->bl.m = sd->bl.m;
pd->bl.x = sd->bl.x;
pd->bl.y = sd->bl.y;
unit->calc_pos(&pd->bl, sd->bl.x, sd->bl.y, sd->ud.dir);
pd->bl.x = pd->ud.to_x;
pd->bl.y = pd->ud.to_y;
-
map->addiddb(&pd->bl);
- status_calc_pet(pd,SCO_FIRST);
-
+ status_calc_pet(pd, SCO_FIRST);
pd->last_thinktime = timer->gettick();
pd->state.skillbonus = 0;
- if( battle_config.pet_status_support )
- script->run_pet(pet->db[i].pet_script,0,sd->bl.id,0);
+ if (pd->petDB->pet_script != NULL && battle_config.pet_status_support == 1)
+ script->run_pet(pd->petDB->pet_script, 0, sd->bl.id, 0);
- if( pd->petDB ) {
- if( pd->petDB->equip_script )
- status_calc_pc(sd,SCO_NONE);
+ if (pd->petDB->equip_script != NULL)
+ status_calc_pc(sd, SCO_NONE);
- if( battle_config.pet_hungry_delay_rate != 100 )
- interval = (pd->petDB->hungry_delay*battle_config.pet_hungry_delay_rate)/100;
- else
- interval = pd->petDB->hungry_delay;
+ pd->pet_hungry_timer = INVALID_TIMER;
+
+ if (pd->petDB->hungry_delay > 0) {
+ int interval = pd->petDB->hungry_delay * battle_config.pet_hungry_delay_rate / 100;
+ pd->pet_hungry_timer = timer->add(timer->gettick() + max(interval, 1), pet->hungry, sd->bl.id, 0);
}
- if( interval <= 0 )
- interval = 1;
- pd->pet_hungry_timer = timer->add(timer->gettick() + interval, pet->hungry, sd->bl.id, 0);
+ return 0;
+}
+
+/**
+ * Spawns a pet.
+ *
+ * @param sd The pet's master.
+ * @param birth_process Whether the pet is spawned during birth process.
+ * @return 1 on failure, 0 on success.
+ *
+ **/
+static int pet_spawn(struct map_session_data *sd, bool birth_process)
+{
+ nullpo_retr(1, sd);
+ nullpo_retr(1, sd->pd);
+
+ if (map->addblock(&sd->pd->bl) != 0 || !clif->spawn(&sd->pd->bl))
+ return 1;
+
+ clif->send_petdata(sd, sd->pd, 0, 0);
+ clif->send_petdata(sd, sd->pd, 5, battle_config.pet_hair_style);
+
+#if PACKETVER >= 20180704
+ if (birth_process)
+ clif->send_petdata(sd, sd->pd, 6, 1);
+#endif
+
+ clif->send_petstatus(sd);
+
return 0;
}
@@ -476,17 +601,11 @@ static int pet_birth_process(struct map_session_data *sd, struct s_pet *petinfo)
if (map->save_settings&8)
chrif->save(sd,0); //is it REALLY Needed to save the char for hatching a pet? [Skotlex]
- if(sd->bl.prev != NULL) {
- map->addblock(&sd->pd->bl);
- clif->spawn(&sd->pd->bl);
- clif->send_petdata(sd,sd->pd, 0,0);
- clif->send_petdata(sd,sd->pd, 5,battle_config.pet_hair_style);
-#if PACKETVER >= 20180704
- clif->send_petdata(sd, sd->pd, 6, 1);
-#endif
- clif->send_petdata(NULL, sd->pd, 3, sd->pd->vd.head_bottom);
- clif->send_petstatus(sd);
+ if (sd->pd != NULL && sd->bl.prev != NULL) {
+ if (pet->spawn(sd, true) != 0)
+ return 1;
}
+
Assert_retr(1, sd->status.pet_id == 0 || sd->pd == 0 || sd->pd->msd == sd);
return 0;
@@ -525,13 +644,9 @@ static int pet_recv_petdata(int account_id, struct s_pet *p, int flag)
}
} else {
pet->data_init(sd,p);
- if(sd->pd && sd->bl.prev != NULL) {
- map->addblock(&sd->pd->bl);
- clif->spawn(&sd->pd->bl);
- clif->send_petdata(sd,sd->pd,0,0);
- clif->send_petdata(sd,sd->pd,5,battle_config.pet_hair_style);
- clif->send_petdata(NULL, sd->pd, 3, sd->pd->vd.head_bottom);
- clif->send_petstatus(sd);
+ if (sd->pd != NULL && sd->bl.prev != NULL) {
+ if (pet->spawn(sd, false) != 0)
+ return 1;
}
}
@@ -563,57 +678,64 @@ static int pet_catch_process1(struct map_session_data *sd, int target_class)
return 0;
}
+/**
+ * Begins the actual process of catching a monster.
+ *
+ * @param sd The character who tries to catch the monster.
+ * @param target_id The monster ID of the pet, which the character tries to catch.
+ * @return 1 on failure, 0 on success.
+ *
+ **/
static int pet_catch_process2(struct map_session_data *sd, int target_id)
{
- struct mob_data *md = NULL;
- struct block_list *bl = NULL;
- int i = 0, pet_catch_rate = 0;
-
nullpo_retr(1, sd);
- bl = map->id2bl(target_id); // TODO: Why does this not use map->id2md?
- md = BL_CAST(BL_MOB, bl);
- if (md == NULL || md->bl.prev == NULL) {
- // Invalid inputs/state, abort capture.
- clif->pet_roulette(sd,0);
+ struct mob_data *md = BL_CAST(BL_MOB, map->id2bl(target_id)); //TODO: Why does this not use map->id2md?
+
+ if (md == NULL || md->bl.prev == NULL) { // Invalid inputs/state, abort capture.
+ clif->pet_roulette(sd, 0);
sd->catch_target_class = -1;
sd->itemid = -1;
sd->itemindex = -1;
return 1;
}
- //FIXME: delete taming item here, if this was an item-invoked capture and the item was flagged as delay-consume [ultramage]
-
- i = pet->search_petDB_index(md->class_,PET_CLASS);
- //catch_target_class == 0 is used for universal lures (except bosses for now). [Skotlex]
- if (sd->catch_target_class == 0 && !(md->status.mode&MD_BOSS))
+ // catch_target_class == 0 is used for universal lures (except bosses for now). [Skotlex]
+ if (sd->catch_target_class == 0 && (md->status.mode & MD_BOSS) == 0)
sd->catch_target_class = md->class_;
- if(i < 0 || sd->catch_target_class != md->class_) {
- clif->emotion(&md->bl, E_AG); //mob will do /ag if wrong lure is used on them.
- clif->pet_roulette(sd,0);
+
+ int i = pet->search_petDB_index(md->class_, PET_CLASS);
+
+ if (i == INDEX_NOT_FOUND || sd->catch_target_class != md->class_) {
+ clif->emotion(&md->bl, E_AG); // Mob will do /ag if wrong lure is used on it.
+ clif->pet_roulette(sd, 0);
sd->catch_target_class = -1;
return 1;
}
- pet_catch_rate = (pet->db[i].capture + (sd->status.base_level - md->level)*30 + sd->battle_status.luk*20)*(200 - get_percentage(md->status.hp, md->status.max_hp))/100;
+ int pet_catch_rate;
+ int capture = pet->db[i].capture;
+ int mob_hp_perc = get_percentage(md->status.hp, md->status.max_hp);
- if(pet_catch_rate < 1) pet_catch_rate = 1;
- if(battle->bc->pet_catch_rate != 100)
- pet_catch_rate = (pet_catch_rate*battle->bc->pet_catch_rate)/100;
+ if (battle_config.pet_catch_rate_official_formula == 1) {
+ pet_catch_rate = capture * (100 - mob_hp_perc) / 100 + capture;
+ } else {
+ int lvl_diff_mod = (sd->status.base_level - md->level) * 30;
+ int char_luk_mod = sd->battle_status.luk * 20;
+ pet_catch_rate = (capture + lvl_diff_mod + char_luk_mod) * (200 - mob_hp_perc) / 100;
+ }
- if(rnd()%10000 < pet_catch_rate)
- {
- unit->remove_map(&md->bl,CLR_OUTSIGHT,ALC_MARK);
- status_kill(&md->bl);
- clif->pet_roulette(sd,1);
- intif->create_pet(sd->status.account_id,sd->status.char_id,pet->db[i].class_,mob->db(pet->db[i].class_)->lv,
- pet->db[i].EggID,0,pet->db[i].intimate,100,0,1,pet->db[i].jname);
+ pet_catch_rate = cap_value(pet_catch_rate, 1, 10000) * battle_config.pet_catch_rate / 100;
+ if (rnd() % 10000 < pet_catch_rate) {
+ unit->remove_map(&md->bl, CLR_OUTSIGHT, ALC_MARK);
+ status_kill(&md->bl);
+ clif->pet_roulette(sd, 1);
+ intif->create_pet(sd->status.account_id, sd->status.char_id, pet->db[i].class_, mob->db(pet->db[i].class_)->lv,
+ pet->db[i].EggID, 0, pet->db[i].intimate, PET_HUNGER_STUFFED, 0, 1, pet->db[i].jname);
achievement->validate_taming(sd, pet->db[i].class_);
- }
- else
- {
- clif->pet_roulette(sd,0);
+ } else {
+ clif->pet_roulette(sd, 0);
sd->catch_target_class = -1;
}
@@ -661,7 +783,7 @@ static bool pet_get_egg(int account_id, int pet_class, int pet_id)
tmp_item.card[0] = CARD0_PET;
tmp_item.card[1] = GetWord(pet_id,0);
tmp_item.card[2] = GetWord(pet_id,1);
- tmp_item.card[3] = 0; //New pets are not named.
+ tmp_item.card[3] = pet->get_card4_value(0, pet->db[i].intimate);
if((ret = pc->additem(sd,&tmp_item,1,LOG_TYPE_PICKDROP_PLAYER))) {
clif->additem(sd,0,0,ret);
map->addflooritem(&sd->bl, &tmp_item, 1, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0, false);
@@ -670,42 +792,52 @@ static bool pet_get_egg(int account_id, int pet_class, int pet_id)
return true;
}
+/**
+ * Performs selected pet menu option.
+ *
+ * @param sd The pet's master.
+ * @param menunum The selected menu option.
+ * @return 1 on failure, 0 on success.
+ *
+ **/
static int pet_menu(struct map_session_data *sd, int menunum)
{
- struct item_data *egg_id;
- nullpo_ret(sd);
- if (sd->pd == NULL)
- return 1;
+ nullpo_retr(1, sd);
+ nullpo_retr(1, sd->pd);
- //You lost the pet already.
- if(!sd->status.pet_id || sd->pd->pet.intimate <= 0 || sd->pd->pet.incubate)
- return 1;
+ if (sd->status.pet_id == 0 || sd->pd->pet.intimate <= PET_INTIMACY_NONE || sd->pd->pet.incubate != 0)
+ return 1; // You lost the pet already.
- egg_id = itemdb->exists(sd->pd->petDB->EggID);
- if (egg_id) {
- if ((egg_id->flag.trade_restriction&ITR_NODROP) && !pc->inventoryblank(sd)) {
- clif->message(sd->fd, msg_sd(sd,451)); // You can't return your pet because your inventory is full.
+ struct item_data *egg_id = itemdb->exists(sd->pd->petDB->EggID);
+
+ if (egg_id != NULL) {
+ if ((egg_id->flag.trade_restriction & ITR_NODROP) != 0 && pc->inventoryblank(sd) == 0) {
+ clif->message(sd->fd, msg_sd(sd, 451)); // You can't return your pet because your inventory is full.
return 1;
}
}
- switch(menunum) {
- case 0:
- clif->send_petstatus(sd);
- break;
- case 1:
- pet->food(sd, sd->pd);
- break;
- case 2:
- pet->performance(sd, sd->pd);
- break;
- case 3:
- pet->return_egg(sd, sd->pd);
- break;
- case 4:
- pet->unequipitem(sd, sd->pd);
- break;
+ switch (menunum) {
+ case 0:
+ clif->send_petstatus(sd);
+ break;
+ case 1:
+ pet->food(sd, sd->pd);
+ break;
+ case 2:
+ pet->performance(sd, sd->pd);
+ break;
+ case 3:
+ pet->return_egg(sd, sd->pd);
+ break;
+ case 4:
+ pet->unequipitem(sd, sd->pd);
+ break;
+ default: ;
+ ShowError("pet_menu: Unexpected menu option: %d\n", menunum);
+ return 1;
}
+
return 0;
}
@@ -750,8 +882,6 @@ static int pet_change_name_ack(struct map_session_data *sd, const char *name, in
aFree(newname);
clif->blname_ack(0,&pd->bl);
pd->pet.rename_flag = 1;
- clif->send_petdata(NULL, sd->pd, 3, sd->pd->vd.head_bottom);
- clif->send_petstatus(sd);
return 1;
}
@@ -830,49 +960,53 @@ static int pet_unequipitem(struct map_session_data *sd, struct pet_data *pd)
return 0;
}
+/**
+ * Feeds a pet and updates its intimacy value.
+ *
+ * @param sd The pet's master.
+ * @param pd The pet.
+ * @return 1 on failure, 0 on success.
+ *
+ **/
static int pet_food(struct map_session_data *sd, struct pet_data *pd)
{
- int i, food_id;
-
+ nullpo_retr(1, sd);
nullpo_retr(1, pd);
- food_id = pd->petDB->FoodID;
- i = pc->search_inventory(sd, food_id);
- if(i == INDEX_NOT_FOUND) {
- clif->pet_food(sd, food_id, 0);
+ Assert_retr(1, sd->status.pet_id == pd->pet.pet_id);
+
+ int i = pc->search_inventory(sd, pd->petDB->FoodID);
+
+ if (i == INDEX_NOT_FOUND) {
+ clif->pet_food(sd, pd->petDB->FoodID, 0);
return 1;
}
+
pc->delitem(sd, i, 1, 0, DELITEM_NORMAL, LOG_TYPE_CONSUME);
- if (pd->pet.hungry > 90) {
- pet->set_intimate(pd, pd->pet.intimate - pd->petDB->r_full);
- } else {
- int add_intimate = 0;
- if (battle_config.pet_friendly_rate != 100)
- add_intimate = (pd->petDB->r_hungry * battle_config.pet_friendly_rate)/100;
- else
- add_intimate = pd->petDB->r_hungry;
- if (pd->pet.hungry > 75) {
- add_intimate = add_intimate >> 1;
- if (add_intimate <= 0)
- add_intimate = 1;
- }
- pet->set_intimate(pd, pd->pet.intimate + add_intimate);
- }
- if (pd->pet.intimate <= 0) {
- pd->pet.intimate = 0;
- pet_stop_attack(pd);
- pd->status.speed = pd->db->status.speed;
- } else if (pd->pet.intimate > 1000) {
- pd->pet.intimate = 1000;
- }
- status_calc_pet(pd, SCO_NONE);
- pd->pet.hungry += pd->petDB->fullness;
- if( pd->pet.hungry > 100 )
- pd->pet.hungry = 100;
+ int intimacy = 0;
+
+ if (pd->pet.hungry >= PET_HUNGER_STUFFED)
+ intimacy -= pd->petDB->r_full; // Decrease intimacy by OverFeedDecrement.
+ else if (pd->pet.hungry > PET_HUNGER_SATISFIED)
+ intimacy -= pd->petDB->r_full / 2; // Decrease intimacy by 50% of OverFeedDecrement.
+ else if (pd->pet.hungry > PET_HUNGER_NEUTRAL)
+ intimacy -= pd->petDB->r_full * 5 / 100; // Decrease intimacy by 5% of OverFeedDecrement.
+ else if (pd->pet.hungry > PET_HUNGER_HUNGRY)
+ intimacy += pd->petDB->r_hungry * 75 / 100; // Increase intimacy by 75% of FeedIncrement.
+ else if (pd->pet.hungry > PET_HUNGER_VERY_HUNGRY)
+ intimacy += pd->petDB->r_hungry; // Increase intimacy by FeedIncrement.
+ else
+ intimacy += pd->petDB->r_hungry / 2; // Increase intimacy by 50% of FeedIncrement.
+
+ intimacy = intimacy * battle_config.pet_friendly_rate / 100;
+ pet->set_intimate(pd, pd->pet.intimate + intimacy);
+
+ if (sd->pd == NULL)
+ return 0;
- clif->send_petdata(sd,pd,2,pd->pet.hungry);
- clif->send_petdata(sd,pd,1,pd->pet.intimate);
- clif->pet_food(sd,pd->petDB->FoodID,1);
+ status_calc_pet(pd, SCO_NONE);
+ pet->set_hunger(pd, pd->pet.hungry + pd->petDB->fullness);
+ clif->pet_food(sd, pd->petDB->FoodID, 1);
return 0;
}
@@ -891,7 +1025,8 @@ static int pet_randomwalk(struct pet_data *pd, int64 tick)
int r=rnd();
int x=pd->bl.x+r%(d*2+1)-d;
int y=pd->bl.y+r/(d*2+1)%(d*2+1)-d;
- if(map->getcell (pd->bl.m, &pd->bl, x, y, CELL_CHKPASS) && unit->walktoxy(&pd->bl, x, y, 0)) {
+ if (map->getcell(pd->bl.m, &pd->bl, x, y, CELL_CHKPASS) != 0
+ && unit->walk_toxy(&pd->bl, x, y, 0) == 0) {
pd->move_fail_count=0;
break;
}
@@ -918,126 +1053,147 @@ static int pet_randomwalk(struct pet_data *pd, int64 tick)
return 0;
}
+/**
+ * Performs pet's AI actions. (Moving, attacking, etc.)
+ *
+ * @param pd The pet.
+ * @param sd The pet's master.
+ * @param tick Timestamp of last support.
+ * @return Always 0.
+ *
+ **/
static int pet_ai_sub_hard(struct pet_data *pd, struct map_session_data *sd, int64 tick)
{
- struct block_list *target = NULL;
nullpo_ret(pd);
+ nullpo_ret(pd->bl.prev);
+ nullpo_ret(sd);
+ nullpo_ret(sd->bl.prev);
- if(pd->bl.prev == NULL || sd == NULL || sd->bl.prev == NULL)
+ if (DIFF_TICK(tick, pd->last_thinktime) < MIN_PETTHINKTIME)
return 0;
- if(DIFF_TICK(tick,pd->last_thinktime) < MIN_PETTHINKTIME)
- return 0;
- pd->last_thinktime=tick;
+ pd->last_thinktime = tick;
- if(pd->ud.attacktimer != INVALID_TIMER || pd->ud.skilltimer != INVALID_TIMER || pd->bl.m != sd->bl.m)
+ if (pd->ud.attacktimer != INVALID_TIMER || pd->ud.skilltimer != INVALID_TIMER || pd->bl.m != sd->bl.m)
return 0;
- if(pd->ud.walktimer != INVALID_TIMER && pd->ud.walkpath.path_pos <= 2)
- return 0; //No thinking when you just started to walk.
+ if (pd->ud.walktimer != INVALID_TIMER && pd->ud.walkpath.path_pos <= 2)
+ return 0; // No thinking when you just started to walk.
- if(pd->pet.intimate <= 0) {
- //Pet should just... well, random walk.
- pet->randomwalk(pd,tick);
+ if (pd->pet.intimate <= PET_INTIMACY_NONE) {
+ pet->randomwalk(pd, tick); // Pet should just... well, random walk.
return 0;
}
- if (!check_distance_bl(&sd->bl, &pd->bl, pd->db->range3)) {
- //Master too far, chase.
- if(pd->target_id)
+ if (!check_distance_bl(&sd->bl, &pd->bl, pd->db->range3)) { // Master too far away. Chase him.
+ if (pd->target_id != 0)
pet->unlocktarget(pd);
- if(pd->ud.walktimer != INVALID_TIMER && pd->ud.target == sd->bl.id)
- return 0; //Already walking to him
+
+ if (pd->ud.walktimer != INVALID_TIMER && pd->ud.target == sd->bl.id)
+ return 0; // Already walking to him.
+
if (DIFF_TICK(tick, pd->ud.canmove_tick) < 0)
- return 0; //Can't move yet.
- pd->status.speed = (sd->battle_status.speed>>1);
- if(pd->status.speed <= 0)
- pd->status.speed = 1;
- if (!unit->walktobl(&pd->bl, &sd->bl, 3, 0))
- pet->randomwalk(pd,tick);
+ return 0; // Can't move yet.
+
+ pd->status.speed = max(sd->battle_status.speed / 2, MIN_WALK_SPEED);
+
+ if (unit->walktobl(&pd->bl, &sd->bl, 3, 0) == 0)
+ pet->randomwalk(pd, tick);
+
return 0;
}
- //Return speed to normal.
- if (pd->status.speed != pd->petDB->speed) {
+ if (pd->status.speed != pd->petDB->speed) { // Reset speed to normal.
if (pd->ud.walktimer != INVALID_TIMER)
- return 0; //Wait until the pet finishes walking back to master.
+ return 0; // Wait until the pet finishes walking back to master.
+
pd->status.speed = pd->petDB->speed;
- pd->ud.state.change_walk_target = pd->ud.state.speed_changed = 1;
+ pd->ud.state.speed_changed = 1;
+ pd->ud.state.change_walk_target = 1;
}
- if (pd->target_id) {
- target= map->id2bl(pd->target_id);
- if (!target || pd->bl.m != target->m || status->isdead(target)
- || !check_distance_bl(&pd->bl, target, pd->db->range3)
- ) {
+ struct block_list *target = NULL;
+
+ if (pd->target_id != 0) {
+ target = map->id2bl(pd->target_id);
+
+ if (target == NULL || pd->bl.m != target->m || status->isdead(target) == 1
+ || !check_distance_bl(&pd->bl, target, pd->db->range3)) {
target = NULL;
pet->unlocktarget(pd);
}
}
- if(!target && pd->loot && pd->msd && pc_has_permission(pd->msd, PC_PERM_TRADE) && pd->loot->count < pd->loot->max && DIFF_TICK(tick,pd->ud.canact_tick)>0) {
- //Use half the pet's range of sight.
- map->foreachinrange(pet->ai_sub_hard_lootsearch,&pd->bl,
- pd->db->range2/2, BL_ITEM,pd,&target);
+ if (target == NULL && pd->loot != NULL && pd->msd != NULL && pc_has_permission(pd->msd, PC_PERM_TRADE)
+ && pd->loot->count < pd->loot->max && DIFF_TICK(tick, pd->ud.canact_tick) > 0) { // Use half the pet's range of sight.
+ map->foreachinrange(pet->ai_sub_hard_lootsearch, &pd->bl, pd->db->range2 / 2, BL_ITEM, pd, &target);
}
- if (!target) {
- //Just walk around.
+ if (target == NULL) { // Just walk around.
if (check_distance_bl(&sd->bl, &pd->bl, 3))
- return 0; //Already next to master.
+ return 0; // Already next to master.
- if(pd->ud.walktimer != INVALID_TIMER && check_distance_blxy(&sd->bl, pd->ud.to_x,pd->ud.to_y, 3))
- return 0; //Already walking to him
+ if (pd->ud.walktimer != INVALID_TIMER && check_distance_blxy(&sd->bl, pd->ud.to_x, pd->ud.to_y, 3))
+ return 0; // Already walking to him.
unit->calc_pos(&pd->bl, sd->bl.x, sd->bl.y, sd->ud.dir);
- if(!unit->walktoxy(&pd->bl,pd->ud.to_x,pd->ud.to_y,0))
- pet->randomwalk(pd,tick);
+
+ if (unit->walk_toxy(&pd->bl, pd->ud.to_x, pd->ud.to_y, 0) != 0)
+ pet->randomwalk(pd, tick);
return 0;
}
- if(pd->ud.target == target->id &&
- (pd->ud.attacktimer != INVALID_TIMER || pd->ud.walktimer != INVALID_TIMER))
- return 0; //Target already locked.
+ if (pd->ud.target == target->id && (pd->ud.attacktimer != INVALID_TIMER || pd->ud.walktimer != INVALID_TIMER))
+ return 0; // Target already locked.
+
+ if (target->type != BL_ITEM) { // Target is enemy. Chase or attack it.
+ if (!battle->check_range(&pd->bl, target, pd->status.rhw.range)) { // Chase enemy.
+ if (unit->walktobl(&pd->bl, target, pd->status.rhw.range, 2) == 0) // Enemy is unreachable.
+ pet->unlocktarget(pd);
- if (target->type != BL_ITEM)
- { //enemy targetted
- if(!battle->check_range(&pd->bl,target,pd->status.rhw.range)) {
- //Chase
- if(!unit->walktobl(&pd->bl, target, pd->status.rhw.range, 2))
- pet->unlocktarget(pd); //Unreachable target.
return 0;
}
- //Continuous attack.
- unit->attack(&pd->bl, pd->target_id, 1);
- } else {
- //Item Targeted, attempt loot
- if (!check_distance_bl(&pd->bl, target, 1)) {
- //Out of range
- if(!unit->walktobl(&pd->bl, target, 1, 1)) //Unreachable target.
+
+ unit->attack(&pd->bl, pd->target_id, 1); // Start/continue attacking.
+ } else { // Target is item. Attempt looting.
+ if (!check_distance_bl(&pd->bl, target, 1)) { // Item is out of range.
+ if (unit->walktobl(&pd->bl, target, 1, 1) == 0) // Item is unreachable.
pet->unlocktarget(pd);
+
return 0;
- } else{
+ }
+
+ if (pd->loot->count < pd->loot->max) {
struct flooritem_data *fitem = BL_UCAST(BL_ITEM, target);
- if(pd->loot->count < pd->loot->max){
- memcpy(&pd->loot->item[pd->loot->count++],&fitem->item_data,sizeof(pd->loot->item[0]));
- pd->loot->weight += itemdb_weight(fitem->item_data.nameid)*fitem->item_data.amount;
- map->clearflooritem(target);
- }
- //Target is unlocked regardless of whether it was picked or not.
- pet->unlocktarget(pd);
+
+ memcpy(&pd->loot->item[pd->loot->count++], &fitem->item_data, sizeof(pd->loot->item[0]));
+ pd->loot->weight += itemdb_weight(fitem->item_data.nameid) * fitem->item_data.amount;
+ map->clearflooritem(target);
}
+
+ pet->unlocktarget(pd); // Target is unlocked regardless of whether the item was picked or not.
}
+
return 0;
}
+/**
+ * Calls pet_ai_sub_hard() for a character's pet if conditions are fulfilled.
+ *
+ * @param sd The character.
+ * @param ap Additional arguments. In this case only the time stamp of pet AI timer execution.
+ * @return Always 0.
+ *
+ **/
static int pet_ai_sub_foreachclient(struct map_session_data *sd, va_list ap)
{
- int64 tick = va_arg(ap,int64);
nullpo_ret(sd);
- if(sd->status.pet_id && sd->pd)
- pet->ai_sub_hard(sd->pd,sd,tick);
+
+ int64 tick = va_arg(ap, int64);
+
+ if (sd->bl.prev != NULL && sd->status.pet_id != 0 && sd->pd != NULL && sd->pd->bl.prev != NULL)
+ pet->ai_sub_hard(sd->pd, sd, tick);
return 0;
}
@@ -1142,45 +1298,54 @@ static int pet_lootitem_drop(struct pet_data *pd, struct map_session_data *sd)
return 1;
}
-/*==========================================
- * pet bonus giving skills [Valaris] / Rewritten by [Skotlex]
- *------------------------------------------*/
+/**
+ * Applies pet's stat bonuses to its master. (See petskillbonus() script command.)
+ *
+ * @param tid The timer ID
+ * @param tick The base amount of ticks to add to the pet's bonus timer. (The timer's current ticks when calling this fuction.)
+ * @param id The pet's master's account ID.
+ * @param data Unused.
+ * @return 1 on failure, 0 on success.
+ *
+ **/
static int pet_skill_bonus_timer(int tid, int64 tick, int id, intptr_t data)
{
- struct map_session_data *sd=map->id2sd(id);
- struct pet_data *pd;
- int bonus;
- int duration = 0;
+ struct map_session_data *sd = map->id2sd(id);
- if(sd == NULL || sd->pd==NULL || sd->pd->bonus == NULL)
+ if (sd == NULL || sd->pd == NULL || sd->pd->bonus == NULL)
return 1;
- pd=sd->pd;
+ struct pet_data *pd = sd->pd;
- if(pd->bonus->timer != tid) {
- ShowError("pet_skill_bonus_timer %d != %d\n",pd->bonus->timer,tid);
+ if (pd->bonus->timer != tid) {
+ ShowError("pet_skill_bonus_timer %d != %d\n", pd->bonus->timer, tid);
pd->bonus->timer = INVALID_TIMER;
- return 0;
+ return 1;
}
- // determine the time for the next timer
- if (pd->state.skillbonus && pd->bonus->delay > 0) {
+ int bonus;
+ int duration;
+
+ // Determine the time for the next timer.
+ if (pd->state.skillbonus == 1 && pd->bonus->delay > 0) {
bonus = 0;
- duration = pd->bonus->delay*1000; // the duration until pet bonuses will be reactivated again
- } else if (pd->pet.intimate) {
+ duration = pd->bonus->delay * 1000; // The duration until pet bonuses will be reactivated again.
+ } else if (pd->pet.intimate > PET_INTIMACY_NONE) {
bonus = 1;
- duration = pd->bonus->duration*1000; // the duration for pet bonuses to be in effect
- } else { //Lost pet...
+ duration = pd->bonus->duration * 1000; // The duration for pet bonuses to be in effect.
+ } else { // Lost pet...
pd->bonus->timer = INVALID_TIMER;
- return 0;
+ return 1;
}
if (pd->state.skillbonus != bonus) {
pd->state.skillbonus = bonus;
status_calc_pc(sd, SCO_NONE);
}
- // wait for the next timer
- pd->bonus->timer=timer->add(tick+duration,pet->skill_bonus_timer,sd->bl.id,0);
+
+ // Wait for the next timer.
+ pd->bonus->timer = timer->add(tick + duration, pet->skill_bonus_timer, sd->bl.id, 0);
+
return 0;
}
@@ -1326,115 +1491,155 @@ static int pet_read_db_libconfig(const char *filename, bool ignore_missing)
return count;
}
+/**
+ * Reads a single pet from DB.
+ *
+ * @param it The libconfig settings block, which contains the pet's data.
+ * @param n The pet's index in pet->db[].
+ * @param source The pet DB's file name.
+ * @return 0 on failure, the pet's ID on success.
+ *
+ **/
static int pet_read_db_sub(struct config_setting_t *it, int n, const char *source)
{
- struct config_setting_t *t = NULL;
- struct item_data *data = NULL;
- const char *str = NULL;
- int i32 = 0;
-
nullpo_ret(it);
nullpo_ret(source);
Assert_ret(n >= 0 && n < MAX_PET_DB);
- if (!libconfig->setting_lookup_int(it, "Id", &i32)) {
+ int i32 = 0;
+
+ if (libconfig->setting_lookup_int(it, "Id", &i32) == CONFIG_FALSE) {
ShowWarning("pet_read_db_sub: Missing Id in \"%s\", entry #%d, skipping.\n", source, n);
return 0;
}
- pet->db[n].class_ = i32;
- if (!libconfig->setting_lookup_string(it, "SpriteName", &str) || !*str ) {
- ShowWarning("pet_read_db_sub: Missing SpriteName in pet %d of \"%s\", skipping.\n", pet->db[n].class_, source);
+ if (mob->db_checkid(i32) == 0) {
+ ShowWarning("pet_read_db_sub: Invalid Id in \"%s\", entry #%d, skipping.\n", source, n);
return 0;
}
- safestrncpy(pet->db[n].name, str, sizeof(pet->db[n].name));
- if (!libconfig->setting_lookup_string(it, "Name", &str) || !*str) {
- ShowWarning("pet_read_db_sub: Missing Name in pet %d of \"%s\", skipping.\n", pet->db[n].class_, source);
+ pet->db[n].class_ = i32;
+ safestrncpy(pet->db[n].name, mob->db(i32)->sprite, sizeof(pet->db[n].name));
+
+ const char *str;
+
+ if (libconfig->setting_lookup_string(it, "Name", &str) == CONFIG_FALSE || *str == '\0') {
+ ShowWarning("pet_read_db_sub: Missing Name in pet %d of \"%s\", skipping.\n",
+ pet->db[n].class_, source);
return 0;
}
+
safestrncpy(pet->db[n].jname, str, sizeof(pet->db[n].jname));
- if (libconfig->setting_lookup_string(it, "TamingItem", &str)) {
- if (!(data = itemdb->name2id(str))) {
- ShowWarning("pet_read_db_sub: Invalid item '%s' in pet %d of \"%s\", defaulting to 0.\n", str, pet->db[n].class_, source);
- } else {
- pet->db[n].itemID = data->nameid;
- }
+ if (libconfig->setting_lookup_string(it, "EggItem", &str) == CONFIG_FALSE || *str == '\0') {
+ ShowWarning("pet_read_db_sub: Missing EggItem in pet %d of \"%s\", skipping.\n",
+ pet->db[n].class_, source);
+ return 0;
}
- if (libconfig->setting_lookup_string(it, "EggItem", &str)) {
- if (!(data = itemdb->name2id(str))) {
- ShowWarning("pet_read_db_sub: Invalid item '%s' in pet %d of \"%s\", defaulting to 0.\n", str, pet->db[n].class_, source);
- } else {
- pet->db[n].EggID = data->nameid;
- }
+ struct item_data *data;
+
+ if ((data = itemdb->name2id(str)) == NULL) {
+ ShowWarning("pet_read_db_sub: Invalid EggItem '%s' in pet %d of \"%s\", skipping.\n",
+ str, pet->db[n].class_, source);
+ return 0;
}
- if (libconfig->setting_lookup_string(it, "AccessoryItem", &str)) {
- if (!(data = itemdb->name2id(str))) {
- ShowWarning("pet_read_db_sub: Invalid item '%s' in pet %d of \"%s\", defaulting to 0.\n", str, pet->db[n].class_, source);
- } else {
- pet->db[n].AcceID = data->nameid;
- }
+ pet->db[n].EggID = data->nameid;
+
+ if (libconfig->setting_lookup_string(it, "TamingItem", &str) == CONFIG_TRUE) {
+ if ((data = itemdb->name2id(str)) == NULL)
+ ShowWarning("pet_read_db_sub: Invalid TamingItem '%s' in pet %d of \"%s\", defaulting to 0.\n",
+ str, pet->db[n].class_, source);
+ else
+ pet->db[n].itemID = data->nameid;
}
- if (libconfig->setting_lookup_string(it, "FoodItem", &str)) {
- if (!(data = itemdb->name2id(str))) {
- ShowWarning("pet_read_db_sub: Invalid item '%s' in pet %d of \"%s\", defaulting to 0.\n", str, pet->db[n].class_, source);
- } else {
+ pet->db[n].FoodID = 537;
+
+ if (libconfig->setting_lookup_string(it, "FoodItem", &str) == CONFIG_TRUE) {
+ if ((data = itemdb->name2id(str)) == NULL)
+ ShowWarning("pet_read_db_sub: Invalid FoodItem '%s' in pet %d of \"%s\", defaulting to Pet_Food (ID=537).\n",
+ str, pet->db[n].class_, source);
+ else
pet->db[n].FoodID = data->nameid;
- }
}
- if (libconfig->setting_lookup_int(it, "FoodEffectiveness", &i32))
- pet->db[n].fullness = i32;
+ if (libconfig->setting_lookup_string(it, "AccessoryItem", &str) == CONFIG_TRUE) {
+ if ((data = itemdb->name2id(str)) == NULL)
+ ShowWarning("pet_read_db_sub: Invalid AccessoryItem '%s' in pet %d of \"%s\", defaulting to 0.\n",
+ str, pet->db[n].class_, source);
+ else
+ pet->db[n].AcceID = data->nameid;
+ }
- if (libconfig->setting_lookup_int(it, "HungerDelay", &i32))
- pet->db[n].hungry_delay = i32 * 1000;
+ int ret = libconfig->setting_lookup_int(it, "FoodEffectiveness", &i32);
+ pet->db[n].fullness = (ret == CONFIG_FALSE) ? 80 : cap_value(i32, 1, PET_HUNGER_STUFFED);
- if ((t = libconfig->setting_get_member(it, "Intimacy"))) {
- if (config_setting_is_group(t)) {
- pet->read_db_sub_intimacy(n, t);
- }
- }
- if (pet->db[n].r_hungry <= 0)
- pet->db[n].r_hungry = 1;
+ ret = libconfig->setting_lookup_int(it, "HungerDelay", &i32);
+ pet->db[n].hungry_delay = (ret == CONFIG_FALSE) ? 60000 : cap_value(1000 * i32, 0, INT_MAX);
- if (libconfig->setting_lookup_int(it, "CaptureRate", &i32))
- pet->db[n].capture = i32;
+ ret = libconfig->setting_lookup_int(it, "HungerDecrement", &i32);
+ pet->db[n].hunger_decrement = (ret == CONFIG_FALSE) ? 1 : cap_value(i32, PET_HUNGER_STARVING, PET_HUNGER_STUFFED - 1);
- if (libconfig->setting_lookup_int(it, "Speed", &i32))
- pet->db[n].speed = i32;
+ if (pet->db[n].hunger_decrement == PET_HUNGER_STARVING)
+ pet->db[n].hungry_delay = 0;
- if ((t = libconfig->setting_get_member(it, "SpecialPerformance")) && (i32 = libconfig->setting_get_bool(t)))
- pet->db[n].s_perfor = (char)i32;
+ /**
+ * Preventively set default intimacy values here, just in case that 'Intimacy' block is not defined,
+ * or pet_read_db_sub_intimacy() fails execution.
+ *
+ **/
+ pet->db[n].intimate = PET_INTIMACY_NEUTRAL;
+ pet->db[n].r_hungry = 10;
+ pet->db[n].r_full = 100;
+ pet->db[n].die = 20;
+ pet->db[n].starving_delay = min(20000, pet->db[n].hungry_delay);
+ pet->db[n].starving_decrement = 20;
- if ((t = libconfig->setting_get_member(it, "TalkWithEmotes")) && (i32 = libconfig->setting_get_bool(t)))
- pet->db[n].talk_convert_class = i32;
+ struct config_setting_t *t;
- if (libconfig->setting_lookup_int(it, "AttackRate", &i32))
- pet->db[n].attack_rate = i32;
+ if ((t = libconfig->setting_get_member(it, "Intimacy")) != NULL && config_setting_is_group(t))
+ pet->read_db_sub_intimacy(n, t);
- if (libconfig->setting_lookup_int(it, "DefendRate", &i32))
- pet->db[n].defence_attack_rate = i32;
+ ret = libconfig->setting_lookup_int(it, "CaptureRate", &i32);
+ pet->db[n].capture = (ret == CONFIG_FALSE) ? 1000 : cap_value(i32, 1, 10000);
- if (libconfig->setting_lookup_int(it, "ChangeTargetRate", &i32))
- pet->db[n].change_target_rate = i32;
+ ret = libconfig->setting_lookup_int(it, "Speed", &i32);
+ pet->db[n].speed = (ret == CONFIG_FALSE) ? DEFAULT_WALK_SPEED : cap_value(i32, MIN_WALK_SPEED, MAX_WALK_SPEED);
- // Pet Evolution
- if ((t = libconfig->setting_get_member(it, "Evolve")) && config_setting_is_group(t)) {
- pet->read_db_sub_evolution(t, n);
+ if ((t = libconfig->setting_get_member(it, "SpecialPerformance")) != NULL
+ && (i32 = libconfig->setting_get_bool(t)) != 0) {
+ pet->db[n].s_perfor = (char)i32;
+ }
+
+ if ((t = libconfig->setting_get_member(it, "TalkWithEmotes")) != NULL
+ && (i32 = libconfig->setting_get_bool(t)) != 0) {
+ pet->db[n].talk_convert_class = i32;
}
- if ((t = libconfig->setting_get_member(it, "AutoFeed")) && (i32 = libconfig->setting_get_bool(t)))
+ ret = libconfig->setting_lookup_int(it, "AttackRate", &i32);
+ pet->db[n].attack_rate = (ret == CONFIG_FALSE) ? 300 : cap_value(i32, 0, 10000);
+
+ ret = libconfig->setting_lookup_int(it, "DefendRate", &i32);
+ pet->db[n].defence_attack_rate = (ret == CONFIG_FALSE) ? 300 : cap_value(i32, 0, 10000);
+
+ ret = libconfig->setting_lookup_int(it, "ChangeTargetRate", &i32);
+ pet->db[n].change_target_rate = (ret == CONFIG_FALSE) ? 800 : cap_value(i32, 0, 10000);
+
+ if ((t = libconfig->setting_get_member(it, "AutoFeed")) != NULL && (i32 = libconfig->setting_get_bool(t)) != 0)
pet->db[n].autofeed = i32;
- if (libconfig->setting_lookup_string(it, "PetScript", &str))
- pet->db[n].pet_script = *str ? script->parse(str, source, -pet->db[n].class_, SCRIPT_IGNORE_EXTERNAL_BRACKETS, NULL) : NULL;
+ pet->db[n].pet_script = NULL;
+ if (libconfig->setting_lookup_string(it, "PetScript", &str) == CONFIG_TRUE && *str != '\0')
+ pet->db[n].pet_script = script->parse(str, source, -pet->db[n].class_, SCRIPT_IGNORE_EXTERNAL_BRACKETS, NULL);
- if (libconfig->setting_lookup_string(it, "EquipScript", &str))
- pet->db[n].equip_script = *str ? script->parse(str, source, -pet->db[n].class_, SCRIPT_IGNORE_EXTERNAL_BRACKETS, NULL) : NULL;
+ pet->db[n].equip_script = NULL;
+ if (libconfig->setting_lookup_string(it, "EquipScript", &str) == CONFIG_TRUE && *str != '\0')
+ pet->db[n].equip_script = script->parse(str, source, -pet->db[n].class_, SCRIPT_IGNORE_EXTERNAL_BRACKETS, NULL);
+
+ if ((t = libconfig->setting_get_member(it, "Evolve")) != NULL && config_setting_is_group(t))
+ pet->read_db_sub_evolution(t, n);
return pet->db[n].class_;
}
@@ -1514,24 +1719,41 @@ static void pet_read_db_sub_evolution(struct config_setting_t *t, int n)
}
}
+/**
+ * Reads a pet's intimacy data from DB.
+ *
+ * @param idx The pet's index in pet->db[].
+ * @param t The libconfig settings block, which contains the pet's intimacy data.
+ * @return false on failure, true on success.
+ *
+ **/
static bool pet_read_db_sub_intimacy(int idx, struct config_setting_t *t)
{
+ nullpo_retr(false, t);
+ Assert_retr(false, idx >= 0 && idx < MAX_PET_DB);
+
int i32 = 0;
- nullpo_retr(false, t);
- Assert_ret(idx >= 0 && idx < MAX_PET_DB);
+ if (libconfig->setting_lookup_int(t, "Initial", &i32) == CONFIG_TRUE)
+ pet->db[idx].intimate = cap_value(i32, PET_INTIMACY_AWKWARD, PET_INTIMACY_MAX);
+
+ if (libconfig->setting_lookup_int(t, "FeedIncrement", &i32) == CONFIG_TRUE)
+ pet->db[idx].r_hungry = cap_value(i32, PET_INTIMACY_AWKWARD, PET_INTIMACY_MAX);
+
+ if (libconfig->setting_lookup_int(t, "OverFeedDecrement", &i32) == CONFIG_TRUE)
+ pet->db[idx].r_full = cap_value(i32, PET_INTIMACY_NONE, PET_INTIMACY_MAX);
- if (libconfig->setting_lookup_int(t, "Initial", &i32))
- pet->db[idx].intimate = i32;
+ if (libconfig->setting_lookup_int(t, "OwnerDeathDecrement", &i32) == CONFIG_TRUE)
+ pet->db[idx].die = cap_value(i32, PET_INTIMACY_NONE, PET_INTIMACY_MAX);
- if (libconfig->setting_lookup_int(t, "FeedIncrement", &i32))
- pet->db[idx].r_hungry = i32;
+ if (libconfig->setting_lookup_int(t, "StarvingDelay", &i32) == CONFIG_TRUE)
+ pet->db[idx].starving_delay = cap_value(1000 * i32, 0, pet->db[idx].hungry_delay);
- if (libconfig->setting_lookup_int(t, "OverFeedDecrement", &i32))
- pet->db[idx].r_full = i32;
+ if (libconfig->setting_lookup_int(t, "StarvingDecrement", &i32) == CONFIG_TRUE)
+ pet->db[idx].starving_decrement = cap_value(i32, PET_INTIMACY_NONE, PET_INTIMACY_MAX);
- if (libconfig->setting_lookup_int(t, "OwnerDeathDecrement", &i32))
- pet->db[idx].die = i32;
+ if (pet->db[idx].starving_decrement == PET_INTIMACY_NONE)
+ pet->db[idx].starving_delay = 0;
return true;
}
@@ -1625,6 +1847,8 @@ void pet_defaults(void)
pet->final = do_final_pet;
pet->hungry_val = pet_hungry_val;
+ pet->set_hunger = pet_set_hunger;
+ pet->get_card4_value = pet_get_card4_value;
pet->set_intimate = pet_set_intimate;
pet->create_egg = pet_create_egg;
pet->unlocktarget = pet_unlocktarget;
@@ -1637,6 +1861,7 @@ void pet_defaults(void)
pet->performance = pet_performance;
pet->return_egg = pet_return_egg;
pet->data_init = pet_data_init;
+ pet->spawn = pet_spawn;
pet->birth_process = pet_birth_process;
pet->recv_petdata = pet_recv_petdata;
pet->select_egg = pet_select_egg;
diff --git a/src/map/pet.h b/src/map/pet.h
index e0a5529a6..c57df9de3 100644
--- a/src/map/pet.h
+++ b/src/map/pet.h
@@ -57,6 +57,9 @@ struct s_pet_db {
int defence_attack_rate;
int change_target_rate;
int autofeed;
+ int hunger_decrement;
+ int starving_delay;
+ int starving_decrement;
struct script_code *equip_script;
struct script_code *pet_script;
@@ -143,6 +146,8 @@ struct pet_interface {
int (*final) (void);
/* */
int (*hungry_val) (struct pet_data *pd);
+ void (*set_hunger) (struct pet_data *pd, int value);
+ int (*get_card4_value) (int rename_flag, int intimacy);
void (*set_intimate) (struct pet_data *pd, int value);
int (*create_egg) (struct map_session_data *sd, int item_id);
int (*unlocktarget) (struct pet_data *pd);
@@ -155,6 +160,7 @@ struct pet_interface {
int (*performance) (struct map_session_data *sd, struct pet_data *pd);
int (*return_egg) (struct map_session_data *sd, struct pet_data *pd);
int (*data_init) (struct map_session_data *sd, struct s_pet *petinfo);
+ int (*spawn) (struct map_session_data *sd, bool birth_process);
int (*birth_process) (struct map_session_data *sd, struct s_pet *petinfo);
int (*recv_petdata) (int account_id, struct s_pet *p, int flag);
int (*select_egg) (struct map_session_data *sd, int egg_index);
diff --git a/src/map/quest.c b/src/map/quest.c
index 10ea668a6..217acfa19 100644
--- a/src/map/quest.c
+++ b/src/map/quest.c
@@ -675,7 +675,7 @@ static void quest_questinfo_refresh(struct map_session_data *sd)
nullpo_retv(sd);
for (int i = 0; i < VECTOR_LENGTH(map->list[sd->bl.m].qi_list); i++) {
- struct npc_data *nd = &VECTOR_INDEX(map->list[sd->bl.m].qi_list, i);
+ struct npc_data *nd = VECTOR_INDEX(map->list[sd->bl.m].qi_list, i);
int j;
ARR_FIND(0, VECTOR_LENGTH(nd->qi_data), j, quest->questinfo_validate(sd, &VECTOR_INDEX(nd->qi_data, j)) == true);
diff --git a/src/map/rodex.c b/src/map/rodex.c
index 1ebed0623..f2bb8a0d4 100644
--- a/src/map/rodex.c
+++ b/src/map/rodex.c
@@ -231,7 +231,7 @@ static int rodex_send_mail(struct map_session_data *sd, const char *receiver_nam
nullpo_retr(RODEX_SEND_MAIL_FATAL_ERROR, body);
nullpo_retr(RODEX_SEND_MAIL_FATAL_ERROR, title);
- if (!rodex->isenabled() || sd->npc_id > 0) {
+ if (!rodex->isenabled() || (sd->npc_id != 0 && sd->state.using_megaphone == 0)) {
rodex->clean(sd, 1);
return RODEX_SEND_MAIL_FATAL_ERROR;
}
@@ -575,6 +575,7 @@ static void rodex_clean(struct map_session_data *sd, int8 flag)
if (flag == 0)
VECTOR_CLEAR(sd->rodex.messages);
+ sd->state.workinprogress &= ~2;
memset(&sd->rodex.tmp, 0x0, sizeof(sd->rodex.tmp));
}
diff --git a/src/map/script.c b/src/map/script.c
index c1eb2e8b7..9372299bb 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -848,79 +848,134 @@ static const char *parse_callfunc(const char *p, int require_paren, int is_custo
nullpo_retr(NULL, p);
// is need add check for arg null pointer below?
- func = script->add_word(p);
- if (script->str_data[func].type == C_FUNC) {
- script->syntax.nested_call++;
- if (script->syntax.last_func != -1) {
- if (script->str_data[func].val == script->buildin_lang_macro_offset) {
- script->syntax.lang_macro_active = true;
- macro = true;
- } else if (script->str_data[func].val == script->buildin_lang_macro_fmtstring_offset) {
- script->syntax.lang_macro_fmtstring_active = true;
- macro = true;
- }
+
+ if (*p == '"') {
+ p2 = ++p; // jump to the start of the word
+
+ // find the closing quote
+ while (*p2 != '"') {
+ ++p2;
}
- if( !macro ) {
- // buildin function
+ if (p2[1] == ':' && p2[2] == ':') {
+ func = script->add_str("callfunctionofnpc");
+ arg = "*"; // we already take care of the "vs" part of "vs*"
+
+ script->syntax.nested_call++;
script->syntax.last_func = script->str_data[func].val;
script->addl(func);
script->addc(C_ARG);
- }
- arg = script->buildin[script->str_data[func].val];
- if (script->str_data[func].deprecated)
- DeprecationWarning(p);
- if( !arg ) arg = &null_arg; // Use a dummy, null string
- } else if( script->str_data[func].type == C_USERFUNC || script->str_data[func].type == C_USERFUNC_POS ) {
- // script defined function
- script->addl(script->buildin_callsub_ref);
- script->addc(C_ARG);
- script->addl(func);
- arg = script->buildin[script->str_data[script->buildin_callsub_ref].val];
- if( *arg == 0 )
- disp_error_message("parse_callfunc: callsub has no arguments, please review its definition",p);
- if( *arg != '*' )
- ++arg; // count func as argument
+ script->addc(C_STR);
+ do {
+ script->addb(*p++); // npc name
+ } while (p < p2);
+ script->addb(0);
+
+ p = p2 + 3; // skip to start of func name
+ p2 = script->skip_word(p);
+
+ script->addc(C_STR);
+ do {
+ script->addb(*p++); // func name
+ } while (p < p2);
+ script->addb(0);
+
+ p = p2; // skip to just before the ()
+ } else {
+ disp_error_message("script:parse_callfunc: invalid public function call syntax!", p2 + 1);
+ }
} else {
+ func = script->add_word(p);
+ if (script->str_data[func].type == C_FUNC) {
+ script->syntax.nested_call++;
+
+ if (script->syntax.last_func != -1) {
+ if (script->str_data[func].val == script->buildin_lang_macro_offset) {
+ script->syntax.lang_macro_active = true;
+ macro = true;
+ } else if (script->str_data[func].val == script->buildin_lang_macro_fmtstring_offset) {
+ script->syntax.lang_macro_fmtstring_active = true;
+ macro = true;
+ }
+ }
+
+ if (!macro) {
+ // buildin function
+ script->syntax.last_func = script->str_data[func].val;
+ script->addl(func);
+ script->addc(C_ARG);
+ }
+
+ arg = script->buildin[script->str_data[func].val];
+
+ if (script->str_data[func].deprecated == 1) {
+ DeprecationWarning(p);
+ }
+
+ if (arg == NULL) {
+ arg = &null_arg; // Use a dummy, null string
+ }
+ } else if (script->str_data[func].type == C_USERFUNC || script->str_data[func].type == C_USERFUNC_POS) {
+ // script defined function
+ script->addl(script->buildin_callsub_ref);
+ script->addc(C_ARG);
+ script->addl(func);
+ arg = script->buildin[script->str_data[script->buildin_callsub_ref].val];
+
+ if (*arg == 0) {
+ disp_error_message("script:parse_callfunc: callsub has no arguments, please review its definition", p);
+ }
+
+ if (*arg != '*') {
+ ++arg; // count func as argument
+ }
+ } else {
#ifdef SCRIPT_CALLFUNC_CHECK
- const char* name = script->get_str(func);
- if( !is_custom && strdb_get(script->userfunc_db, name) == NULL ) {
+ const char *name = script->get_str(func);
+ if (is_custom == 0 && strdb_get(script->userfunc_db, name) == NULL) {
#endif
- disp_error_message("parse_line: expect command, missing function name or calling undeclared function",p);
+ disp_error_message("script:parse_callfunc: expect command, missing function name or calling undeclared function", p);
#ifdef SCRIPT_CALLFUNC_CHECK
- } else {;
- script->addl(script->buildin_callfunc_ref);
- script->addc(C_ARG);
- script->addc(C_STR);
- while( *name ) script->addb(*name ++);
- script->addb(0);
- arg = script->buildin[script->str_data[script->buildin_callfunc_ref].val];
- if( *arg != '*' ) ++ arg;
- }
+ } else {
+ script->addl(script->buildin_callfunc_ref);
+ script->addc(C_ARG);
+ script->addc(C_STR);
+
+ while (*name != '\0') {
+ script->addb(*name++);
+ }
+
+ script->addb(0);
+ arg = script->buildin[script->str_data[script->buildin_callfunc_ref].val];
+
+ if (*arg != '*') {
+ ++ arg;
+ }
+ }
#endif
+ }
}
p = script->skip_word(p);
p = script->skip_space(p);
script->syntax.curly[script->syntax.curly_count].type = TYPE_ARGLIST;
script->syntax.curly[script->syntax.curly_count].count = 0;
- if( *p == ';' )
- {// <func name> ';'
+
+ if (*p == ';') {
+ // <func name> ';'
script->syntax.curly[script->syntax.curly_count].flag = ARGLIST_NO_PAREN;
- } else if( *p == '(' && *(p2=script->skip_space(p+1)) == ')' )
- {// <func name> '(' ')'
+ } else if (*p == '(' && *(p2 = script->skip_space(p + 1)) == ')') {
+ // <func name> '(' ')'
script->syntax.curly[script->syntax.curly_count].flag = ARGLIST_PAREN;
p = p2;
- /*
- } else if( 0 && require_paren && *p != '(' )
- {// <func name>
- script->syntax.curly[script->syntax.curly_count].flag = ARGLIST_NO_PAREN;
- */
- } else {// <func name> <arg list>
- if( require_paren ) {
- if( *p != '(' )
- disp_error_message("need '('",p);
+ } else {
+ // <func name> <arg list>
+ if (require_paren == 1) {
+ if (*p != '(') {
+ disp_error_message("script:parse_callfunc: need '('", p);
+ }
+
++p; // skip '('
script->syntax.curly[script->syntax.curly_count].flag = ARGLIST_PAREN;
} else if( *p == '(' ) {
@@ -928,41 +983,65 @@ static const char *parse_callfunc(const char *p, int require_paren, int is_custo
} else {
script->syntax.curly[script->syntax.curly_count].flag = ARGLIST_NO_PAREN;
}
+
++script->syntax.curly_count;
- while( *arg ) {
- p2=script->parse_subexpr(p,-1);
- if( p == p2 )
- break; // not an argument
- if( *arg != '*' )
- ++arg; // next argument
- p=script->skip_space(p2);
- if( *arg == 0 || *p != ',' )
- break; // no more arguments
+ while (*arg != '\0') {
+ p2 = script->parse_subexpr(p, -1);
+
+ if (p == p2) {
+ // not an argument
+ break;
+ }
+
+ if (*arg != '*') {
+ // next argument
+ ++arg;
+ }
+
+ p = script->skip_space(p2);
+
+ if (*arg == 0 || *p != ',') {
+ // no more arguments
+ break;
+ }
+
++p; // skip comma
}
+
--script->syntax.curly_count;
}
- if( arg && *arg && *arg != '?' && *arg != '*' )
- disp_error_message2("parse_callfunc: not enough arguments, expected ','", p, script->config.warn_func_mismatch_paramnum);
- if( script->syntax.curly[script->syntax.curly_count].type != TYPE_ARGLIST )
- disp_error_message("parse_callfunc: DEBUG last curly is not an argument list",p);
- if( script->syntax.curly[script->syntax.curly_count].flag == ARGLIST_PAREN ) {
- if( *p != ')' )
- disp_error_message("parse_callfunc: expected ')' to close argument list",p);
+
+ if (arg != NULL && *arg != '\0' && *arg != '?' && *arg != '*') {
+ disp_error_message2("script:parse_callfunc: not enough arguments, expected ','", p, script->config.warn_func_mismatch_paramnum);
+ }
+
+ if (script->syntax.curly[script->syntax.curly_count].type != TYPE_ARGLIST) {
+ disp_error_message("parse_callfunc: DEBUG last curly is not an argument list", p);
+ }
+
+ if (script->syntax.curly[script->syntax.curly_count].flag == ARGLIST_PAREN) {
+ if (*p != ')') {
+ disp_error_message("script:parse_callfunc: expected ')' to close argument list", p);
+ }
+
++p;
- if (script->str_data[func].val == script->buildin_lang_macro_offset)
+ if (script->str_data[func].val == script->buildin_lang_macro_offset) {
script->syntax.lang_macro_active = false;
- else if (script->str_data[func].val == script->buildin_lang_macro_fmtstring_offset)
+ } else if (script->str_data[func].val == script->buildin_lang_macro_fmtstring_offset) {
script->syntax.lang_macro_fmtstring_active = false;
+ }
}
if (!macro) {
- if (0 == --script->syntax.nested_call)
+ if (0 == --script->syntax.nested_call) {
script->syntax.last_func = -1;
+ }
+
script->addc(C_FUNC);
}
+
return p;
}
@@ -1161,6 +1240,80 @@ static const char *parse_variable(const char *p)
return p;
}
+/**
+ * Converts a number expression literal to an actual integer.
+ * Number separators are skipped.
+ *
+ * expects these formats:
+ * 1337
+ * 0x1337
+ * 0b1001
+ * 0o1337
+ *
+ * example with separating nibbles of a binary literal:
+ * 0b1101_0111_1001_1111
+ *
+ * @param p - a pointer to the first char of the number literal
+ * @param lli - a pointer to the resulting long long integer
+ * @returns a pointer to the first char after the parsed number
+*/
+static const char *parse_number(const char *p, long long *lli) {
+ nullpo_retr(NULL, p);
+
+ const bool unary_plus = (*p == '+');
+ const bool unary_minus = (*p == '-');
+
+ if (unary_plus || unary_minus) {
+ p++;
+ }
+
+ if (ISNSEPARATOR(*p)) {
+ disp_error_message("parse_number: number literals cannot begin with a separator", p);
+ }
+
+#define PARSENUMBER(skip, func, radix) \
+ for (p += skip; func(*p) || (ISNSEPARATOR(*p) && (func(p[1]) || ISNSEPARATOR(p[1]))); ++p) { \
+ if (func(*p)) { \
+ *lli *= radix; \
+ *lli += (*p < 'A') ? (*p & 0xF) : (9 + (*p & 0x7)); \
+ } else if (ISNSEPARATOR(p[1])) { \
+ disp_error_message("parse_number: number literals cannot contain two separators in a row", p + 1); \
+ } \
+ }
+
+ if (*p == '0' && p[1] == 'x') {
+ PARSENUMBER(2, ISXDIGIT, 16);
+ } else if (*p == '0' && p[1] == 'o') {
+ PARSENUMBER(2, ISODIGIT, 8);
+ } else if (*p == '0' && p[1] == 'b') {
+ PARSENUMBER(2, ISBDIGIT, 2);
+ } else {
+ PARSENUMBER(0, ISDIGIT, 10);
+ }
+
+#undef PARSENUMBER
+
+ if (ISNSEPARATOR(*p)) {
+ disp_error_message("parse_number: number literals cannot end with a separator", p);
+ }
+
+ if (unary_minus) {
+ // reverse the sign
+ *lli = -(*lli);
+ }
+
+ // make sure we can't underflow/overflow
+ if (*lli < INT_MIN) {
+ *lli = INT_MIN;
+ script->disp_warning_message("parse_number: underflow detected, capping value to INT_MIN", p);
+ } else if (*lli > INT_MAX) {
+ *lli = INT_MAX;
+ script->disp_warning_message("parse_number: overflow detected, capping value to INT_MAX", p);
+ }
+
+ return p;
+}
+
/*
* Checks whether the gives string is a number literal
*
@@ -1177,24 +1330,44 @@ static const char *parse_variable(const char *p)
static bool is_number(const char *p)
{
const char *np;
- if (!p)
- return false;
- if (*p == '-' || *p == '+')
+ nullpo_retr(false, p);
+
+ if (*p == '-' || *p == '+') {
p++;
+ }
+
np = p;
+
if (*p == '0' && p[1] == 'x') {
- p+=2;
- np = p;
- // Hexadecimal
- while (ISXDIGIT(*np))
+ // Hexadecimal: 0xFFFF
+ np = (p += 2);
+ while (ISXDIGIT(*np) || ISNSEPARATOR(*np)) {
np++;
- } else {
- // Decimal
- while (ISDIGIT(*np))
+ }
+ } else if (*p == '0' && p[1] == 'b') {
+ // Binary: 0b0001
+ np = (p += 2);
+ while (ISBDIGIT(*np) || ISNSEPARATOR(*np)) {
+ np++;
+ }
+ } else if (*p == '0' && p[1] == 'o') {
+ // Octal: 0o1500
+ np = (p += 2);
+ while (ISODIGIT(*np) || ISNSEPARATOR(*np)) {
+ np++;
+ }
+ } else if (ISDIGIT(*p)) {
+ // Decimal: 1234
+ while (ISDIGIT(*np) || ISNSEPARATOR(*np)) {
np++;
+ }
}
- if (p != np && *np != '_' && !ISALPHA(*np)) // At least one digit, and next isn't a letter or _
+
+ if (p != np && *np != '_' && !ISALPHA(*np)) {
+ // At least one digit, and next isn't a letter or _
return true;
+ }
+
return false;
}
@@ -1230,16 +1403,29 @@ static int script_string_dup(char *str)
*------------------------------------------*/
static const char *parse_simpleexpr(const char *p)
{
- p=script->skip_space(p);
+ p = script->skip_space(p);
nullpo_retr(NULL, p);
- if (*p == ';' || *p == ',')
- disp_error_message("parse_simpleexpr: unexpected end of expression",p);
+
+ if (*p == ';' || *p == ',') {
+ disp_error_message("script:parse_simpleexpr: unexpected end of expression", p);
+ }
+
if (*p == '(') {
return script->parse_simpleexpr_paren(p);
} else if (is_number(p)) {
return script->parse_simpleexpr_number(p);
} else if(*p == '"') {
+ const char *p2 = p + 1;
+
+ while (*p2 != '"') {
+ ++p2;
+ }
+
+ if (p2[1] == ':' && p2[2] == ':') {
+ return script->parse_callfunc(p, 1, 0); // XXX: why does callfunc use int for booleans?
+ }
+
return script->parse_simpleexpr_string(p);
} else {
return script->parse_simpleexpr_name(p);
@@ -1275,21 +1461,9 @@ static const char *parse_simpleexpr_paren(const char *p)
static const char *parse_simpleexpr_number(const char *p)
{
- char *np = NULL;
- long long lli;
-
- nullpo_retr(NULL, p);
- while (*p == '0' && ISDIGIT(p[1]))
- p++; // Skip leading zeros, we don't support octal literals
+ long long lli = 0;
+ const char *np = parse_number(p, &lli);
- lli = strtoll(p, &np, 0);
- if (lli < INT_MIN) {
- lli = INT_MIN;
- script->disp_warning_message("parse_simpleexpr: underflow detected, capping value to INT_MIN", p);
- } else if (lli > INT_MAX) {
- lli = INT_MAX;
- script->disp_warning_message("parse_simpleexpr: overflow detected, capping value to INT_MAX", p);
- }
script->addi((int)lli); // Cast is safe, as it's already been checked for overflows
return np;
@@ -1577,6 +1751,85 @@ static const char *parse_line(const char *p)
return p;
}
+/**
+ * parses a local function expression
+ *
+ * expects these formats:
+ * function <name>;
+ * function <name> { <script> }
+ *
+ * this is invoked by script->parse_syntax() after checking whether the function
+ * is public or not
+ *
+ * @param p - a pointer to the start of the function expression
+ * @param is_public - whether this function should be accessible from outside the NPC scope
+ */
+static const char *parse_syntax_function (const char *p, bool is_public)
+{
+ const char *func_name = script->skip_space(p); // the name of the local function
+ p = script->skip_word(func_name);
+
+ if (p == func_name) {
+ disp_error_message("script:parse_syntax_function: function name is missing or invalid", p);
+ }
+
+ const char *p2 = script->skip_space(p);
+
+ if (*p2 == ';') {
+ // function <name> ;
+ // function declaration - just register the name
+ int l = script->add_word(func_name);
+
+ if (script->str_data[l].type == C_NOP) {
+ // register only, if the name was not used by something else
+ script->str_data[l].type = C_USERFUNC;
+ } else if (script->str_data[l].type != C_USERFUNC) {
+ disp_error_message("script:parse_syntax_function: function name is already in use", func_name);
+ }
+
+ // Close condition of if, for, while
+ p = script->parse_syntax_close(p2 + 1);
+ return p;
+ } else if (*p2 == '{') {
+ // function <name> <line/block of code>
+ script->syntax.curly[script->syntax.curly_count].type = TYPE_USERFUNC;
+ script->syntax.curly[script->syntax.curly_count].count = 1;
+ script->syntax.curly[script->syntax.curly_count].index = script->syntax.index++;
+ script->syntax.curly[script->syntax.curly_count].flag = 0;
+ ++script->syntax.curly_count;
+
+ // Jump over the function code
+ char label[256];
+ sprintf(label, "goto __FN%x_FIN;", (unsigned int)script->syntax.curly[script->syntax.curly_count - 1].index);
+ script->syntax.curly[script->syntax.curly_count].type = TYPE_NULL;
+ ++script->syntax.curly_count;
+ script->parse_line(label);
+ --script->syntax.curly_count;
+
+ // Set the position of the function (label)
+ int l = script->add_word(func_name);
+
+ if (script->str_data[l].type == C_NOP || script->str_data[l].type == C_USERFUNC) {
+ // register only, if the name was not used by something else
+ script->str_data[l].type = C_USERFUNC;
+ script->set_label(l, VECTOR_LENGTH(script->buf), p);
+
+ if ((script->parse_options & SCRIPT_USE_LABEL_DB) != 0) {
+ script->label_add(l, VECTOR_LENGTH(script->buf),
+ LABEL_IS_USERFUNC | (is_public ? LABEL_IS_EXTERN : 0));
+ }
+ } else {
+ disp_error_message("script:parse_syntax_function: function name is already in use", func_name);
+ }
+
+ return script->skip_space(p);
+ } else {
+ disp_error_message("script:parse_syntax_function: expected ';' or '{' at function syntax", p);
+ }
+
+ return p;
+}
+
// { ... } Closing process
static const char *parse_curly_close(const char *p)
{
@@ -1920,65 +2173,11 @@ static const char *parse_syntax(const char *p)
script->set_label(l, VECTOR_LENGTH(script->buf), p);
return p;
} else if( p2 - p == 8 && strncmp(p, "function", 8) == 0 ) {
- // internal script function
- const char *func_name;
-
- func_name = script->skip_space(p2);
- p = script->skip_word(func_name);
- if( p == func_name )
- disp_error_message("parse_syntax:function: function name is missing or invalid", p);
- p2 = script->skip_space(p);
- if( *p2 == ';' )
- {// function <name> ;
- // function declaration - just register the name
- int l;
- l = script->add_word(func_name);
- if( script->str_data[l].type == C_NOP )// register only, if the name was not used by something else
- script->str_data[l].type = C_USERFUNC;
- else if( script->str_data[l].type == C_USERFUNC )
- ; // already registered
- else
- disp_error_message("parse_syntax:function: function name is invalid", func_name);
-
- // Close condition of if, for, while
- p = script->parse_syntax_close(p2 + 1);
- return p;
- }
- else if(*p2 == '{')
- {// function <name> <line/block of code>
- char label[256];
- int l;
-
- script->syntax.curly[script->syntax.curly_count].type = TYPE_USERFUNC;
- script->syntax.curly[script->syntax.curly_count].count = 1;
- script->syntax.curly[script->syntax.curly_count].index = script->syntax.index++;
- script->syntax.curly[script->syntax.curly_count].flag = 0;
- ++script->syntax.curly_count;
-
- // Jump over the function code
- sprintf(label, "goto __FN%x_FIN;", (unsigned int)script->syntax.curly[script->syntax.curly_count-1].index);
- script->syntax.curly[script->syntax.curly_count].type = TYPE_NULL;
- ++script->syntax.curly_count;
- script->parse_line(label);
- --script->syntax.curly_count;
-
- // Set the position of the function (label)
- l=script->add_word(func_name);
- if( script->str_data[l].type == C_NOP || script->str_data[l].type == C_USERFUNC )// register only, if the name was not used by something else
- {
- script->str_data[l].type = C_USERFUNC;
- script->set_label(l, VECTOR_LENGTH(script->buf), p);
- if( script->parse_options&SCRIPT_USE_LABEL_DB )
- script->label_add(l, VECTOR_LENGTH(script->buf));
- }
- else
- disp_error_message("parse_syntax:function: function name is invalid", func_name);
-
- return script->skip_space(p);
- }
- else
- {
- disp_error_message("expect ';' or '{' at function syntax",p);
+ // local function not marked as public or private
+ if (script->config.functions_private_by_default) {
+ return script->parse_syntax_function(p2, false);
+ } else {
+ return script->parse_syntax_function(p2, true);
}
}
break;
@@ -2006,6 +2205,26 @@ static const char *parse_syntax(const char *p)
return p;
}
break;
+ case 'p':
+ case 'P':
+ if (p2 - p == 6 && strncmp(p, "public", 6) == 0) {
+ p2 = script->skip_space(p2);
+ const char *p3 = script->skip_word(p2);
+
+ if (p3 - p2 == 8 && strncmp(p2, "function", 8) == 0) {
+ // local function explicitly marked as public
+ return script->parse_syntax_function(p3, true);
+ }
+ } else if (p2 - p == 7 && strncmp(p, "private", 7) == 0) {
+ p2 = script->skip_space(p2);
+ const char *p3 = script->skip_word(p2);
+
+ if (p3 - p2 == 8 && strncmp(p2, "function", 8) == 0) {
+ // local function explicitly marked as private
+ return script->parse_syntax_function(p3, false);
+ }
+ }
+ break;
case 's':
case 'S':
if( p2 - p == 6 && strncmp(p, "switch", 6) == 0 ) {
@@ -2668,25 +2887,32 @@ static struct script_code *parse_script(const char *src, const char *file, int l
}
}
- while( script->syntax.curly_count != 0 || *p != end )
- {
- if( *p == '\0' )
- disp_error_message("unexpected end of script",p);
+ while (script->syntax.curly_count != 0 || *p != end) {
+ if (*p == '\0') {
+ disp_error_message("script:parse_script: unexpected end of script", p);
+ }
+
// Special handling only label
- tmpp=script->skip_space(script->skip_word(p));
- if(*tmpp==':' && !(strncmp(p,"default:",8) == 0 && p + 7 == tmpp)) {
- i=script->add_word(p);
+ tmpp = script->skip_space(script->skip_word(p));
+
+ if (*tmpp == ':' && !(strncmp(p, "default:", 8) == 0 && p + 7 == tmpp)
+ && !(strncmp(p, "function", 8) == 0 && script->skip_space(p + 8) == tmpp)) {
+ i = script->add_word(p);
script->set_label(i, VECTOR_LENGTH(script->buf), p);
- if( script->parse_options&SCRIPT_USE_LABEL_DB )
- script->label_add(i, VECTOR_LENGTH(script->buf));
- p=tmpp+1;
- p=script->skip_space(p);
+
+ if ((script->parse_options & SCRIPT_USE_LABEL_DB) != 0) {
+ bool is_extern = ((p[0] == 'O' || p[0] == 'o') && (p[1] == 'N' || p[1] == 'n'));
+ script->label_add(i, VECTOR_LENGTH(script->buf), is_extern ? LABEL_IS_EXTERN : 0);
+ }
+
+ p = tmpp + 1;
+ p = script->skip_space(p);
continue;
}
// All other lumped
- p=script->parse_line(p);
- p=script->skip_space(p);
+ p = script->parse_line(p);
+ p = script->skip_space(p);
script->parse_nextline(false, p);
}
@@ -3395,6 +3621,32 @@ static void set_reg_instance_num(struct script_state *st, int64 num, const char
}
/**
+ * Validates if a variable is permanent (stored in database) by passed variable name.
+ *
+ * @param name The variable name to validate.
+ * @return True if variable is permanent, otherwise false.
+ *
+ **/
+static bool script_is_permanent_variable(const char *name)
+{
+ nullpo_retr(false, name);
+
+ if (strlen(name) == 0)
+ return false;
+
+ if (ISALNUM(name[0]) != 0)
+ return true; // Permanent characater variable.
+
+ if (name[0] == '#')
+ return true; // Permanent (global) account variable.
+
+ if (strlen(name) > 1 && name[0] == '$' && ISALNUM(name[1]) != 0)
+ return true; // Permanent server variable.
+
+ return false;
+}
+
+/**
* Stores the value of a script variable
*
* @param st current script state.
@@ -3439,6 +3691,18 @@ static int set_reg(struct script_state *st, struct map_session_data *sd, int64 n
if (is_string_variable(name)) {// string variable
const char *str = (const char*)value;
+ if (script->is_permanent_variable(name) && strlen(str) > SCRIPT_STRING_VAR_LENGTH) {
+ ShowError("script:set_reg: Value of variable %s is too long: %d! Maximum is %d. Skipping...\n",
+ name, (int)strlen(str), SCRIPT_STRING_VAR_LENGTH);
+
+ if (st != NULL) {
+ script->reportsrc(st);
+ st->state = END;
+ }
+
+ return 0;
+ }
+
switch (prefix) {
case '@':
if (ref) {
@@ -4828,6 +5092,8 @@ static bool script_config_read(const char *filename, bool imported)
libconfig->setting_lookup_bool_real(setting, "warn_func_mismatch_paramnum", &script->config.warn_func_mismatch_paramnum);
libconfig->setting_lookup_bool_real(setting, "warn_func_mismatch_argtypes", &script->config.warn_func_mismatch_argtypes);
+ libconfig->setting_lookup_bool_real(setting, "functions_private_by_default", &script->config.functions_private_by_default);
+ libconfig->setting_lookup_bool_real(setting, "functions_as_events", &script->config.functions_as_events);
libconfig->setting_lookup_int(setting, "check_cmdcount", &script->config.check_cmdcount);
libconfig->setting_lookup_int(setting, "check_gotocount", &script->config.check_gotocount);
libconfig->setting_lookup_int(setting, "input_min_value", &script->config.input_min_value);
@@ -6397,6 +6663,111 @@ static BUILDIN(callfunc)
return true;
}
+
+/**
+ * Calls a local function within a NPC as if it was part of the current scope.
+ * Resumes execution in the previous scope once the NPC function returns. This
+ * is essentially a clone of buildin_callsub that can run in arbitrary NPCs.
+ *
+ * Usage:
+ * callfunctionofnpc("<npc name>", "<function name>"{, <arg>...})
+ * callfunctionofnpc(<npc id>, "<function name>"{, <arg>...})
+ *
+ * This buildin is also used internally by this syntax:
+ * "<npc name>"::<function name>({<arg>...})
+ */
+static BUILDIN(callfunctionofnpc) {
+ struct npc_data *nd = NULL;
+
+ if (script_isstring(st, 2)) {
+ nd = npc->name2id(script_getstr(st, 2));
+ } else {
+ nd = map->id2nd(script_getnum(st, 2));
+ }
+
+ if (nd == NULL) {
+ ShowError("script:callfunctionofnpc: NPC not found.\n");
+ st->state = END;
+ return false;
+ }
+
+ const char *function_name = script_getstr(st, 3);
+ int pos = -1;
+
+ // find the function label within the label list of the NPC
+ for (int i = 0; i < nd->u.scr.label_list_num; ++i) {
+ if (strcmp(nd->u.scr.label_list[i].name, function_name) == 0) {
+ if ((nd->u.scr.label_list[i].flags & LABEL_IS_EXTERN) != 0
+ && (nd->u.scr.label_list[i].flags & LABEL_IS_USERFUNC) != 0) {
+ // function label found: set the start location
+ pos = nd->u.scr.label_list[i].pos;
+ } else if ((nd->u.scr.label_list[i].flags & LABEL_IS_USERFUNC) != 0) {
+ ShowError("script:callfunctionofnpc: function '%s' is not marked as public in NPC '%s'.\n", function_name, nd->name);
+ st->state = END;
+ return false;
+ }
+ break;
+ }
+ }
+
+ if (pos < 0) {
+ ShowError("script:callfunctionofnpc: function '%s' not found in NPC '%s'!\n", function_name, nd->name);
+ st->state = END;
+ return false;
+ }
+
+ // alloc a reg_db reference of the current scope for the new scope
+ struct reg_db *ref = (struct reg_db *)aCalloc(sizeof(struct reg_db), 2);
+ // scope variables (.@var)
+ ref[0].vars = st->stack->scope.vars;
+ ref[0].arrays = st->stack->scope.arrays;
+ // npc variables (.var)
+ ref[1].vars = st->script->local.vars;
+ ref[1].arrays = st->script->local.arrays;
+
+ int i = 0;
+
+ // make sure the arguments we push retain their current reg_db references:
+ // this allows to do things like set(getarg(0), ...)
+ for (i = st->start + 4; i < st->end; i++) {
+ struct script_data *data = script->push_copy(st->stack, i);
+
+ if (data_isreference(data) && data->ref == NULL) {
+ const char *name = reference_getname(data);
+
+ if (name[0] == '.') {
+ data->ref = (name[1] == '@' ? &ref[0] : &ref[1]);
+ }
+ }
+ }
+
+ // save the previous scope
+ struct script_retinfo *ri = NULL;
+ CREATE(ri, struct script_retinfo, 1);
+ ri->script = st->script; // script code
+ ri->scope.vars = st->stack->scope.vars; // scope variables
+ ri->scope.arrays = st->stack->scope.arrays; // scope arrays
+ ri->pos = st->pos; // script location
+ ri->nargs = i - st->start - 4; // argument count
+ ri->defsp = st->stack->defsp; // default stack pointer
+ script->push_retinfo(st->stack, ri, ref);
+
+ // change the current scope to the scope of the function
+ st->pos = pos;
+ st->script = nd->u.scr.script;
+ st->stack->defsp = st->stack->sp;
+ st->state = GOTO;
+ st->stack->scope.vars = i64db_alloc(DB_OPT_RELEASE_DATA);
+ st->stack->scope.arrays = idb_alloc(DB_OPT_BASE);
+
+ // make sure local reg_db of the other NPC is initialized
+ if (st->script->local.vars == NULL) {
+ st->script->local.vars = i64db_alloc(DB_OPT_RELEASE_DATA);
+ }
+
+ return true;
+}
+
/*==========================================
* subroutine call
*------------------------------------------*/
@@ -8764,22 +9135,71 @@ static BUILDIN(delitemidx)
return true;
}
-/*==========================================
- * Enables/Disables use of items while in an NPC [Skotlex]
- *------------------------------------------*/
+/**
+ * Enable item actions while interacting with NPC.
+ *
+ * @code{.herc}
+ * enableitemuse({<flag>});
+ * enable_items({<flag>});
+ * @endcode
+ *
+ **/
static BUILDIN(enableitemuse)
{
+ int flag = battle_config.item_enabled_npc;
+
+ if (script_hasdata(st, 2)) {
+ if (!script_isinttype(st, 2))
+ return true;
+
+ flag = script_getnum(st, 2);
+ }
+
+ if (flag < 0)
+ return true;
+
struct map_session_data *sd = script->rid2sd(st);
- if (sd != NULL)
- st->npc_item_flag = sd->npc_item_flag = 1;
+
+ if (sd == NULL)
+ return true;
+
+ st->npc_item_flag |= flag;
+ sd->npc_item_flag |= flag;
+
return true;
}
+/**
+ * Disable item actions while interacting with NPC.
+ *
+ * @code{.herc}
+ * disableitemuse({<flag>});
+ * disable_items({<flag>});
+ * @endcode
+ *
+ **/
static BUILDIN(disableitemuse)
{
+ int flag = battle_config.item_enabled_npc;
+
+ if (script_hasdata(st, 2)) {
+ if (!script_isinttype(st, 2))
+ return true;
+
+ flag = script_getnum(st, 2);
+ }
+
+ if (flag < 0)
+ return true;
+
struct map_session_data *sd = script->rid2sd(st);
- if (sd != NULL)
- st->npc_item_flag = sd->npc_item_flag = 0;
+
+ if (sd == NULL)
+ return true;
+
+ st->npc_item_flag &= ~flag;
+ sd->npc_item_flag &= ~flag;
+
return true;
}
@@ -10852,7 +11272,8 @@ static BUILDIN(gettimetick)
case 0:
default:
//type 0:(System Ticks)
- script_pushint(st,(int)timer->gettick()); // TODO: change this to int64 when we'll support 64 bit script values
+ // Conjunction with INT_MAX is done to prevent overflow. (Script variables are signed integers.)
+ script_pushint(st, timer->gettick() & INT_MAX); // TODO: change this to int64 when we'll support 64 bit script values
break;
}
return true;
@@ -10998,34 +11419,33 @@ static BUILDIN(itemskill)
{
struct map_session_data *sd = script->rid2sd(st);
- if (sd == NULL || sd->ud.skilltimer != INVALID_TIMER)
+ if (sd == NULL)
return true;
- sd->skillitem = script_isstringtype(st, 2) ? skill->name2id(script_getstr(st, 2)) : script_getnum(st, 2);
- sd->skillitemlv = script_getnum(st, 3);
- sd->state.itemskill_conditions_checked = 0; // Skill casting items will check the conditions prior to the target selection in AEGIS. Thus we need a flag to prevent checking them twice.
+ sd->auto_cast_current.type = AUTOCAST_ITEM;
+ sd->auto_cast_current.skill_id = script_isstringtype(st, 2) ? skill->name2id(script_getstr(st, 2)) : script_getnum(st, 2);
+ sd->auto_cast_current.skill_lv = script_getnum(st, 3);
int flag = script_hasdata(st, 4) ? script_getnum(st, 4) : ISF_NONE;
- sd->state.itemskill_no_conditions = ((flag & ISF_IGNORECONDITIONS) == ISF_IGNORECONDITIONS) ? 1 : 0; // Unset in pc_itemskill_clear().
+ sd->auto_cast_current.itemskill_check_conditions = ((flag & ISF_CHECKCONDITIONS) == ISF_CHECKCONDITIONS);
- if (sd->state.itemskill_no_conditions == 0) {
- if (skill->check_condition_castbegin(sd, sd->skillitem, sd->skillitemlv) == 0
- || skill->check_condition_castend(sd, sd->skillitem, sd->skillitemlv) == 0) {
+ if (sd->auto_cast_current.itemskill_check_conditions) {
+ if (skill->check_condition_castbegin(sd, sd->auto_cast_current.skill_id, sd->auto_cast_current.skill_lv) == 0
+ || skill->check_condition_castend(sd, sd->auto_cast_current.skill_id, sd->auto_cast_current.skill_lv) == 0) {
return true;
}
- sd->state.itemskill_conditions_checked = 1; // Unset in pc_itemskill_clear().
+ sd->auto_cast_current.itemskill_conditions_checked = true;
}
- sd->state.itemskill_no_casttime = ((flag & ISF_INSTANTCAST) == ISF_INSTANTCAST) ? 1 : 0; // Unset in pc_itemskill_clear().
- sd->state.itemskill_castonself = ((flag & ISF_CASTONSELF) == ISF_CASTONSELF) ? 1 : 0; // Unset in pc_itemskill_clear().
+ sd->auto_cast_current.itemskill_instant_cast = ((flag & ISF_INSTANTCAST) == ISF_INSTANTCAST);
+ sd->auto_cast_current.itemskill_cast_on_self = ((flag & ISF_CASTONSELF) == ISF_CASTONSELF);
- // itemskill_conditions_checked/itemskill_no_conditions/itemskill_no_casttime/itemskill_castonself abuse prevention. Unset in pc_itemskill_clear().
- sd->itemskill_id = sd->skillitem;
- sd->itemskill_lv = sd->skillitemlv;
+ VECTOR_ENSURE(sd->auto_cast, 1, 1);
+ VECTOR_PUSH(sd->auto_cast, sd->auto_cast_current);
- clif->item_skill(sd, sd->skillitem, sd->skillitemlv);
+ clif->item_skill(sd, sd->auto_cast_current.skill_id, sd->auto_cast_current.skill_lv);
return true;
}
@@ -12114,6 +12534,52 @@ static BUILDIN(mobattached)
return true;
}
+/**
+ * Announces a colored text in '<char_name> Shouts : <message>' format.
+ * Default color is white ("FFFFFF").
+ *
+ * This is a special use case of packet 0x009a where the message's first 34 bytes
+ * are reserved for string "micc" (4B) which identifies the broadcast as megaphone shout,
+ * the character's name (24B) and the text color (6B).
+ *
+ * 009a <packet len>.W <micc>.4B <char name>.24B <color>.6B <message>.?B
+ *
+ * @code{.herc}
+ * loudhailer("<message>"{, "<color>"});
+ * @endcode
+ *
+ **/
+static BUILDIN(loudhailer)
+{
+ const char *mes = script_getstr(st, 2);
+ size_t len_mes = strlen(mes);
+
+ Assert_retr(false, len_mes + 33 < CHAT_SIZE_MAX); // +33 because of the '<char_name> Shouts : ' message prefix.
+
+ const char *color = script_hasdata(st, 3) ? script_getstr(st, 3) : "FFFFFF";
+
+ Assert_retr(false, strlen(color) == 6);
+
+ struct map_session_data *sd = script->rid2sd(st);
+
+ if (sd == NULL)
+ return false;
+
+ char mes_formatted[CHAT_SIZE_MAX + 30] = "";
+
+ strcpy(mes_formatted, sd->status.name);
+ strcpy(mes_formatted + 24, color);
+ safesnprintf(mes_formatted + 30, CHAT_SIZE_MAX, "%s Shouts : %s", sd->status.name, mes);
+
+ size_t len_formatted = 30 + strlen(sd->status.name) + 10 + len_mes + 1;
+
+ clif->broadcast(&sd->bl, mes_formatted, (int)len_formatted, BC_MEGAPHONE, ALL_CLIENT);
+
+ sd->state.using_megaphone = 0;
+
+ return true;
+}
+
/*==========================================
*------------------------------------------*/
static BUILDIN(announce)
@@ -13580,6 +14046,7 @@ static BUILDIN(getmapflag)
case MF_PAIRSHIP_ENDABLE: script_pushint(st, map->list[m].flag.pairship_endable); break;
case MF_NOSTORAGE: script_pushint(st, map->list[m].flag.nostorage); break;
case MF_NOGSTORAGE: script_pushint(st, map->list[m].flag.nogstorage); break;
+ case MF_NOPET: script_pushint(st, map->list[m].flag.nopet); break;
}
}
@@ -13712,6 +14179,7 @@ static BUILDIN(setmapflag)
case MF_PAIRSHIP_ENDABLE: map->list[m].flag.pairship_endable = 1; break;
case MF_NOSTORAGE: map->list[m].flag.nostorage = cap_value(val, 0, 3); break;
case MF_NOGSTORAGE: map->list[m].flag.nogstorage = cap_value(val, 0, 3); break;
+ case MF_NOPET: map->list[m].flag.nopet = 1; break;
}
}
@@ -13805,6 +14273,7 @@ static BUILDIN(removemapflag)
case MF_NOVIEWID: map->list[m].flag.noviewid = EQP_NONE; break;
case MF_NOSTORAGE: map->list[m].flag.nostorage = 0; break;
case MF_NOGSTORAGE: map->list[m].flag.nogstorage = 0; break;
+ case MF_NOPET: map->list[m].flag.nopet = 0; break;
}
}
@@ -14780,24 +15249,34 @@ static BUILDIN(getitemslots)
return true;
}
-// TODO: add matk here if needed
-
-/*==========================================
- * Returns some values of an item [Lupus]
- * Price, Weight, etc...
- *------------------------------------------*/
+/**
+ * Returns various information about an item.
+ *
+ * @code{.herc}
+ * getiteminfo(<item ID>, <type>);
+ * getiteminfo("<item name>", <type>);
+ * @endcode
+ *
+ **/
static BUILDIN(getiteminfo)
{
- int item_id = script_getnum(st, 2);
- int n = script_getnum(st, 3);
- struct item_data *it = itemdb->exists(item_id);
+ struct item_data *it;
+
+ if (script_isstringtype(st, 2)) { /// Item name.
+ const char *name = script_getstr(st, 2);
+ it = itemdb->search_name(name);
+ } else { /// Item ID.
+ it = itemdb->exists(script_getnum(st, 2));
+ }
if (it == NULL) {
script_pushint(st, -1);
return true;
}
- switch (n) {
+ int type = script_getnum(st, 3);
+
+ switch (type) {
case ITEMINFO_BUYPRICE:
script_pushint(st, it->value_buy);
break;
@@ -14909,16 +15388,24 @@ static BUILDIN(getiteminfo)
case ITEMINFO_STACK_AMOUNT:
script_pushint(st, it->stack.amount);
break;
- case ITEMINFO_STACK_FLAG:
- {
- int stack_flag = 0;
- if (it->stack.inventory != 0) stack_flag |= 1;
- if (it->stack.cart != 0) stack_flag |= 2;
- if (it->stack.storage != 0) stack_flag |= 4;
- if (it->stack.guildstorage != 0) stack_flag |= 8;
- script_pushint(st, stack_flag);
- }
+ case ITEMINFO_STACK_FLAG: {
+ int stack_flag = 0;
+
+ if (it->stack.inventory != 0)
+ stack_flag |= 1;
+
+ if (it->stack.cart != 0)
+ stack_flag |= 2;
+
+ if (it->stack.storage != 0)
+ stack_flag |= 4;
+
+ if (it->stack.guildstorage != 0)
+ stack_flag |= 8;
+
+ script_pushint(st, stack_flag);
break;
+ }
case ITEMINFO_ITEM_USAGE_FLAG:
script_pushint(st, it->item_usage.flag);
break;
@@ -14928,11 +15415,21 @@ static BUILDIN(getiteminfo)
case ITEMINFO_GM_LV_TRADE_OVERRIDE:
script_pushint(st, it->gm_lv_trade_override);
break;
+ case ITEMINFO_ID:
+ script_pushint(st, it->nameid);
+ break;
+ case ITEMINFO_AEGISNAME:
+ script_pushstrcopy(st, it->name);
+ break;
+ case ITEMINFO_NAME:
+ script_pushstrcopy(st, it->jname);
+ break;
default:
- ShowError("buildin_getiteminfo: Invalid item type %d.\n", n);
- script_pushint(st,-1);
+ ShowError("buildin_getiteminfo: Invalid item info type %d.\n", type);
+ script_pushint(st, -1);
return false;
}
+
return true;
}
@@ -16085,7 +16582,6 @@ static BUILDIN(atcommand)
struct map_session_data *sd, *dummy_sd = NULL;
int fd;
const char* cmd;
- bool ret = true;
cmd = script_getstr(st,2);
@@ -16108,11 +16604,12 @@ static BUILDIN(atcommand)
if (!atcommand->exec(fd, sd, cmd, false)) {
ShowWarning("script: buildin_atcommand: failed to execute command '%s'\n", cmd);
- script->reportsrc(st);
- ret = false;
+ if (dummy_sd != NULL)
+ aFree(dummy_sd);
+ return false;
}
if (dummy_sd) aFree(dummy_sd);
- return ret;
+ return true;
}
/**
@@ -16558,7 +17055,7 @@ static BUILDIN(npcwalkto)
} else {
status_calc_npc(nd, SCO_NONE);
}
- unit->walktoxy(&nd->bl, x, y, 0);
+ unit->walk_toxy(&nd->bl, x, y, 0);
}
return true;
@@ -18836,7 +19333,14 @@ static BUILDIN(npcshopdelitem)
size--;
}
- RECREATE(nd->u.shop.shop_item, struct npc_item_list, size);
+ int alloc_size = size;
+ if (size < 0) {
+ size = 0;
+ alloc_size = 1;
+ } else if (size < 1) {
+ alloc_size = 1;
+ }
+ RECREATE(nd->u.shop.shop_item, struct npc_item_list, alloc_size);
nd->u.shop.count = size;
script_pushint(st,1);
@@ -19237,12 +19741,14 @@ static BUILDIN(pcblockmove)
static BUILDIN(setpcblock)
{
- struct map_session_data *sd = script->rid2sd(st);
+ struct map_session_data *sd = script_hasdata(st, 4) ? script->id2sd(st, script_getnum(st, 4)) : script->rid2sd(st);
enum pcblock_action_flag type = script_getnum(st, 2);
int state = (script_getnum(st, 3) > 0) ? 1 : 0;
- if (sd == NULL)
+ if (sd == NULL) {
+ script_pushint(st, 0);
return true;
+ }
if ((type & PCBLOCK_MOVE) != 0)
sd->block_action.move = state;
@@ -19271,12 +19777,13 @@ static BUILDIN(setpcblock)
if ((type & PCBLOCK_NPC) != 0)
sd->block_action.npc = state;
+ script_pushint(st, 1);
return true;
}
static BUILDIN(checkpcblock)
{
- struct map_session_data *sd = script->rid2sd(st);
+ struct map_session_data *sd = script_hasdata(st, 2) ? script->id2sd(st, script_getnum(st, 2)) : script->rid2sd(st);
int retval = PCBLOCK_NONE;
if (sd == NULL) {
@@ -19385,26 +19892,25 @@ static BUILDIN(getunittype)
/**
* Sets real-time unit data for a game object.
- * Setunitdata <GUID>,<DataType>,<Val1>{,<Val2>,<Val3>}
+ *
+ * @code{.herc}
+ * setunitdata <GUID>, <DataType>, <Val1>{, <Val2>, <Val3>}
+ * @endcode
+ *
* @param1 GUID GID of the unit.
* @param2 DataType Type of Data to be set for the unit.
* @param3 Value#1 Value to be passed as change in data.
* @param4 Value#2 Optional int value to be passed for certain data types.
* @param5 Value#3 Optional int value to be passed for certain data types.
* @return 1 on success, 0 on failure.
-
- Note: Please make this script command only modify ONE INTEGER value.
- If need to modify string type data, or having multiple arguments, please
- introduce a new script command.
- */
+ *
+ * Note: Please make this script command only modify ONE INTEGER value.
+ * If need to modify string type data, or having multiple arguments, please introduce a new script command.
+ *
+ **/
static BUILDIN(setunitdata)
{
- struct block_list *bl = NULL;
- const char *mapname = NULL, *udtype = NULL;
- int type = 0, val = 0, val2 = 0, val3 = 0;
- struct map_session_data *tsd = NULL;
-
- bl = map->id2bl(script_getnum(st, 2));
+ struct block_list *bl = map->id2bl(script_getnum(st, 2));
if (bl == NULL) {
ShowWarning("buildin_setunitdata: Error in finding object with given GID %d!\n", script_getnum(st, 2));
@@ -19412,22 +19918,26 @@ static BUILDIN(setunitdata)
return false;
}
- type = script_getnum(st, 3);
+ int type = script_getnum(st, 3);
- /* type bounds */
+ // Type bounds.
if (type < UDT_SIZE || type >= UDT_MAX) { // Note: UDT_TYPE is not valid here
ShowError("buildin_setunitdata: Invalid unit data type %d provided.\n", type);
script_pushint(st, 0);
return false;
}
- /* Mandatory Argument 3. Subject to deprecate. */
+ const char *mapname = NULL;
+ int val = 0;
+
+ // Mandatory argument #3. Subject to deprecate.
if (type == UDT_MAPIDXY) {
if (!script_isstringtype(st, 4)) {
ShowError("buildin_setunitdata: Invalid data type for argument #3.\n");
script_pushint(st, 0);
return false;
}
+
mapname = script_getstr(st, 4);
} else {
if (script_isstringtype(st, 4)) {
@@ -19435,68 +19945,87 @@ static BUILDIN(setunitdata)
script_pushint(st, 0);
return false;
}
+
val = script_getnum(st, 4);
}
-/* checks if value is out of bounds. */
+
+/****************************************************************************************************
+ * Define temporary macros. [BEGIN]
+ ****************************************************************************************************/
+
+// Checks if value is out of bounds.
#define setunitdata_check_bounds(arg, min, max) \
do { \
if (script_getnum(st, (arg)) < (min) || script_getnum(st, (arg)) > (max)) { \
- ShowError("buildin_setunitdata: Invalid value %d for argument #%d. (min: %d, max: %d)\n", script_getnum(st, (arg)), (arg)-1, (min), (max)); \
+ ShowError("buildin_setunitdata: Invalid value %d for argument #%d. (min: %d, max: %d)\n", \
+ script_getnum(st, (arg)), (arg) - 1, (min), (max)); \
script_pushint(st, 0); \
return false; \
} \
} while(0);
-/* checks if value is out of bounds. */
+
+// Checks if value is too low.
#define setunitdata_check_min(arg, min) \
do { \
if (script_getnum(st, (arg)) < (min)) { \
- ShowError("buildin_setunitdata: Invalid value %d for argument #%d. (min: %d)\n", script_getnum(st, (arg)), (arg)-1, (min)); \
+ ShowError("buildin_setunitdata: Invalid value %d for argument #%d. (min: %d)\n", \
+ script_getnum(st, (arg)), (arg) - 1, (min)); \
script_pushint(st, 0); \
return false; \
} \
} while(0);
-/* checks if the argument doesn't exist, if required.
- * also checks if the argument exists, if not required. */
+
+// Checks if the argument doesn't exist, if required. Also checks if the argument exists, if not required.
#define setunitdata_assert_arg(arg, required) \
do { \
if (required && !script_hasdata(st, (arg))) { \
- ShowError("buildin_setunitdata: Type %d reqires argument #%d.\n", type, (arg)-1); \
+ ShowError("buildin_setunitdata: Type %d reqires argument #%d.\n", type, (arg) - 1); \
script_pushint(st, 0); \
return false; \
} else if (!required && script_hasdata(st, arg)) { \
- ShowError("buildin_setunitdata: Argument %d is not required for type %d.\n", (arg)-1, type); \
+ ShowError("buildin_setunitdata: Argument %d is not required for type %d.\n", (arg) - 1, type); \
script_pushint(st, 0); \
return false; \
} \
} while (0);
-/* checks if the data is an integer. */
+
+// Checks if the data is an integer.
#define setunitdata_check_int(arg) \
do { \
setunitdata_assert_arg((arg), true); \
if (script_isstringtype(st, (arg))) { \
- ShowError("buildin_setunitdata: Argument #%d expects integer, string given.\n", (arg)-1); \
+ ShowError("buildin_setunitdata: Argument #%d expects integer, string given.\n", (arg) - 1); \
script_pushint(st, 0); \
return false; \
} \
} while(0);
-/* checks if the data is a string. */
+
+// Checks if the data is a string.
#define setunitdata_check_string(arg) \
do { \
setunitdata_assert_arg((arg), true); \
if (script_isinttype(st, (arg))) { \
- ShowError("buildin_setunitdata: Argument #%d expects string, integer given.\n", (arg)-1); \
+ ShowError("buildin_setunitdata: Argument #%d expects string, integer given.\n", (arg) - 1); \
script_pushint(st, 0); \
return false; \
} \
} while(0);
+/****************************************************************************************************
+ * Define temporary macros. [END]
+ ****************************************************************************************************/
+
if (type != UDT_MAPIDXY && type != UDT_WALKTOXY) {
setunitdata_assert_arg(5, false);
setunitdata_assert_arg(6, false);
}
- switch (type)
- {
+ int val2 = 0;
+ int val3 = 0;
+
+ struct map_session_data *tsd = NULL;
+
+ switch (type) {
case UDT_SIZE:
setunitdata_check_bounds(4, SZ_SMALL, SZ_BIG);
break;
@@ -19522,30 +20051,36 @@ static BUILDIN(setunitdata)
case UDT_MASTERAID:
setunitdata_check_min(4, 0);
tsd = map->id2sd(val);
+
if (tsd == NULL) {
- ShowWarning("buildin_setunitdata: Account ID %d not found for master change!\n",val);
+ ShowWarning("buildin_setunitdata: Account ID %d not found for master change!\n", val);
script_pushint(st, 0);
return false;
}
+
break;
case UDT_MASTERCID:
setunitdata_check_min(4, 0);
tsd = map->charid2sd(val);
+
if (tsd == NULL) {
- ShowWarning("buildin_setunitdata: Character ID %d not found for master change!\n",val);
+ ShowWarning("buildin_setunitdata: Character ID %d not found for master change!\n", val);
script_pushint(st, 0);
return false;
}
+
break;
case UDT_MAPIDXY:
- if ((val = map->mapname2mapid(mapname)) == -1) {
+ if ((val = map->mapname2mapid(mapname)) == INDEX_NOT_FOUND) {
ShowError("buildin_setunitdata: Non-existent map %s provided.\n", mapname);
+ script_pushint(st, 0);
return false;
}
+
setunitdata_check_int(5);
setunitdata_check_int(6);
- setunitdata_check_bounds(5, 0, MAX_MAP_SIZE/2);
- setunitdata_check_bounds(6, 0, MAX_MAP_SIZE/2);
+ setunitdata_check_bounds(5, 0, MAX_MAP_SIZE / 2);
+ setunitdata_check_bounds(6, 0, MAX_MAP_SIZE / 2);
val2 = script_getnum(st, 5);
val3 = script_getnum(st, 6);
break;
@@ -19553,8 +20088,8 @@ static BUILDIN(setunitdata)
setunitdata_assert_arg(6, false);
setunitdata_check_int(5);
val2 = script_getnum(st, 5);
- setunitdata_check_bounds(4, 0, MAX_MAP_SIZE/2);
- setunitdata_check_bounds(5, 0, MAX_MAP_SIZE/2);
+ setunitdata_check_bounds(4, 0, MAX_MAP_SIZE / 2);
+ setunitdata_check_bounds(5, 0, MAX_MAP_SIZE / 2);
break;
case UDT_SPEED:
setunitdata_check_bounds(4, 0, MAX_WALK_SPEED);
@@ -19609,7 +20144,7 @@ static BUILDIN(setunitdata)
setunitdata_check_bounds(4, 0, SHRT_MAX);
break;
case UDT_HUNGER:
- setunitdata_check_bounds(4, 0, 99);
+ setunitdata_check_bounds(4, PET_HUNGER_STARVING, PET_HUNGER_STUFFED); // Pets and Homunculi have the same hunger value bounds.
break;
case UDT_RACE:
case UDT_ELETYPE:
@@ -19617,19 +20152,20 @@ static BUILDIN(setunitdata)
setunitdata_check_bounds(4, 0, CHAR_MAX);
break;
case UDT_GROUP:
- {
setunitdata_check_bounds(4, 0, INT_MAX);
+
struct unit_data *ud = unit->bl2ud2(bl);
+
if (ud == NULL) {
ShowError("buildin_setunitdata: ud is NULL!\n");
script_pushint(st, 0);
return false;
}
+
ud->groupId = script_getnum(st, 4);
clif->blname_ack(0, bl); // Send update to client.
script_pushint(st, 1);
return true;
- }
case UDT_DAMAGE_TAKEN_RATE:
setunitdata_check_bounds(4, 1, INT_MAX);
break;
@@ -19637,67 +20173,81 @@ static BUILDIN(setunitdata)
break;
}
+/****************************************************************************************************
+ * Undefine temporary macros. [BEGIN]
+ ****************************************************************************************************/
+
#undef setunitdata_check_bounds
+#undef setunitdata_check_min
#undef setunitdata_assert_arg
#undef setunitdata_check_int
#undef setunitdata_check_string
- /* Set the values */
+/****************************************************************************************************
+ * Undefine temporary macros. [END]
+ ****************************************************************************************************/
+
+ // Set the values.
switch (bl->type) {
- case BL_MOB:
- {
+ case BL_MOB: {
struct mob_data *md = BL_UCAST(BL_MOB, bl);
- nullpo_retr(false, md);
- switch (type)
- {
+ if (md == NULL) {
+ ShowError("buildin_setunitdata: Can't find monster for GID %d!\n", script_getnum(st, 2));
+ script_pushint(st, 0);
+ return false;
+ }
+
+ switch (type) {
case UDT_SIZE:
- md->status.size = (unsigned char) val;
+ md->status.size = (unsigned char)val;
break;
case UDT_LEVEL:
md->level = val;
- if (battle_config.show_mob_info & 4)
+
+ if ((battle_config.show_mob_info & 4) != 0)
clif->blname_ack(0, &md->bl);
+
break;
case UDT_HP:
- status->set_hp(bl, (unsigned int) val, STATUS_HEAL_DEFAULT);
+ status->set_hp(bl, (unsigned int)val, STATUS_HEAL_DEFAULT);
clif->blname_ack(0, &md->bl);
break;
case UDT_MAXHP:
- md->status.max_hp = (unsigned int) val;
+ md->status.max_hp = (unsigned int)val;
clif->blname_ack(0, &md->bl);
break;
case UDT_SP:
- status->set_sp(bl, (unsigned int) val, STATUS_HEAL_DEFAULT);
+ status->set_sp(bl, (unsigned int)val, STATUS_HEAL_DEFAULT);
break;
case UDT_MAXSP:
- md->status.max_sp = (unsigned int) val;
+ md->status.max_sp = (unsigned int)val;
break;
case UDT_MASTERAID:
md->master_id = val;
break;
case UDT_MAPIDXY:
- unit->warp(bl, (short) val, (short) val2, (short) val3, CLR_TELEPORT);
+ unit->warp(bl, (short)val, (short)val2, (short)val3, CLR_TELEPORT);
break;
case UDT_WALKTOXY:
- if (!unit->walktoxy(bl, (short) val, (short) val2, 2))
- unit->movepos(bl, (short) val, (short) val2, 0, 0);
+ if (unit->walk_toxy(bl, (short)val, (short)val2, 2) != 0)
+ unit->movepos(bl, (short)val, (short)val2, 0, 0);
break;
case UDT_SPEED:
- md->status.speed = (unsigned short) val;
+ md->status.speed = (unsigned short)val;
status->calc_misc(bl, &md->status, md->level);
break;
case UDT_MODE:
- md->status.mode = (enum e_mode) val;
+ md->status.mode = (enum e_mode)val;
break;
case UDT_AI:
- md->special_state.ai = (enum ai) val;
+ md->special_state.ai = (enum ai)val;
break;
case UDT_SCOPTION:
- md->sc.option = (unsigned int) val;
+ md->sc.option = (unsigned int)val;
break;
case UDT_SEX:
- md->vd->sex = (char) val;
+ md->vd->sex = (char)val;
break;
case UDT_CLASS:
mob->class_change(md, val);
@@ -19727,118 +20277,121 @@ static BUILDIN(setunitdata)
clif->changelook(bl, LOOK_WEAPON, val);
break;
case UDT_LOOKDIR:
- unit->setdir(bl, (uint8) val);
+ unit->set_dir(bl, (enum unit_dir)val);
break;
case UDT_CANMOVETICK:
md->ud.canmove_tick = val;
break;
case UDT_STR:
- md->status.str = (unsigned short) val;
+ md->status.str = (unsigned short)val;
status->calc_misc(bl, &md->status, md->level);
break;
case UDT_AGI:
- md->status.agi = (unsigned short) val;
+ md->status.agi = (unsigned short)val;
status->calc_misc(bl, &md->status, md->level);
break;
case UDT_VIT:
- md->status.vit = (unsigned short) val;
+ md->status.vit = (unsigned short)val;
status->calc_misc(bl, &md->status, md->level);
break;
case UDT_INT:
- md->status.int_ = (unsigned short) val;
+ md->status.int_ = (unsigned short)val;
status->calc_misc(bl, &md->status, md->level);
break;
case UDT_DEX:
- md->status.dex = (unsigned short) val;
+ md->status.dex = (unsigned short)val;
status->calc_misc(bl, &md->status, md->level);
break;
case UDT_LUK:
- md->status.luk = (unsigned short) val;
+ md->status.luk = (unsigned short)val;
status->calc_misc(bl, &md->status, md->level);
break;
case UDT_ATKRANGE:
- md->status.rhw.range = (unsigned short) val;
+ md->status.rhw.range = (unsigned short)val;
break;
case UDT_ATKMIN:
- md->status.rhw.atk = (unsigned short) val;
+ md->status.rhw.atk = (unsigned short)val;
break;
case UDT_ATKMAX:
- md->status.rhw.atk2 = (unsigned short) val;
+ md->status.rhw.atk2 = (unsigned short)val;
break;
case UDT_MATKMIN:
- md->status.matk_min = (unsigned short) val;
+ md->status.matk_min = (unsigned short)val;
break;
case UDT_MATKMAX:
- md->status.matk_max = (unsigned short) val;
+ md->status.matk_max = (unsigned short)val;
break;
case UDT_DEF:
- md->status.def = (defType) val;
+ md->status.def = (defType)val;
break;
case UDT_MDEF:
- md->status.mdef = (defType) val;
+ md->status.mdef = (defType)val;
break;
case UDT_HIT:
- md->status.hit = (short) val;
+ md->status.hit = (short)val;
break;
case UDT_FLEE:
- md->status.flee = (short) val;
+ md->status.flee = (short)val;
break;
case UDT_PDODGE:
- md->status.flee2 = (short) val;
+ md->status.flee2 = (short)val;
break;
case UDT_CRIT:
- md->status.cri = (short) val;
+ md->status.cri = (short)val;
break;
case UDT_RACE:
- md->status.race = (unsigned char) val;
+ md->status.race = (unsigned char)val;
break;
case UDT_ELETYPE:
- md->status.def_ele = (unsigned char) val;
+ md->status.def_ele = (unsigned char)val;
break;
case UDT_ELELEVEL:
- md->status.ele_lv = (unsigned char) val;
+ md->status.ele_lv = (unsigned char)val;
break;
case UDT_AMOTION:
- md->status.amotion = (unsigned short) val;
+ md->status.amotion = (unsigned short)val;
break;
case UDT_ADELAY:
- md->status.adelay = (unsigned short) val;
+ md->status.adelay = (unsigned short)val;
break;
case UDT_DMOTION:
- md->status.dmotion = (unsigned short) val;
+ md->status.dmotion = (unsigned short)val;
break;
case UDT_DAMAGE_TAKEN_RATE:
- md->dmg_taken_rate = (int) val;
+ md->dmg_taken_rate = (int)val;
break;
default:
- ShowWarning("buildin_setunitdata: Invalid data type '%s' for mob unit.\n", udtype);
+ ShowWarning("buildin_setunitdata: Invalid data type '%d' for mob unit.\n", type);
script_pushint(st, 0);
return false;
}
- }
+
break;
- case BL_HOM:
- {
+ }
+ case BL_HOM: {
struct homun_data *hd = BL_UCAST(BL_HOM, bl);
- nullpo_retr(false, hd);
+ if (hd == NULL) {
+ ShowError("buildin_setunitdata: Can't find Homunculus for GID %d!\n", script_getnum(st, 2));
+ script_pushint(st, 0);
+ return false;
+ }
- switch (type)
- {
+ switch (type) {
case UDT_SIZE:
- hd->base_status.size = (unsigned char) val;
+ hd->base_status.size = (unsigned char)val;
break;
case UDT_LEVEL:
- hd->homunculus.level = (short) val;
+ hd->homunculus.level = (short)val;
break;
case UDT_HP:
- status->set_hp(bl, (unsigned int) val, STATUS_HEAL_DEFAULT);
+ status->set_hp(bl, (unsigned int)val, STATUS_HEAL_DEFAULT);
break;
case UDT_MAXHP:
hd->homunculus.max_hp = val;
break;
case UDT_SP:
- status->set_sp(bl, (unsigned int) val, STATUS_HEAL_DEFAULT);
+ status->set_sp(bl, (unsigned int)val, STATUS_HEAL_DEFAULT);
break;
case UDT_MAXSP:
hd->homunculus.max_sp = val;
@@ -19848,634 +20401,645 @@ static BUILDIN(setunitdata)
hd->master = tsd;
break;
case UDT_MAPIDXY:
- unit->warp(bl, (short) val, (short) val2, (short) val3, CLR_TELEPORT);
+ unit->warp(bl, (short)val, (short)val2, (short)val3, CLR_TELEPORT);
break;
case UDT_WALKTOXY:
- if (!unit->walktoxy(bl, (short) val, (short) val2, 2))
- unit->movepos(bl, (short) val, (short) val2, 0, 0);
+ if (unit->walk_toxy(bl, (short)val, (short)val2, 2) != 0)
+ unit->movepos(bl, (short)val, (short)val2, 0, 0);
break;
case UDT_SPEED:
- hd->base_status.speed = (unsigned short) val;
+ hd->base_status.speed = (unsigned short)val;
status->calc_misc(bl, &hd->base_status, hd->homunculus.level);
break;
case UDT_LOOKDIR:
- unit->setdir(bl, (unsigned char) val);
+ unit->set_dir(bl, (enum unit_dir)val);
break;
case UDT_CANMOVETICK:
hd->ud.canmove_tick = val;
break;
case UDT_STR:
- hd->base_status.str = (unsigned short) val;
+ hd->base_status.str = (unsigned short)val;
status->calc_misc(bl, &hd->base_status, hd->homunculus.level);
break;
case UDT_AGI:
- hd->base_status.agi = (unsigned short) val;
+ hd->base_status.agi = (unsigned short)val;
status->calc_misc(bl, &hd->base_status, hd->homunculus.level);
break;
case UDT_VIT:
- hd->base_status.vit = (unsigned short) val;
+ hd->base_status.vit = (unsigned short)val;
status->calc_misc(bl, &hd->base_status, hd->homunculus.level);
break;
case UDT_INT:
- hd->base_status.int_ = (unsigned short) val;
+ hd->base_status.int_ = (unsigned short)val;
status->calc_misc(bl, &hd->base_status, hd->homunculus.level);
break;
case UDT_DEX:
- hd->base_status.dex = (unsigned short) val;
+ hd->base_status.dex = (unsigned short)val;
status->calc_misc(bl, &hd->base_status, hd->homunculus.level);
break;
case UDT_LUK:
- hd->base_status.luk = (unsigned short) val;
+ hd->base_status.luk = (unsigned short)val;
status->calc_misc(bl, &hd->base_status, hd->homunculus.level);
break;
case UDT_ATKRANGE:
- hd->base_status.rhw.range = (unsigned short) val;
+ hd->base_status.rhw.range = (unsigned short)val;
break;
case UDT_ATKMIN:
- hd->base_status.rhw.atk = (unsigned short) val;
+ hd->base_status.rhw.atk = (unsigned short)val;
break;
case UDT_ATKMAX:
- hd->base_status.rhw.atk2 = (unsigned short) val;
+ hd->base_status.rhw.atk2 = (unsigned short)val;
break;
case UDT_MATKMIN:
- hd->base_status.matk_min = (unsigned short) val;
+ hd->base_status.matk_min = (unsigned short)val;
break;
case UDT_MATKMAX:
- hd->base_status.matk_max = (unsigned short) val;
+ hd->base_status.matk_max = (unsigned short)val;
break;
case UDT_DEF:
- hd->base_status.def = (defType) val;
+ hd->base_status.def = (defType)val;
break;
case UDT_MDEF:
- hd->base_status.mdef = (defType) val;
+ hd->base_status.mdef = (defType)val;
break;
case UDT_HIT:
- hd->base_status.hit = (short) val;
+ hd->base_status.hit = (short)val;
break;
case UDT_FLEE:
- hd->base_status.flee = (short) val;
+ hd->base_status.flee = (short)val;
break;
case UDT_PDODGE:
- hd->base_status.flee2 = (short) val;
+ hd->base_status.flee2 = (short)val;
break;
case UDT_CRIT:
- hd->base_status.cri = (short) val;
+ hd->base_status.cri = (short)val;
break;
case UDT_RACE:
- hd->base_status.race = (unsigned char) val;
+ hd->base_status.race = (unsigned char)val;
break;
case UDT_ELETYPE:
- hd->base_status.def_ele = (unsigned char) val;
+ hd->base_status.def_ele = (unsigned char)val;
break;
case UDT_ELELEVEL:
- hd->base_status.ele_lv = (unsigned char) val;
+ hd->base_status.ele_lv = (unsigned char)val;
break;
case UDT_AMOTION:
- hd->base_status.amotion = (unsigned short) val;
+ hd->base_status.amotion = (unsigned short)val;
break;
case UDT_ADELAY:
- hd->base_status.adelay = (unsigned short) val;
+ hd->base_status.adelay = (unsigned short)val;
break;
case UDT_DMOTION:
- hd->base_status.dmotion = (unsigned short) val;
+ hd->base_status.dmotion = (unsigned short)val;
break;
case UDT_HUNGER:
- hd->homunculus.hunger = (short) val;
+ hd->homunculus.hunger = (short)val;
clif->send_homdata(hd->master, SP_HUNGRY, hd->homunculus.hunger);
break;
case UDT_INTIMACY:
- homun->add_intimacy(hd, (unsigned int) val);
+ homun->add_intimacy(hd, (unsigned int)val);
clif->send_homdata(hd->master, SP_INTIMATE, hd->homunculus.intimacy / 100);
break;
default:
- ShowWarning("buildin_setunitdata: Invalid data type '%s' for homunculus unit.\n", udtype);
+ ShowWarning("buildin_setunitdata: Invalid data type '%d' for homunculus unit.\n", type);
script_pushint(st, 0);
return false;
}
- clif->send_homdata(hd->master, SP_ACK, 0); // send homun data
- }
+ clif->send_homdata(hd->master, SP_ACK, 0); // Send Homunculus data.
break;
- case BL_PET:
- {
+ }
+ case BL_PET: {
struct pet_data *pd = BL_UCAST(BL_PET, bl);
- nullpo_retr(false, pd);
+ if (pd == NULL) {
+ ShowError("buildin_setunitdata: Can't find pet for GID %d!\n", script_getnum(st, 2));
+ script_pushint(st, 0);
+ return false;
+ }
- switch (type)
- {
+ switch (type) {
case UDT_SIZE:
- pd->status.size = (unsigned char) val;
+ pd->status.size = (unsigned char)val;
break;
case UDT_LEVEL:
- pd->pet.level = (short) val;
+ pd->pet.level = (short)val;
+ if (pd->msd != NULL)
+ clif->send_petstatus(pd->msd); // Send pet data.
break;
case UDT_HP:
- status->set_hp(bl, (unsigned int) val, STATUS_HEAL_DEFAULT);
+ status->set_hp(bl, (unsigned int)val, STATUS_HEAL_DEFAULT);
break;
case UDT_MAXHP:
- pd->status.max_hp = (unsigned int) val;
+ pd->status.max_hp = (unsigned int)val;
break;
case UDT_SP:
- status->set_sp(bl, (unsigned int) val, STATUS_HEAL_DEFAULT);
+ status->set_sp(bl, (unsigned int)val, STATUS_HEAL_DEFAULT);
break;
case UDT_MAXSP:
- pd->status.max_sp = (unsigned int) val;
+ pd->status.max_sp = (unsigned int)val;
break;
case UDT_MASTERAID:
pd->pet.account_id = val;
pd->msd = tsd;
break;
case UDT_MAPIDXY:
- unit->warp(bl, (short) val, (short) val2, (short) val3, CLR_TELEPORT);
+ unit->warp(bl, (short)val, (short)val2, (short)val3, CLR_TELEPORT);
break;
case UDT_WALKTOXY:
- if (!unit->walktoxy(bl, (short) val, (short) val2, 2))
- unit->movepos(bl, (short) val, (short) val2, 0, 0);
+ if (unit->walk_toxy(bl, (short)val, (short)val2, 2) != 0)
+ unit->movepos(bl, (short)val, (short)val2, 0, 0);
break;
case UDT_SPEED:
- pd->status.speed = (unsigned short) val;
+ pd->status.speed = (unsigned short)val;
status->calc_misc(bl, &pd->status, pd->pet.level);
break;
case UDT_LOOKDIR:
- unit->setdir(bl, (unsigned char) val);
+ unit->set_dir(bl, (enum unit_dir)val);
break;
case UDT_CANMOVETICK:
pd->ud.canmove_tick = val;
break;
case UDT_STR:
- pd->status.str = (unsigned short) val;
+ pd->status.str = (unsigned short)val;
status->calc_misc(bl, &pd->status, pd->pet.level);
break;
case UDT_AGI:
- pd->status.agi = (unsigned short) val;
+ pd->status.agi = (unsigned short)val;
status->calc_misc(bl, &pd->status, pd->pet.level);
break;
case UDT_VIT:
- pd->status.vit = (unsigned short) val;
+ pd->status.vit = (unsigned short)val;
status->calc_misc(bl, &pd->status, pd->pet.level);
break;
case UDT_INT:
- pd->status.int_ = (unsigned short) val;
+ pd->status.int_ = (unsigned short)val;
status->calc_misc(bl, &pd->status, pd->pet.level);
break;
case UDT_DEX:
- pd->status.dex = (unsigned short) val;
+ pd->status.dex = (unsigned short)val;
status->calc_misc(bl, &pd->status, pd->pet.level);
break;
case UDT_LUK:
- pd->status.luk = (unsigned short) val;
+ pd->status.luk = (unsigned short)val;
status->calc_misc(bl, &pd->status, pd->pet.level);
break;
case UDT_ATKRANGE:
- pd->status.rhw.range = (unsigned short) val;
+ pd->status.rhw.range = (unsigned short)val;
break;
case UDT_ATKMIN:
- pd->status.rhw.atk = (unsigned short) val;
+ pd->status.rhw.atk = (unsigned short)val;
break;
case UDT_ATKMAX:
- pd->status.rhw.atk2 = (unsigned short) val;
+ pd->status.rhw.atk2 = (unsigned short)val;
break;
case UDT_MATKMIN:
- pd->status.matk_min = (unsigned short) val;
+ pd->status.matk_min = (unsigned short)val;
break;
case UDT_MATKMAX:
- pd->status.matk_max = (unsigned short) val;
+ pd->status.matk_max = (unsigned short)val;
break;
case UDT_DEF:
- pd->status.def = (defType) val;
+ pd->status.def = (defType)val;
break;
case UDT_MDEF:
- pd->status.mdef = (defType) val;
+ pd->status.mdef = (defType)val;
break;
case UDT_HIT:
- pd->status.hit = (short) val;
+ pd->status.hit = (short)val;
break;
case UDT_FLEE:
- pd->status.flee = (short) val;
+ pd->status.flee = (short)val;
break;
case UDT_PDODGE:
- pd->status.flee2 = (short) val;
+ pd->status.flee2 = (short)val;
break;
case UDT_CRIT:
- pd->status.cri = (short) val;
+ pd->status.cri = (short)val;
break;
case UDT_RACE:
- pd->status.race = (unsigned char) val;
+ pd->status.race = (unsigned char)val;
break;
case UDT_ELETYPE:
- pd->status.def_ele = (unsigned char) val;
+ pd->status.def_ele = (unsigned char)val;
break;
case UDT_ELELEVEL:
- pd->status.ele_lv = (unsigned char) val;
+ pd->status.ele_lv = (unsigned char)val;
break;
case UDT_AMOTION:
- pd->status.amotion = (unsigned short) val;
+ pd->status.amotion = (unsigned short)val;
break;
case UDT_ADELAY:
- pd->status.adelay = (unsigned short) val;
+ pd->status.adelay = (unsigned short)val;
break;
case UDT_DMOTION:
- pd->status.dmotion = (unsigned short) val;
+ pd->status.dmotion = (unsigned short)val;
break;
case UDT_INTIMACY:
pet->set_intimate(pd, val);
- clif->send_petdata(pd->msd, pd, 1, pd->pet.intimate);
break;
case UDT_HUNGER:
- pd->pet.hungry = (short) val;
+ pet->set_hunger(pd, val);
break;
default:
- ShowWarning("buildin_setunitdata: Invalid data type '%s' for pet unit.\n", udtype);
+ ShowWarning("buildin_setunitdata: Invalid data type '%d' for pet unit.\n", type);
script_pushint(st, 0);
return false;
}
- clif->send_petstatus(pd->msd); // send pet data
- }
+
break;
- case BL_MER:
- {
+ }
+ case BL_MER: {
struct mercenary_data *mc = BL_UCAST(BL_MER, bl);
- nullpo_retr(false, mc);
+ if (mc == NULL) {
+ ShowError("buildin_setunitdata: Can't find mercenary for GID %d!\n", script_getnum(st, 2));
+ script_pushint(st, 0);
+ return false;
+ }
- switch (type)
- {
+ switch (type) {
case UDT_SIZE:
- mc->base_status.size = (unsigned char) val;
+ mc->base_status.size = (unsigned char)val;
break;
case UDT_HP:
- status->set_hp(bl, (unsigned int) val, STATUS_HEAL_DEFAULT);
+ status->set_hp(bl, (unsigned int)val, STATUS_HEAL_DEFAULT);
break;
case UDT_MAXHP:
- mc->base_status.max_hp = (unsigned int) val;
+ mc->base_status.max_hp = (unsigned int)val;
break;
case UDT_SP:
- status->set_sp(bl, (unsigned int) val, STATUS_HEAL_DEFAULT);
+ status->set_sp(bl, (unsigned int)val, STATUS_HEAL_DEFAULT);
break;
case UDT_MAXSP:
- mc->base_status.max_sp = (unsigned int) val;
+ mc->base_status.max_sp = (unsigned int)val;
break;
case UDT_MASTERCID:
mc->mercenary.char_id = val;
break;
case UDT_MAPIDXY:
- unit->warp(bl, (short) val, (short) val2, (short) val3, CLR_TELEPORT);
+ unit->warp(bl, (short)val, (short)val2, (short)val3, CLR_TELEPORT);
break;
case UDT_WALKTOXY:
- if (!unit->walktoxy(bl, (short) val, (short) val2, 2))
- unit->movepos(bl, (short) val, (short) val2, 0, 0);
+ if (unit->walk_toxy(bl, (short)val, (short)val2, 2) != 0)
+ unit->movepos(bl, (short)val, (short)val2, 0, 0);
break;
case UDT_SPEED:
- mc->base_status.size = (unsigned char) val;
+ mc->base_status.size = (unsigned char)val;
status->calc_misc(bl, &mc->base_status, mc->db->lv);
break;
case UDT_LOOKDIR:
- unit->setdir(bl, (unsigned char) val);
+ unit->set_dir(bl, (enum unit_dir)val);
break;
case UDT_CANMOVETICK:
mc->ud.canmove_tick = val;
break;
case UDT_STR:
- mc->base_status.str = (unsigned short) val;
+ mc->base_status.str = (unsigned short)val;
status->calc_misc(bl, &mc->base_status, mc->db->lv);
break;
case UDT_AGI:
- mc->base_status.agi = (unsigned short) val;
+ mc->base_status.agi = (unsigned short)val;
status->calc_misc(bl, &mc->base_status, mc->db->lv);
break;
case UDT_VIT:
- mc->base_status.vit = (unsigned short) val;
+ mc->base_status.vit = (unsigned short)val;
status->calc_misc(bl, &mc->base_status, mc->db->lv);
break;
case UDT_INT:
- mc->base_status.int_ = (unsigned short) val;
+ mc->base_status.int_ = (unsigned short)val;
status->calc_misc(bl, &mc->base_status, mc->db->lv);
break;
case UDT_DEX:
- mc->base_status.dex = (unsigned short) val;
+ mc->base_status.dex = (unsigned short)val;
status->calc_misc(bl, &mc->base_status, mc->db->lv);
break;
case UDT_LUK:
- mc->base_status.luk = (unsigned short) val;
+ mc->base_status.luk = (unsigned short)val;
status->calc_misc(bl, &mc->base_status, mc->db->lv);
break;
case UDT_ATKRANGE:
- mc->base_status.rhw.range = (unsigned short) val;
+ mc->base_status.rhw.range = (unsigned short)val;
break;
case UDT_ATKMIN:
- mc->base_status.rhw.atk = (unsigned short) val;
+ mc->base_status.rhw.atk = (unsigned short)val;
break;
case UDT_ATKMAX:
- mc->base_status.rhw.atk2 = (unsigned short) val;
+ mc->base_status.rhw.atk2 = (unsigned short)val;
break;
case UDT_MATKMIN:
- mc->base_status.matk_min = (unsigned short) val;
+ mc->base_status.matk_min = (unsigned short)val;
break;
case UDT_MATKMAX:
- mc->base_status.matk_max = (unsigned short) val;
+ mc->base_status.matk_max = (unsigned short)val;
break;
case UDT_DEF:
- mc->base_status.def = (defType) val;
+ mc->base_status.def = (defType)val;
break;
case UDT_MDEF:
- mc->base_status.mdef = (defType) val;
+ mc->base_status.mdef = (defType)val;
break;
case UDT_HIT:
- mc->base_status.hit = (short) val;
+ mc->base_status.hit = (short)val;
break;
case UDT_FLEE:
- mc->base_status.flee = (short) val;
+ mc->base_status.flee = (short)val;
break;
case UDT_PDODGE:
- mc->base_status.flee2 = (short) val;
+ mc->base_status.flee2 = (short)val;
break;
case UDT_CRIT:
- mc->base_status.cri = (short) val;
+ mc->base_status.cri = (short)val;
break;
case UDT_RACE:
- mc->base_status.race = (unsigned char) val;
+ mc->base_status.race = (unsigned char)val;
break;
case UDT_ELETYPE:
- mc->base_status.def_ele = (unsigned char) val;
+ mc->base_status.def_ele = (unsigned char)val;
break;
case UDT_ELELEVEL:
- mc->base_status.ele_lv = (unsigned char) val;
+ mc->base_status.ele_lv = (unsigned char)val;
break;
case UDT_AMOTION:
- mc->base_status.amotion = (unsigned short) val;
+ mc->base_status.amotion = (unsigned short)val;
break;
case UDT_ADELAY:
- mc->base_status.adelay = (unsigned short) val;
+ mc->base_status.adelay = (unsigned short)val;
break;
case UDT_DMOTION:
- mc->base_status.dmotion = (unsigned short) val;
+ mc->base_status.dmotion = (unsigned short)val;
break;
case UDT_MERC_KILLCOUNT:
- mc->mercenary.kill_count = (unsigned int) val;
+ mc->mercenary.kill_count = (unsigned int)val;
break;
case UDT_LIFETIME:
- mc->mercenary.life_time = (unsigned int) val;
+ mc->mercenary.life_time = (unsigned int)val;
break;
default:
- ShowWarning("buildin_setunitdata: Invalid data type '%s' for mercenary unit.\n", udtype);
+ ShowWarning("buildin_setunitdata: Invalid data type '%d' for mercenary unit.\n", type);
script_pushint(st, 0);
return false;
}
+ // Send mercenary data.
clif->mercenary_info(map->charid2sd(mc->mercenary.char_id));
clif->mercenary_skillblock(map->charid2sd(mc->mercenary.char_id));
- }
break;
- case BL_ELEM:
- {
+ }
+ case BL_ELEM: {
struct elemental_data *ed = BL_UCAST(BL_ELEM, bl);
- nullpo_retr(false, ed);
+ if (ed == NULL) {
+ ShowError("buildin_setunitdata: Can't find Elemental for GID %d!\n", script_getnum(st, 2));
+ script_pushint(st, 0);
+ return false;
+ }
- switch (type)
- {
+ switch (type) {
case UDT_SIZE:
- ed->base_status.size = (unsigned char) val;
+ ed->base_status.size = (unsigned char)val;
break;
case UDT_HP:
- status->set_hp(bl, (unsigned int) val, STATUS_HEAL_DEFAULT);
+ status->set_hp(bl, (unsigned int)val, STATUS_HEAL_DEFAULT);
break;
case UDT_MAXHP:
- ed->base_status.max_hp = (unsigned int) val;
+ ed->base_status.max_hp = (unsigned int)val;
break;
case UDT_SP:
- status->set_sp(bl, (unsigned int) val, STATUS_HEAL_DEFAULT);
+ status->set_sp(bl, (unsigned int)val, STATUS_HEAL_DEFAULT);
break;
case UDT_MAXSP:
- ed->base_status.max_sp = (unsigned int) val;
+ ed->base_status.max_sp = (unsigned int)val;
break;
case UDT_MASTERCID:
ed->elemental.char_id = val;
break;
case UDT_MAPIDXY:
- unit->warp(bl, (short) val, (short) val2, (short) val3, CLR_TELEPORT);
+ unit->warp(bl, (short)val, (short)val2, (short)val3, CLR_TELEPORT);
break;
case UDT_WALKTOXY:
- if (!unit->walktoxy(bl, (short) val, (short) val2, 2))
- unit->movepos(bl, (short) val, (short) val2, 0, 0);
+ if (unit->walk_toxy(bl, (short)val, (short)val2, 2) != 0)
+ unit->movepos(bl, (short)val, (short)val2, 0, 0);
break;
case UDT_SPEED:
- ed->base_status.speed = (unsigned short) val;
+ ed->base_status.speed = (unsigned short)val;
status->calc_misc(bl, &ed->base_status, ed->db->lv);
break;
case UDT_LOOKDIR:
- unit->setdir(bl, (unsigned char) val);
+ unit->set_dir(bl, (enum unit_dir)val);
break;
case UDT_CANMOVETICK:
ed->ud.canmove_tick = val;
break;
case UDT_STR:
- ed->base_status.str = (unsigned short) val;
+ ed->base_status.str = (unsigned short)val;
status->calc_misc(bl, &ed->base_status, ed->db->lv);
break;
case UDT_AGI:
- ed->base_status.agi = (unsigned short) val;
+ ed->base_status.agi = (unsigned short)val;
status->calc_misc(bl, &ed->base_status, ed->db->lv);
break;
case UDT_VIT:
- ed->base_status.vit = (unsigned short) val;
+ ed->base_status.vit = (unsigned short)val;
status->calc_misc(bl, &ed->base_status, ed->db->lv);
break;
case UDT_INT:
- ed->base_status.int_ = (unsigned short) val;
+ ed->base_status.int_ = (unsigned short)val;
status->calc_misc(bl, &ed->base_status, ed->db->lv);
break;
case UDT_DEX:
- ed->base_status.dex = (unsigned short) val;
+ ed->base_status.dex = (unsigned short)val;
status->calc_misc(bl, &ed->base_status, ed->db->lv);
break;
case UDT_LUK:
- ed->base_status.luk = (unsigned short) val;
+ ed->base_status.luk = (unsigned short)val;
status->calc_misc(bl, &ed->base_status, ed->db->lv);
break;
case UDT_ATKRANGE:
- ed->base_status.rhw.range = (unsigned short) val;
+ ed->base_status.rhw.range = (unsigned short)val;
break;
case UDT_ATKMIN:
- ed->base_status.rhw.atk = (unsigned short) val;
+ ed->base_status.rhw.atk = (unsigned short)val;
break;
case UDT_ATKMAX:
- ed->base_status.rhw.atk2 = (unsigned short) val;
+ ed->base_status.rhw.atk2 = (unsigned short)val;
break;
case UDT_MATKMIN:
- ed->base_status.matk_min = (unsigned short) val;
+ ed->base_status.matk_min = (unsigned short)val;
break;
case UDT_MATKMAX:
- ed->base_status.matk_max = (unsigned short) val;
+ ed->base_status.matk_max = (unsigned short)val;
break;
case UDT_DEF:
- ed->base_status.def = (defType) val;
+ ed->base_status.def = (defType)val;
break;
case UDT_MDEF:
- ed->base_status.mdef = (defType) val;
+ ed->base_status.mdef = (defType)val;
break;
case UDT_HIT:
- ed->base_status.hit = (short) val;
+ ed->base_status.hit = (short)val;
break;
case UDT_FLEE:
- ed->base_status.flee = (short) val;
+ ed->base_status.flee = (short)val;
break;
case UDT_PDODGE:
- ed->base_status.flee2 = (short) val;
+ ed->base_status.flee2 = (short)val;
break;
case UDT_CRIT:
- ed->base_status.cri = (short) val;
+ ed->base_status.cri = (short)val;
break;
case UDT_RACE:
- ed->base_status.race = (unsigned char) val;
+ ed->base_status.race = (unsigned char)val;
break;
case UDT_ELETYPE:
- ed->base_status.def_ele = (unsigned char) val;
+ ed->base_status.def_ele = (unsigned char)val;
break;
case UDT_ELELEVEL:
- ed->base_status.ele_lv = (unsigned char) val;
+ ed->base_status.ele_lv = (unsigned char)val;
break;
case UDT_AMOTION:
- ed->base_status.amotion = (unsigned short) val;
+ ed->base_status.amotion = (unsigned short)val;
break;
case UDT_ADELAY:
- ed->base_status.adelay = (unsigned short) val;
+ ed->base_status.adelay = (unsigned short)val;
break;
case UDT_DMOTION:
- ed->base_status.dmotion = (unsigned short) val;
+ ed->base_status.dmotion = (unsigned short)val;
break;
case UDT_LIFETIME:
ed->elemental.life_time = val;
break;
default:
- ShowWarning("buildin_setunitdata: Invalid data type '%s' for elemental unit.\n", udtype);
+ ShowWarning("buildin_setunitdata: Invalid data type '%d' for elemental unit.\n", type);
script_pushint(st, 0);
return false;
}
- clif->elemental_info(ed->master);
- }
+
+ clif->elemental_info(ed->master); // Send Elemental data.
break;
- case BL_NPC:
- {
+ }
+ case BL_NPC: {
struct npc_data *nd = BL_UCAST(BL_NPC, bl);
- nullpo_retr(false, nd);
+ if (nd == NULL) {
+ ShowError("buildin_setunitdata: Can't find NPC for GID %d!\n", script_getnum(st, 2));
+ script_pushint(st, 0);
+ return false;
+ }
- switch (type)
- {
+ switch (type) {
case UDT_SIZE:
- nd->status.size = (unsigned char) val;
+ nd->status.size = (unsigned char)val;
break;
case UDT_LEVEL:
- nd->level = (unsigned short) val;
+ nd->level = (unsigned short)val;
break;
case UDT_HP:
- status->set_hp(bl, (unsigned int) val, STATUS_HEAL_DEFAULT);
+ status->set_hp(bl, (unsigned int)val, STATUS_HEAL_DEFAULT);
break;
case UDT_MAXHP:
- nd->status.max_hp = (unsigned int) val;
+ nd->status.max_hp = (unsigned int)val;
break;
case UDT_SP:
- status->set_sp(bl, (unsigned int) val, STATUS_HEAL_DEFAULT);
+ status->set_sp(bl, (unsigned int)val, STATUS_HEAL_DEFAULT);
break;
case UDT_MAXSP:
- nd->status.max_sp = (unsigned int) val;
+ nd->status.max_sp = (unsigned int)val;
break;
case UDT_MAPIDXY:
- unit->warp(bl, (short) val, (short) val2, (short) val3, CLR_TELEPORT);
+ unit->warp(bl, (short)val, (short)val2, (short)val3, CLR_TELEPORT);
break;
case UDT_WALKTOXY:
- if (!unit->walktoxy(bl, (short) val, (short) val2, 2))
- unit->movepos(bl, (short) val, (short) val2, 0, 0);
+ if (unit->walk_toxy(bl, (short)val, (short)val2, 2) != 0)
+ unit->movepos(bl, (short)val, (short)val2, 0, 0);
break;
case UDT_CLASS:
- npc->setclass(nd, (short) val);
+ npc->setclass(nd, (short)val);
break;
case UDT_SPEED:
- nd->speed = (short) val;
+ nd->speed = (short)val;
status->calc_misc(bl, &nd->status, nd->level);
break;
case UDT_LOOKDIR:
- unit->setdir(bl, (unsigned char) val);
+ unit->set_dir(bl, (enum unit_dir)val);
break;
case UDT_STR:
- nd->status.str = (unsigned short) val;
+ nd->status.str = (unsigned short)val;
status->calc_misc(bl, &nd->status, nd->level);
break;
case UDT_AGI:
- nd->status.agi = (unsigned short) val;
+ nd->status.agi = (unsigned short)val;
status->calc_misc(bl, &nd->status, nd->level);
break;
case UDT_VIT:
- nd->status.vit = (unsigned short) val;
+ nd->status.vit = (unsigned short)val;
status->calc_misc(bl, &nd->status, nd->level);
break;
case UDT_INT:
- nd->status.int_ = (unsigned short) val;
+ nd->status.int_ = (unsigned short)val;
status->calc_misc(bl, &nd->status, nd->level);
break;
case UDT_DEX:
- nd->status.dex = (unsigned short) val;
+ nd->status.dex = (unsigned short)val;
status->calc_misc(bl, &nd->status, nd->level);
break;
case UDT_LUK:
- nd->status.luk = (unsigned short) val;
+ nd->status.luk = (unsigned short)val;
status->calc_misc(bl, &nd->status, nd->level);
break;
case UDT_STATPOINT:
- nd->stat_point = (unsigned short) val;
+ nd->stat_point = (unsigned short)val;
break;
case UDT_ATKRANGE:
- nd->status.rhw.range = (unsigned short) val;
+ nd->status.rhw.range = (unsigned short)val;
break;
case UDT_ATKMIN:
- nd->status.rhw.atk = (unsigned short) val;
+ nd->status.rhw.atk = (unsigned short)val;
break;
case UDT_ATKMAX:
- nd->status.rhw.atk2 = (unsigned short) val;
+ nd->status.rhw.atk2 = (unsigned short)val;
break;
case UDT_MATKMIN:
- nd->status.matk_min = (unsigned short) val;
+ nd->status.matk_min = (unsigned short)val;
break;
case UDT_MATKMAX:
- nd->status.matk_max = (unsigned short) val;
+ nd->status.matk_max = (unsigned short)val;
break;
case UDT_DEF:
- nd->status.def = (defType) val;
+ nd->status.def = (defType)val;
break;
case UDT_MDEF:
- nd->status.mdef = (defType) val;
+ nd->status.mdef = (defType)val;
break;
case UDT_HIT:
- nd->status.hit = (short) val;
+ nd->status.hit = (short)val;
break;
case UDT_FLEE:
- nd->status.flee = (short) val;
+ nd->status.flee = (short)val;
break;
case UDT_PDODGE:
- nd->status.flee2 = (short) val;
+ nd->status.flee2 = (short)val;
break;
case UDT_CRIT:
- nd->status.cri = (short) val;
+ nd->status.cri = (short)val;
break;
case UDT_RACE:
- nd->status.race = (unsigned char) val;
+ nd->status.race = (unsigned char)val;
break;
case UDT_ELETYPE:
- nd->status.def_ele = (unsigned char) val;
+ nd->status.def_ele = (unsigned char)val;
break;
case UDT_ELELEVEL:
- nd->status.ele_lv = (unsigned char) val;
+ nd->status.ele_lv = (unsigned char)val;
break;
case UDT_AMOTION:
- nd->status.amotion = (unsigned short) val;
+ nd->status.amotion = (unsigned short)val;
break;
case UDT_ADELAY:
- nd->status.adelay = (unsigned short) val;
+ nd->status.adelay = (unsigned short)val;
break;
case UDT_DMOTION:
- nd->status.dmotion = (unsigned short) val;
+ nd->status.dmotion = (unsigned short)val;
break;
case UDT_SEX:
nd->vd.sex = (char)val;
@@ -20512,19 +21076,21 @@ static BUILDIN(setunitdata)
clif->changelook(bl, LOOK_BODY2, val);
break;
default:
- ShowWarning("buildin_setunitdata: Invalid data type '%s' for NPC unit.\n", udtype);
+ ShowWarning("buildin_setunitdata: Invalid data type '%d' for NPC unit.\n", type);
script_pushint(st, 0);
return false;
}
- }
+
break;
+ }
default:
ShowError("buildin_setunitdata: Unknown object!\n");
script_pushint(st, 0);
return false;
- } // end of bl->type switch
+ } // End of bl->type switch.
script_pushint(st, 1);
+
return true;
}
@@ -21121,7 +21687,10 @@ static BUILDIN(unitwalk)
if (script_hasdata(st, 4)) {
int x = script_getnum(st, 3);
int y = script_getnum(st, 4);
- script_pushint(st, unit->walktoxy(bl, x, y, 0));// We'll use harder calculations.
+ if (unit->walk_toxy(bl, x, y, 0) == 0) // We'll use harder calculations.
+ script_pushint(st, 1);
+ else
+ script_pushint(st, 0);
}
else {
int target_id = script_getnum(st, 3);
@@ -21131,6 +21700,38 @@ static BUILDIN(unitwalk)
return true;
}
+/**
+ * Checks if a unit is walking.
+ *
+ * Returns 1 if unit is walking, 0 if unit is not walking and -1 on error.
+ *
+ * @code{.herc}
+ * unitiswalking({<GID>});
+ * @endcode
+ *
+ **/
+static BUILDIN(unitiswalking)
+{
+ int gid = script_hasdata(st, 2) ? script_getnum(st, 2) : st->rid;
+ struct block_list *bl = map->id2bl(gid);
+
+ if (bl == NULL) {
+ ShowWarning("buildin_unitiswalking: Error in finding object for GID %d!\n", gid);
+ script_pushint(st, -1);
+ return false;
+ }
+
+ if (unit->bl2ud(bl) == NULL) {
+ ShowWarning("buildin_unitiswalking: Error in finding unit_data for GID %d!\n", gid);
+ script_pushint(st, -1);
+ return false;
+ }
+
+ script_pushint(st, unit->is_walking(bl));
+
+ return true;
+}
+
/// Kills the unit
///
/// unitkill <unit_id>;
@@ -21364,7 +21965,10 @@ static BUILDIN(unitskilluseid)
} else {
status_calc_npc(nd, SCO_NONE);
}
+ } else if (bl->type == BL_PC) {
+ pc->autocast_clear(BL_UCAST(BL_PC, bl));
}
+
unit->skilluse_id(bl, target_id, skill_id, skill_lv);
}
@@ -21400,7 +22004,10 @@ static BUILDIN(unitskillusepos)
} else {
status_calc_npc(nd, SCO_NONE);
}
+ } else if (bl->type == BL_PC) {
+ pc->autocast_clear(BL_UCAST(BL_PC, bl));
}
+
unit->skilluse_pos(bl, skill_x, skill_y, skill_id, skill_lv);
}
@@ -21956,12 +22563,13 @@ static BUILDIN(setquestinfo)
return false;
}
- qi = &VECTOR_LAST(nd->qi_data);
- if (qi == NULL) {
+ if (VECTOR_LENGTH(nd->qi_data) == 0) {
ShowWarning("buildin_setquestinfo: no valide questinfo data has been found for this npc.\n");
return false;
}
+ qi = &VECTOR_LAST(nd->qi_data);
+
switch (type) {
case QINFO_JOB:
{
@@ -23250,7 +23858,6 @@ static BUILDIN(progressbar_unit)
}
static BUILDIN(pushpc)
{
- uint8 dir;
int cells, dx, dy;
struct map_session_data* sd;
@@ -23259,14 +23866,14 @@ static BUILDIN(pushpc)
return true;
}
- dir = script_getnum(st,2);
- cells = script_getnum(st,3);
+ enum unit_dir dir = script_getnum(st, 2);
+ cells = script_getnum(st,3);
- if (dir > 7) {
+ if (dir >= UNIT_DIR_MAX) {
ShowWarning("buildin_pushpc: Invalid direction %d specified.\n", dir);
script->reportsrc(st);
- dir%= 8; // trim spin-over
+ dir %= UNIT_DIR_MAX; // trim spin-over
}
if(!cells)
@@ -23275,10 +23882,11 @@ static BUILDIN(pushpc)
}
else if(cells<0)
{// pushing backwards
- dir = (dir+4)%8; // turn around
- cells = -cells;
+ dir = unit_get_opposite_dir(dir);
+ cells = -cells;
}
+ Assert_retr(false, dir >= UNIT_DIR_FIRST && dir < UNIT_DIR_MAX);
dx = dirx[dir];
dy = diry[dir];
@@ -26688,8 +27296,8 @@ static void script_parse_builtin(void)
BUILDIN_DEF(delitem,"vi?"),
BUILDIN_DEF(delitem2,"viiiiiiii?"),
BUILDIN_DEF(delitemidx, "i??"),
- BUILDIN_DEF2(enableitemuse,"enable_items",""),
- BUILDIN_DEF2(disableitemuse,"disable_items",""),
+ BUILDIN_DEF2(enableitemuse, "enable_items", "?"),
+ BUILDIN_DEF2(disableitemuse, "disable_items", "?"),
BUILDIN_DEF(cutin,"si"),
BUILDIN_DEF(viewpoint,"iiiii"),
BUILDIN_DEF(heal,"ii"),
@@ -26794,6 +27402,7 @@ static void script_parse_builtin(void)
BUILDIN_DEF(detachnpctimer,"?"), // detached the player id from the npc timer [Celest]
BUILDIN_DEF(playerattached,""), // returns id of the current attached player. [Skotlex]
BUILDIN_DEF(mobattached, ""),
+ BUILDIN_DEF(loudhailer, "s?"),
BUILDIN_DEF(announce,"si?????"),
BUILDIN_DEF(mapannounce,"ssi?????"),
BUILDIN_DEF(areaannounce,"siiiisi?????"),
@@ -26970,7 +27579,7 @@ static void script_parse_builtin(void)
BUILDIN_DEF(setnpcdisplay,"sv??"),
BUILDIN_DEF(compare,"ss"), // Lordalfa - To bring strstr to scripting Engine.
BUILDIN_DEF(strcmp,"ss"),
- BUILDIN_DEF(getiteminfo,"ii"), //[Lupus] returns Items Buy / sell Price, etc info
+ BUILDIN_DEF(getiteminfo,"vi"), //[Lupus] returns Items Buy / sell Price, etc info
BUILDIN_DEF(setiteminfo,"iii"), //[Lupus] set Items Buy / sell Price, etc info
BUILDIN_DEF(getequipcardid,"ii"), //[Lupus] returns CARD ID or other info from CARD slot N of equipped item
BUILDIN_DEF(getequippedoptioninfo, "i"),
@@ -27020,8 +27629,8 @@ static void script_parse_builtin(void)
BUILDIN_DEF(pcfollow,"ii"),
BUILDIN_DEF(pcstopfollow,"i"),
BUILDIN_DEF_DEPRECATED(pcblockmove,"ii"), // Deprecated 2018-05-04
- BUILDIN_DEF(setpcblock, "ii"),
- BUILDIN_DEF(checkpcblock, ""),
+ BUILDIN_DEF(setpcblock, "ii?"),
+ BUILDIN_DEF(checkpcblock, "?"),
// <--- [zBuffer] List of player cont commands
// [zBuffer] List of mob control commands --->
BUILDIN_DEF(getunittype,"i"),
@@ -27033,6 +27642,7 @@ static void script_parse_builtin(void)
BUILDIN_DEF(getunittitle,"i"),
BUILDIN_DEF(setunittitle,"is"),
BUILDIN_DEF(unitwalk,"ii?"),
+ BUILDIN_DEF(unitiswalking, "?"),
BUILDIN_DEF(unitkill,"i"),
BUILDIN_DEF(unitwarp,"isii"),
BUILDIN_DEF(unitattack,"iv?"),
@@ -27259,6 +27869,8 @@ static void script_parse_builtin(void)
BUILDIN_DEF(identify, "i"),
BUILDIN_DEF(identifyidx, "i"),
BUILDIN_DEF(openlapineddukddakboxui, "i"),
+
+ BUILDIN_DEF(callfunctionofnpc, "vs*"),
};
int i, len = ARRAYLENGTH(BUILDIN);
RECREATE(script->buildin, char *, script->buildin_count + len); // Pre-alloc to speed up
@@ -27270,7 +27882,7 @@ static void script_parse_builtin(void)
#undef BUILDIN_DEF
#undef BUILDIN_DEF2
-static void script_label_add(int key, int pos)
+static void script_label_add(int key, int pos, enum script_label_flags flags)
{
int idx = script->label_count;
@@ -27281,6 +27893,7 @@ static void script_label_add(int key, int pos)
script->labels[idx].key = key;
script->labels[idx].pos = pos;
+ script->labels[idx].flags = flags;
script->label_count++;
}
@@ -27615,6 +28228,9 @@ static void script_hardcoded_constants(void)
script->set_constant("ITEMINFO_ITEM_USAGE_FLAG", ITEMINFO_ITEM_USAGE_FLAG, false, false);
script->set_constant("ITEMINFO_ITEM_USAGE_OVERRIDE", ITEMINFO_ITEM_USAGE_OVERRIDE, false, false);
script->set_constant("ITEMINFO_GM_LV_TRADE_OVERRIDE", ITEMINFO_GM_LV_TRADE_OVERRIDE, false, false);
+ script->set_constant("ITEMINFO_ID", ITEMINFO_ID, false, false);
+ script->set_constant("ITEMINFO_AEGISNAME", ITEMINFO_AEGISNAME, false, false);
+ script->set_constant("ITEMINFO_NAME", ITEMINFO_NAME, false, false);
script->constdb_comment("getmercinfo options");
script->set_constant("MERCINFO_ID,", MERCINFO_ID, false, false);
@@ -27642,6 +28258,23 @@ static void script_hardcoded_constants(void)
script->set_constant("PETINFO_EVO_EGGID", PETINFO_EVO_EGGID, false, false);
script->set_constant("PETINFO_AUTOFEED", PETINFO_AUTOFEED, false, false);
+ script->constdb_comment("Pet hunger levels");
+ script->set_constant("PET_HUNGER_STARVING", PET_HUNGER_STARVING, false, false);
+ script->set_constant("PET_HUNGER_VERY_HUNGRY", PET_HUNGER_VERY_HUNGRY, false, false);
+ script->set_constant("PET_HUNGER_HUNGRY", PET_HUNGER_HUNGRY, false, false);
+ script->set_constant("PET_HUNGER_NEUTRAL", PET_HUNGER_NEUTRAL, false, false);
+ script->set_constant("PET_HUNGER_SATISFIED", PET_HUNGER_SATISFIED, false, false);
+ script->set_constant("PET_HUNGER_STUFFED", PET_HUNGER_STUFFED, false, false);
+
+ script->constdb_comment("Pet intimacy levels");
+ script->set_constant("PET_INTIMACY_NONE", PET_INTIMACY_NONE, false, false);
+ script->set_constant("PET_INTIMACY_AWKWARD", PET_INTIMACY_AWKWARD, false, false);
+ script->set_constant("PET_INTIMACY_SHY", PET_INTIMACY_SHY, false, false);
+ script->set_constant("PET_INTIMACY_NEUTRAL", PET_INTIMACY_NEUTRAL, false, false);
+ script->set_constant("PET_INTIMACY_CORDIAL", PET_INTIMACY_CORDIAL, false, false);
+ script->set_constant("PET_INTIMACY_LOYAL", PET_INTIMACY_LOYAL, false, false);
+ script->set_constant("PET_INTIMACY_MAX", PET_INTIMACY_MAX, false, false);
+
script->constdb_comment("monster skill states");
script->set_constant("MSS_ANY", MSS_ANY, false, false);
script->set_constant("MSS_IDLE", MSS_IDLE, false, false);
@@ -27679,6 +28312,7 @@ static void script_hardcoded_constants(void)
script->set_constant("MSC_MASTERATTACKED", MSC_MASTERATTACKED, false, false);
script->set_constant("MSC_ALCHEMIST", MSC_ALCHEMIST, false, false);
script->set_constant("MSC_SPAWN", MSC_SPAWN, false, false);
+ script->set_constant("MSC_MAGICATTACKED", MSC_MAGICATTACKED, false, false);
script->constdb_comment("monster skill targets");
script->set_constant("MST_TARGET", MST_TARGET, false, false);
@@ -27696,6 +28330,11 @@ static void script_hardcoded_constants(void)
script->set_constant("MST_AROUND4", MST_AROUND4, false, false);
script->set_constant("MST_AROUND", MST_AROUND , false, false);
+ script->constdb_comment("Monster group constants");
+ script->set_constant("ALL_MOBS_NONBOSS", ALL_MOBS_NONBOSS, false, false);
+ script->set_constant("ALL_MOBS_BOSS", ALL_MOBS_BOSS, false, false);
+ script->set_constant("ALL_MOBS", ALL_MOBS, false, false);
+
script->constdb_comment("pc block constants, use with *setpcblock* and *checkpcblock*");
script->set_constant("PCBLOCK_NONE", PCBLOCK_NONE, false, false);
script->set_constant("PCBLOCK_MOVE", PCBLOCK_MOVE, false, false);
@@ -27708,6 +28347,16 @@ static void script_hardcoded_constants(void)
script->set_constant("PCBLOCK_COMMANDS", PCBLOCK_COMMANDS, false, false);
script->set_constant("PCBLOCK_NPC", PCBLOCK_NPC, false, false);
+ script->constdb_comment("NPC item action constants");
+ script->set_constant("ITEMENABLEDNPC_NONE", ITEMENABLEDNPC_NONE, false, false);
+ script->set_constant("ITEMENABLEDNPC_EQUIP", ITEMENABLEDNPC_EQUIP, false, false);
+ script->set_constant("ITEMENABLEDNPC_CONSUME", ITEMENABLEDNPC_CONSUME, false, false);
+
+ script->constdb_comment("NPC allowed skill use constants");
+ script->set_constant("SKILLENABLEDNPC_NONE", SKILLENABLEDNPC_NONE, false, false);
+ script->set_constant("SKILLENABLEDNPC_SELF", SKILLENABLEDNPC_SELF, false, false);
+ script->set_constant("SKILLENABLEDNPC_ALL", SKILLENABLEDNPC_ALL, false, false);
+
script->constdb_comment("private airship responds");
script->set_constant("P_AIRSHIP_NONE", P_AIRSHIP_NONE, false, false);
script->set_constant("P_AIRSHIP_RETRY", P_AIRSHIP_RETRY, false, false);
@@ -27715,6 +28364,11 @@ static void script_hardcoded_constants(void)
script->set_constant("P_AIRSHIP_INVALID_END_MAP", P_AIRSHIP_INVALID_END_MAP, false, false);
script->set_constant("P_AIRSHIP_ITEM_NOT_ENOUGH", P_AIRSHIP_ITEM_NOT_ENOUGH, false, false);
script->set_constant("P_AIRSHIP_ITEM_INVALID", P_AIRSHIP_ITEM_INVALID, false, false);
+
+ script->constdb_comment("player allowed actions when dead");
+ script->set_constant("PCALLOWACTION_NONE", PCALLOWACTION_NONE, false, false);
+ script->set_constant("PCALLOWACTION_TRADE", PCALLOWACTION_TRADE, false, false);
+ script->set_constant("PCALLOWACTION_CHAT", PCALLOWACTION_CHAT, false, false);
script->constdb_comment("questinfo types");
script->set_constant("QINFO_JOB", QINFO_JOB, false, false);
@@ -27858,10 +28512,17 @@ static void script_hardcoded_constants(void)
script->constdb_comment("itemskill option flags");
script->set_constant("ISF_NONE", ISF_NONE, false, false);
- script->set_constant("ISF_IGNORECONDITIONS", ISF_IGNORECONDITIONS, false, false);
+ script->set_constant("ISF_CHECKCONDITIONS", ISF_CHECKCONDITIONS, false, false);
script->set_constant("ISF_INSTANTCAST", ISF_INSTANTCAST, false, false);
script->set_constant("ISF_CASTONSELF", ISF_CASTONSELF, false, false);
+ script->constdb_comment("Item Bound Types");
+ script->set_constant("IBT_ANY", IBT_NONE, false, false); // for *checkbound()
+ script->set_constant("IBT_ACCOUNT", IBT_ACCOUNT, false, false);
+ script->set_constant("IBT_GUILD", IBT_GUILD, false, false);
+ script->set_constant("IBT_PARTY", IBT_PARTY, false, false);
+ script->set_constant("IBT_CHARACTER", IBT_CHARACTER, false, false);
+
script->constdb_comment("Renewal");
#ifdef RENEWAL
script->set_constant("RENEWAL", 1, false, false);
@@ -28060,6 +28721,7 @@ void script_defaults(void)
script->parse_syntax_close = parse_syntax_close;
script->parse_syntax_close_sub = parse_syntax_close_sub;
script->parse_syntax = parse_syntax;
+ script->parse_syntax_function = parse_syntax_function;
script->get_com = get_com;
script->get_num = get_num;
script->op2name = script_op2name;
@@ -28092,6 +28754,7 @@ void script_defaults(void)
script->load_parameters = script_load_parameters;
script->print_line = script_print_line;
script->errorwarning_sub = script_errorwarning_sub;
+ script->is_permanent_variable = script_is_permanent_variable;
script->set_reg = set_reg;
script->set_reg_ref_str = set_reg_npcscope_str;
script->set_reg_pc_ref_str = set_reg_pc_ref_str;
@@ -28163,6 +28826,8 @@ void script_defaults(void)
script->config.ontouch_name = "OnTouch_"; //ontouch_name (runs on first visible char to enter area, picks another char if the first char leaves)
script->config.ontouch2_name = "OnTouch"; //ontouch2_name (run whenever a char walks into the OnTouch area)
script->config.onuntouch_name = "OnUnTouch"; //onuntouch_name (run whenever a char walks from the OnTouch area)
+ script->config.functions_private_by_default = true;
+ script->config.functions_as_events = false;
// for ENABLE_CASE_CHECK
script->calc_hash_ci = calc_hash_ci;
diff --git a/src/map/script.h b/src/map/script.h
index 857d22c61..60f403d2d 100644
--- a/src/map/script.h
+++ b/src/map/script.h
@@ -345,7 +345,8 @@ enum {
MF_PAIRSHIP_STARTABLE,
MF_PAIRSHIP_ENDABLE,
MF_NOSTORAGE,
- MF_NOGSTORAGE
+ MF_NOGSTORAGE,
+ MF_NOPET,
};
enum navigation_service {
@@ -484,6 +485,9 @@ enum script_iteminfo_types {
ITEMINFO_ITEM_USAGE_FLAG,
ITEMINFO_ITEM_USAGE_OVERRIDE,
ITEMINFO_GM_LV_TRADE_OVERRIDE,
+ ITEMINFO_ID,
+ ITEMINFO_AEGISNAME,
+ ITEMINFO_NAME,
ITEMINFO_MAX
};
@@ -569,7 +573,7 @@ enum mado_type {
**/
enum itemskill_flag {
ISF_NONE = 0x00,
- ISF_IGNORECONDITIONS = 0x01, // Ignore skill conditions and don't consume them.
+ ISF_CHECKCONDITIONS = 0x01, // Check skill conditions and consume them.
ISF_INSTANTCAST = 0x02, // Cast skill instantaneously.
ISF_CASTONSELF = 0x04, // Forcefully cast skill on invoking character without showing the target selection cursor.
};
@@ -581,6 +585,8 @@ enum itemskill_flag {
struct Script_Config {
bool warn_func_mismatch_argtypes;
bool warn_func_mismatch_paramnum;
+ bool functions_private_by_default;
+ bool functions_as_events;
int check_cmdcount;
int check_gotocount;
int input_min_value;
@@ -698,7 +704,7 @@ struct script_state {
int bk_npcid;
unsigned freeloop : 1;// used by buildin_freeloop
unsigned op2ref : 1;// used by op_2
- unsigned npc_item_flag : 1;
+ unsigned npc_item_flag : 2;
unsigned int id;
};
@@ -722,8 +728,14 @@ struct str_data_struct {
uint8 deprecated : 1;
};
+/** a label within a script (does not use the label db) */
struct script_label_entry {
- int key,pos;
+ /** label name (held within str_data) */
+ int key;
+ /** position within the script */
+ int pos;
+ /** optional flags for the label */
+ enum script_label_flags flags;
};
struct script_syntax_data {
@@ -914,7 +926,7 @@ struct script_interface {
void (*set_constant) (const char *name, int value, bool is_parameter, bool is_deprecated);
void (*set_constant2) (const char *name, int value, bool is_parameter, bool is_deprecated);
bool (*get_constant) (const char* name, int* value);
- void (*label_add)(int key, int pos);
+ void (*label_add)(int key, int pos, enum script_label_flags flags);
void (*run) (struct script_code *rootscript, int pos, int rid, int oid);
void (*run_npc) (struct script_code *rootscript, int pos, int rid, int oid);
void (*run_pet) (struct script_code *rootscript, int pos, int rid, int oid);
@@ -945,10 +957,11 @@ struct script_interface {
int (*queue_create) (void);
bool (*queue_clear) (int idx);
/* */
- const char * (*parse_curly_close) (const char *p);
- const char * (*parse_syntax_close) (const char *p);
- const char * (*parse_syntax_close_sub) (const char *p, int *flag);
- const char * (*parse_syntax) (const char *p);
+ const char *(*parse_curly_close) (const char *p);
+ const char *(*parse_syntax_close) (const char *p);
+ const char *(*parse_syntax_close_sub) (const char *p, int *flag);
+ const char *(*parse_syntax) (const char *p);
+ const char *(*parse_syntax_function) (const char *p, bool is_public);
c_op (*get_com) (const struct script_buf *scriptbuf, int *pos);
int (*get_num) (const struct script_buf *scriptbuf, int *pos);
const char* (*op2name) (int op);
@@ -981,6 +994,7 @@ struct script_interface {
void (*load_parameters) (void);
const char* (*print_line) (StringBuf *buf, const char *p, const char *mark, int line);
void (*errorwarning_sub) (StringBuf *buf, const char *src, const char *file, int start_line, const char *error_msg, const char *error_pos);
+ bool (*is_permanent_variable) (const char *name);
int (*set_reg) (struct script_state *st, struct map_session_data *sd, int64 num, const char *name, const void *value, struct reg_db *ref);
void (*set_reg_ref_str) (struct script_state* st, struct reg_db *n, int64 num, const char* name, const char *str);
void (*set_reg_pc_ref_str) (struct script_state* st, struct reg_db *n, int64 num, const char* name, const char *str);
diff --git a/src/map/skill.c b/src/map/skill.c
index a8dbefbd7..c2a336d7e 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -47,6 +47,7 @@
#include "map/refine.h"
#include "map/script.h"
#include "map/status.h"
+#include "map/storage.h"
#include "map/unit.h"
#include "common/cbasetypes.h"
#include "common/ers.h"
@@ -72,6 +73,34 @@ static struct s_skill_dbs skilldbs;
struct skill_interface *skill;
+static const struct {
+ int start;
+ int end;
+} skill_idx_ranges[] = {
+ { NV_BASIC, NPC_LEX_AETERNA },
+ { KN_CHARGEATK, SA_ELEMENTWIND },
+ { RK_ENCHANTBLADE, AB_SILENTIUM },
+ { WL_WHITEIMPRISON, SC_FEINTBOMB },
+ { LG_CANNONSPEAR, SR_GENTLETOUCH_REVITALIZE },
+ { WA_SWING_DANCE, WA_MOONLIT_SERENADE },
+ { MI_RUSH_WINDMILL, MI_HARMONIZE },
+ { WM_LESSON, WM_UNLIMITED_HUMMING_VOICE },
+ { SO_FIREWALK, SO_EARTH_INSIGNIA },
+ { GN_TRAINING_SWORD, GN_SLINGITEM_RANGEMELEEATK },
+ { AB_SECRAMENT, LG_OVERBRAND_PLUSATK },
+ { ALL_ODINS_RECALL, ALL_LIGHTGUARD },
+ { RL_GLITTERING_GREED, RL_GLITTERING_GREED_ATK },
+ { KO_YAMIKUMO, OB_AKAITSUKI },
+ { ECL_SNOWFLIP, ALL_THANATOS_RECALL },
+ { GC_DARKCROW, NC_MAGMA_ERUPTION_DOTDAMAGE },
+ { SU_BASIC_SKILL, SU_SPIRITOFSEA },
+ { HLIF_HEAL, MH_VOLCANIC_ASH },
+ { MS_BASH, MER_INVINCIBLEOFF2 },
+ { EL_CIRCLE_OF_FIRE, EL_STONE_RAIN },
+ { GD_APPROVAL, GD_DEVELOPMENT },
+ CUSTOM_SKILL_RANGES
+};
+
//Since only mob-casted splash skills can hit ice-walls
static int skill_splash_target(struct block_list *bl)
{
@@ -96,51 +125,37 @@ static int skill_name2id(const char *name)
/// Returns the skill's array index, or 0 (Unknown Skill).
static int skill_get_index(int skill_id)
{
- int skillRange[] = { NV_BASIC, NPC_LEX_AETERNA,
- KN_CHARGEATK, SA_ELEMENTWIND,
- RK_ENCHANTBLADE, AB_SILENTIUM,
- WL_WHITEIMPRISON, SC_FEINTBOMB,
- LG_CANNONSPEAR, SR_GENTLETOUCH_REVITALIZE,
- WA_SWING_DANCE, WA_MOONLIT_SERENADE,
- MI_RUSH_WINDMILL, MI_HARMONIZE,
- WM_LESSON, WM_UNLIMITED_HUMMING_VOICE,
- SO_FIREWALK, SO_EARTH_INSIGNIA,
- GN_TRAINING_SWORD, GN_SLINGITEM_RANGEMELEEATK,
- AB_SECRAMENT, LG_OVERBRAND_PLUSATK,
- ALL_ODINS_RECALL, ALL_LIGHTGUARD,
- RL_GLITTERING_GREED, RL_GLITTERING_GREED_ATK,
- KO_YAMIKUMO, OB_AKAITSUKI,
- ECL_SNOWFLIP, ALL_THANATOS_RECALL,
- GC_DARKCROW, NC_MAGMA_ERUPTION_DOTDAMAGE,
- SU_BASIC_SKILL, SU_SPIRITOFSEA,
- HLIF_HEAL, MH_VOLCANIC_ASH,
- MS_BASH, MER_INVINCIBLEOFF2,
- EL_CIRCLE_OF_FIRE, EL_STONE_RAIN,
- GD_APPROVAL, GD_DEVELOPMENT
- CUSTOM_SKILL_RANGES};
- int length = sizeof(skillRange) / sizeof(int);
- STATIC_ASSERT(sizeof(skillRange) / sizeof(int) % 2 == 0, "skill_get_index: skillRange should be multiple of 2");
-
-
- if (skill_id < skillRange[0] || skill_id > skillRange[length - 1]) {
+ int length = ARRAYLENGTH(skill_idx_ranges);
+
+
+ if (skill_id < skill_idx_ranges[0].start || skill_id > skill_idx_ranges[length - 1].end) {
ShowWarning("skill_get_index: skill id '%d' is not being handled!\n", skill_id);
+ Assert_report(0);
return 0;
}
int skill_idx = 0;
+ bool found = false;
// Map Skill ID to Skill Indexes (in reverse order)
- for (int i = 0; i < length; i += 2) {
+ for (int i = 0; i < length; i++) {
// Check if SkillID belongs to this range.
- if (skill_id <= skillRange[i + 1] && skill_id >= skillRange[i]) {
- skill_idx += (skillRange[i + 1] - skill_id);
+ if (skill_id <= skill_idx_ranges[i].end && skill_id >= skill_idx_ranges[i].start) {
+ skill_idx += (skill_idx_ranges[i].end - skill_id);
+ found = true;
break;
}
// Add the difference of current range
- skill_idx += (skillRange[i + 1] - skillRange[i] + 1);
+ skill_idx += (skill_idx_ranges[i].end - skill_idx_ranges[i].start + 1);
}
+ if (!found) {
+ ShowWarning("skill_get_index: skill id '%d' (idx: %d) is not handled as it lies outside the defined ranges!\n", skill_id, skill_idx);
+ Assert_report(0);
+ return 0;
+ }
if (skill_idx >= MAX_SKILL_DB) {
ShowWarning("skill_get_index: skill id '%d'(idx: %d) is not being handled as it exceeds MAX_SKILL_DB!\n", skill_id, skill_idx);
+ Assert_report(0);
return 0;
}
@@ -162,14 +177,26 @@ static const char *skill_get_desc(int skill_id)
// Skill DB
-static int skill_get_hit(int skill_id)
+/**
+ * Gets a skill's hit type by its ID and level. (See enum battle_dmg_type.)
+ *
+ * @param skill_id The skill's ID.
+ * @param skill_lv The skill's level.
+ * @return The skill's hit type corresponding to the passed level. Defaults to BDT_NORMAL (0) in case of error.
+ *
+ **/
+static int skill_get_hit(int skill_id, int skill_lv)
{
- int idx;
if (skill_id == 0)
- return 0;
- idx = skill->get_index(skill_id);
- Assert_ret(idx != 0);
- return skill->dbs->db[idx].hit;
+ return BDT_NORMAL;
+
+ Assert_retr(BDT_NORMAL, skill_lv > 0);
+
+ int idx = skill->get_index(skill_id);
+
+ Assert_retr(BDT_NORMAL, idx != 0);
+
+ return skill->dbs->db[idx].hit[skill_get_lvl_idx(skill_lv)];
}
static int skill_get_inf(int skill_id)
@@ -306,14 +333,26 @@ static int skill_get_sp_rate(int skill_id, int skill_lv)
return skill->dbs->db[idx].sp_rate[skill_get_lvl_idx(skill_lv)];
}
-static int skill_get_state(int skill_id)
+/**
+ * Gets a skill's required state by its ID and level.
+ *
+ * @param skill_id The skill's ID.
+ * @param skill_lv The skill's level.
+ * @return The skill's required state corresponding to the passed level. Defaults to ST_NONE (0) in case of error.
+ *
+ **/
+static int skill_get_state(int skill_id, int skill_lv)
{
- int idx;
if (skill_id == 0)
return ST_NONE;
- idx = skill->get_index(skill_id);
+
+ Assert_retr(ST_NONE, skill_lv > 0);
+
+ int idx = skill->get_index(skill_id);
+
Assert_retr(ST_NONE, idx != 0);
- return skill->dbs->db[idx].state;
+
+ return skill->dbs->db[idx].state[skill_get_lvl_idx(skill_lv)];
}
static int skill_get_spiritball(int skill_id, int skill_lv)
@@ -331,26 +370,175 @@ static int skill_get_spiritball(int skill_id, int skill_lv)
return skill->dbs->db[idx].spiritball[skill_get_lvl_idx(skill_lv)];
}
+/**
+ * Gets the index of the first required item for a skill at given level.
+ *
+ * @param skill_id The skill's ID.
+ * @param skill_lv The skill's level.
+ * @return The required item's index. Defaults to INDEX_NOT_FOUND (-1) in case of error or if no appropriate index was found.
+ *
+ **/
+static int skill_get_item_index(int skill_id, int skill_lv)
+{
+ if (skill_id == 0)
+ return INDEX_NOT_FOUND;
+
+ Assert_retr(INDEX_NOT_FOUND, skill_lv > 0);
+
+ int idx = skill->get_index(skill_id);
+
+ Assert_retr(INDEX_NOT_FOUND, idx != 0);
+
+ int item_index = INDEX_NOT_FOUND;
+ int level_index = skill_get_lvl_idx(skill_lv);
+
+ for (int i = 0; i < MAX_SKILL_ITEM_REQUIRE; i++) {
+ if (skill->dbs->db[idx].req_items.item[i].id == 0)
+ continue;
+
+ if (skill->dbs->db[idx].req_items.item[i].amount[level_index] != -1) {
+ item_index = i;
+ break;
+ }
+ }
+
+ return item_index;
+}
+
+/**
+ * Gets a skill's required item's ID by the skill's ID and the item's index.
+ *
+ * @param skill_id The skill's ID.
+ * @param item_idx The item's index.
+ * @return The skill's required item's ID corresponding to the passed index. Defaults to 0 in case of error.
+ *
+ **/
static int skill_get_itemid(int skill_id, int item_idx)
{
- int idx;
if (skill_id == 0)
return 0;
- idx = skill->get_index(skill_id);
+
+ Assert_ret(item_idx >= 0 && item_idx < MAX_SKILL_ITEM_REQUIRE);
+
+ int idx = skill->get_index(skill_id);
+
Assert_ret(idx != 0);
+
+ return skill->dbs->db[idx].req_items.item[item_idx].id;
+}
+
+/**
+ * Gets a skill's required item's amount by the skill's ID and level and the item's index.
+ *
+ * @param skill_id The skill's ID.
+ * @param item_idx The item's index.
+ * @param skill_lv The skill's level.
+ * @return The skill's required item's amount corresponding to the passed index and level. Defaults to 0 in case of error.
+ *
+ **/
+static int skill_get_itemqty(int skill_id, int item_idx, int skill_lv)
+{
+ if (skill_id == 0)
+ return 0;
+
Assert_ret(item_idx >= 0 && item_idx < MAX_SKILL_ITEM_REQUIRE);
- return skill->dbs->db[idx].itemid[item_idx];
+ Assert_ret(skill_lv > 0);
+
+ int idx = skill->get_index(skill_id);
+
+ Assert_ret(idx != 0);
+
+ return skill->dbs->db[idx].req_items.item[item_idx].amount[skill_get_lvl_idx(skill_lv)];
}
-static int skill_get_itemqty(int skill_id, int item_idx)
+/**
+ * Gets a skill's required items any-flag by the skill's ID and level.
+ *
+ * @param skill_id The skill's ID.
+ * @param skill_lv The skill's level.
+ * @return The skill's required items any-flag corresponding to the passed level. Defaults to false in case of error.
+ *
+ **/
+static bool skill_get_item_any_flag(int skill_id, int skill_lv)
+{
+ if (skill_id == 0)
+ return false;
+
+ Assert_retr(false, skill_lv > 0);
+
+ int idx = skill->get_index(skill_id);
+
+ Assert_retr(false, idx != 0);
+
+ return skill->dbs->db[idx].req_items.any[skill_get_lvl_idx(skill_lv)];
+}
+
+/**
+ * Gets a skill's required equipment's ID by the skill's ID and the equipment item's index.
+ *
+ * @param skill_id The skill's ID.
+ * @param item_idx The equipment item's index.
+ * @return The skill's required equipment's ID corresponding to the passed index. Defaults to 0 in case of error.
+ *
+ **/
+static int skill_get_equip_id(int skill_id, int item_idx)
{
- int idx;
if (skill_id == 0)
return 0;
- idx = skill->get_index(skill_id);
+
+ Assert_ret(item_idx >= 0 && item_idx < MAX_SKILL_ITEM_REQUIRE);
+
+ int idx = skill->get_index(skill_id);
+
Assert_ret(idx != 0);
+
+ return skill->dbs->db[idx].req_equip.item[item_idx].id;
+}
+
+/**
+ * Gets a skill's required equipment's amount by the skill's ID and level and the equipment item's index.
+ *
+ * @param skill_id The skill's ID.
+ * @param item_idx The equipment item's index.
+ * @param skill_lv The skill's level.
+ * @return The skill's required equipment item's amount corresponding to the passed index and level. Defaults to 0 in case of error.
+ *
+ **/
+static int skill_get_equip_amount(int skill_id, int item_idx, int skill_lv)
+{
+ if (skill_id == 0)
+ return 0;
+
Assert_ret(item_idx >= 0 && item_idx < MAX_SKILL_ITEM_REQUIRE);
- return skill->dbs->db[idx].amount[item_idx];
+ Assert_ret(skill_lv > 0);
+
+ int idx = skill->get_index(skill_id);
+
+ Assert_ret(idx != 0);
+
+ return skill->dbs->db[idx].req_equip.item[item_idx].amount[skill_get_lvl_idx(skill_lv)];
+}
+
+/**
+ * Gets a skill's required equipment any-flag by the skill's ID and level.
+ *
+ * @param skill_id The skill's ID.
+ * @param skill_lv The skill's level.
+ * @return The skill's required equipment's any-flag corresponding to the passed level. Defaults to false in case of error.
+ *
+ **/
+static bool skill_get_equip_any_flag(int skill_id, int skill_lv)
+{
+ if (skill_id == 0)
+ return false;
+
+ Assert_retr(false, skill_lv > 0);
+
+ int idx = skill->get_index(skill_id);
+
+ Assert_retr(false, idx != 0);
+
+ return skill->dbs->db[idx].req_equip.any[skill_get_lvl_idx(skill_lv)];
}
static int skill_get_zeny(int skill_id, int skill_lv)
@@ -458,14 +646,26 @@ static int skill_get_time2(int skill_id, int skill_lv)
return skill->dbs->db[idx].upkeep_time2[skill_get_lvl_idx(skill_lv)];
}
-static int skill_get_castdef(int skill_id)
+/**
+ * Gets a skill's cast defence rate by its ID and level.
+ *
+ * @param skill_id The skill's ID.
+ * @param skill_lv The skill's level.
+ * @return The skill's cast defence rate corresponding to the passed level. Defaults to 0 in case of error.
+ *
+ **/
+static int skill_get_castdef(int skill_id, int skill_lv)
{
- int idx;
if (skill_id == 0)
return 0;
- idx = skill->get_index(skill_id);
+
+ Assert_ret(skill_lv > 0);
+
+ int idx = skill->get_index(skill_id);
+
Assert_ret(idx != 0);
- return skill->dbs->db[idx].cast_def_rate;
+
+ return skill->dbs->db[idx].cast_def_rate[skill_get_lvl_idx(skill_lv)];
}
static int skill_get_weapontype(int skill_id)
@@ -513,14 +713,26 @@ static int skill_get_inf2(int skill_id)
return skill->dbs->db[idx].inf2;
}
-static int skill_get_castcancel(int skill_id)
+/**
+ * Gets a skill's cast interruptibility by its ID and level.
+ *
+ * @param skill_id The skill's ID.
+ * @param skill_lv The skill's level.
+ * @return The skill's cast interruptibility corresponding to the passed level. Defaults to 0 in case of error.
+ *
+ **/
+static int skill_get_castcancel(int skill_id, int skill_lv)
{
- int idx;
if (skill_id == 0)
return 0;
- idx = skill->get_index(skill_id);
+
+ Assert_ret(skill_lv > 0);
+
+ int idx = skill->get_index(skill_id);
+
Assert_ret(idx != 0);
- return skill->dbs->db[idx].castcancel;
+
+ return skill->dbs->db[idx].castcancel[skill_get_lvl_idx(skill_lv)];
}
static int skill_get_maxcount(int skill_id, int skill_lv)
@@ -568,6 +780,28 @@ static int skill_get_mhp(int skill_id, int skill_lv)
return skill->dbs->db[idx].mhp[skill_get_lvl_idx(skill_lv)];
}
+/**
+ * Gets a skill's maximum SP trigger by its ID and level.
+ *
+ * @param skill_id The skill's ID.
+ * @param skill_lv The skill's level.
+ * @return The skill's maximum SP trigger corresponding to the passed level. Defaults to 0 in case of error.
+ *
+ **/
+static int skill_get_msp(int skill_id, int skill_lv)
+{
+ if (skill_id == 0)
+ return 0;
+
+ Assert_ret(skill_lv > 0);
+
+ int idx = skill->get_index(skill_id);
+
+ Assert_ret(idx != 0);
+
+ return skill->dbs->db[idx].msp[skill_get_lvl_idx(skill_lv)];
+}
+
static int skill_get_castnodex(int skill_id, int skill_lv)
{
int idx;
@@ -598,35 +832,72 @@ static int skill_get_delaynodex(int skill_id, int skill_lv)
return skill->dbs->db[idx].delaynodex[skill_get_lvl_idx(skill_lv)];
}
-static int skill_get_type(int skill_id)
+/**
+ * Gets a skill's attack type by its ID and level.
+ *
+ * @param skill_id The skill's ID.
+ * @param skill_lv The skill's level.
+ * @return The skill's attack type corresponding to the passed level. Defaults to BF_NONE (0) in case of error.
+ *
+ **/
+static int skill_get_type(int skill_id, int skill_lv)
{
- int idx;
if (skill_id == 0)
return BF_NONE;
- idx = skill->get_index(skill_id);
+
+ Assert_retr(BF_NONE, skill_lv > 0);
+
+ int idx = skill->get_index(skill_id);
+
Assert_retr(BF_NONE, idx != 0);
- return skill->dbs->db[idx].skill_type;
+
+ return skill->dbs->db[idx].skill_type[skill_get_lvl_idx(skill_lv)];
}
-static int skill_get_unit_id(int skill_id, int flag)
+/**
+ * Gets a skill's unit ID by its ID and level.
+ *
+ * @param skill_id The skill's ID.
+ * @param skill_lv The skill's level.
+ * @param flag
+ * @return The skill's unit ID corresponding to the passed level. Defaults to 0 in case of error.
+ *
+ **/
+static int skill_get_unit_id(int skill_id, int skill_lv, int flag)
{
- int idx;
if (skill_id == 0)
return 0;
- idx = skill->get_index(skill_id);
+
+ Assert_ret(skill_lv > 0);
+ Assert_ret(flag >= 0 && flag < ARRAYLENGTH(skill->dbs->db[0].unit_id[0]));
+
+ int idx = skill->get_index(skill_id);
+
Assert_ret(idx != 0);
- Assert_ret(flag >= 0 && flag < ARRAYLENGTH(skill->dbs->db[0].unit_id));
- return skill->dbs->db[idx].unit_id[flag];
+
+ return skill->dbs->db[idx].unit_id[skill_get_lvl_idx(skill_lv)][flag];
}
-static int skill_get_unit_interval(int skill_id)
+/**
+ * Gets a skill's unit interval by its ID and level.
+ *
+ * @param skill_id The skill's ID.
+ * @param skill_lv The skill's level.
+ * @return The skill's unit interval corresponding to the passed level. Defaults to 0 in case of error.
+ *
+ **/
+static int skill_get_unit_interval(int skill_id, int skill_lv)
{
- int idx;
if (skill_id == 0)
return 0;
- idx = skill->get_index(skill_id);
+
+ Assert_ret(skill_lv > 0);
+
+ int idx = skill->get_index(skill_id);
+
Assert_ret(idx != 0);
- return skill->dbs->db[idx].unit_interval;
+
+ return skill->dbs->db[idx].unit_interval[skill_get_lvl_idx(skill_lv)];
}
static int skill_get_unit_range(int skill_id, int skill_lv)
@@ -644,24 +915,48 @@ static int skill_get_unit_range(int skill_id, int skill_lv)
return skill->dbs->db[idx].unit_range[skill_get_lvl_idx(skill_lv)];
}
-static int skill_get_unit_target(int skill_id)
+/**
+ * Gets a skill's unit target by its ID and level.
+ *
+ * @param skill_id The skill's ID.
+ * @param skill_lv The skill's level.
+ * @return The skill's unit target corresponding to the passed level. Defaults to BCT_NOONE (0) in case of error.
+ *
+ **/
+static int skill_get_unit_target(int skill_id, int skill_lv)
{
- int idx;
if (skill_id == 0)
return BCT_NOONE;
- idx = skill->get_index(skill_id);
+
+ Assert_retr(BCT_NOONE, skill_lv > 0);
+
+ int idx = skill->get_index(skill_id);
+
Assert_retr(BCT_NOONE, idx != 0);
- return skill->dbs->db[idx].unit_target & BCT_ALL;
+
+ return (skill->dbs->db[idx].unit_target[skill_get_lvl_idx(skill_lv)] & BCT_ALL);
}
-static int skill_get_unit_bl_target(int skill_id)
+/**
+ * Gets a skill's unit target as bl type by its ID and level.
+ *
+ * @param skill_id The skill's ID.
+ * @param skill_lv The skill's level.
+ * @return The skill's unit target as bl type corresponding to the passed level. Defaults to BL_NUL (0) in case of error.
+ *
+ **/
+static int skill_get_unit_bl_target(int skill_id, int skill_lv)
{
- int idx;
if (skill_id == 0)
return BL_NUL;
- idx = skill->get_index(skill_id);
- Assert_retr(BL_NUL, idx != 0);
- return skill->dbs->db[idx].unit_target & BL_ALL;
+
+ Assert_retr(BCT_NOONE, skill_lv > 0);
+
+ int idx = skill->get_index(skill_id);
+
+ Assert_retr(BCT_NOONE, idx != 0);
+
+ return (skill->dbs->db[idx].unit_target[skill_get_lvl_idx(skill_lv)] & BL_ALL);
}
static int skill_get_unit_flag(int skill_id)
@@ -935,6 +1230,8 @@ static int skill_calc_heal(struct block_list *src, struct block_list *target, ui
hp -= hp * 20/100;
if(sc->data[SC_HEALPLUS] && skill_id != NPC_EVILLAND && skill_id != BA_APPLEIDUN)
hp += hp * sc->data[SC_HEALPLUS]->val1/100; // Only affects Heal, Sanctuary and PotionPitcher.(like bHealPower) [Inkfish]
+ if (sc->data[SC_VITALIZE_POTION] != NULL && skill_id != NPC_EVILLAND && skill_id != BA_APPLEIDUN)
+ hp += hp * sc->data[SC_VITALIZE_POTION]->val3 / 100;
if(sc->data[SC_WATER_INSIGNIA] && sc->data[SC_WATER_INSIGNIA]->val1 == 2)
hp += hp / 10;
if (sc->data[SC_VITALITYACTIVATION])
@@ -1010,14 +1307,17 @@ static int skillnotok(uint16 skill_id, struct map_session_data *sd)
if (pc_has_permission(sd, PC_PERM_SKILL_UNCONDITIONAL))
return 0; // can do any damn thing they want
- if( skill_id == AL_TELEPORT && sd->skillitem == skill_id && sd->skillitemlv > 2 )
- return 0; // Teleport lv 3 bypasses this check.[Inkfish]
+ if (map->getcell(sd->bl.m, &sd->bl, sd->bl.x, sd->bl.y, CELL_CHKNOSKILL))
+ return 1; // block usage on 'noskill' cells [Wolfie]
+
+ if (skill_id == AL_TELEPORT && sd->auto_cast_current.type == AUTOCAST_ITEM && sd->auto_cast_current.skill_lv > 2)
+ return 0; // Teleport level 3 and higher bypasses this check if cast by itemskill() script commands.
// Epoque:
// This code will compare the player's attack motion value which is influenced by ASPD before
// allowing a skill to be cast. This is to prevent no-delay ACT files from spamming skills such as
// AC_DOUBLE which do not have a skill delay and are not regarded in terms of attack motion.
- if( !sd->state.autocast && sd->skillitem != skill_id && sd->canskill_tick &&
+ if (sd->auto_cast_current.type == AUTOCAST_NONE && sd->canskill_tick != 0 &&
DIFF_TICK(timer->gettick(), sd->canskill_tick) < (sd->battle_status.amotion * (battle_config.skill_amotion_leniency) / 100) )
{// attempted to cast a skill before the attack motion has finished
return 1;
@@ -1032,7 +1332,7 @@ static int skillnotok(uint16 skill_id, struct map_session_data *sd)
* It has been confirmed on a official server (thanks to Yommy) that item-cast skills bypass all the restrictions below
* Also, without this check, an exploit where an item casting + healing (or any other kind buff) isn't deleted after used on a restricted map
**/
- if( sd->skillitem == skill_id )
+ if (sd->auto_cast_current.type == AUTOCAST_ITEM)
return 0;
if( sd->sc.data[SC_ALL_RIDING] )
@@ -1177,10 +1477,36 @@ static int skillnotok_mercenary(uint16 skill_id, struct mercenary_data *md)
return skill->not_ok(skill_id, md->master);
}
+/**
+ * Validates the plausibility of auto-cast related data and calls pc_autocast_clear() if necessary.
+ *
+ * @param sd The character who cast the skill.
+ * @param skill_id The cast skill's ID.
+ * @param skill_lv The cast skill's level. (clif_parse_UseSkillMap() passes 0.)
+ *
+ **/
+static void skill_validate_autocast_data(struct map_session_data *sd, int skill_id, int skill_lv)
+{
+ nullpo_retv(sd);
+
+ // Determine if called by clif_parse_UseSkillMap().
+ bool use_skill_map = (skill_lv == 0 && (skill_id == AL_WARP || skill_id == AL_TELEPORT));
+
+ struct autocast_data *auto_cast = &sd->auto_cast_current;
+
+ if (auto_cast->type == AUTOCAST_NONE)
+ pc->autocast_clear(sd); // No auto-cast type set. Preventively unset all auto-cast related data.
+ else if (auto_cast->type == AUTOCAST_TEMP)
+ pc->autocast_clear(sd); // AUTOCAST_TEMP should have been unset straight after usage.
+ else if (auto_cast->skill_id == 0 || skill_id == 0 || auto_cast->skill_id != skill_id)
+ pc->autocast_remove(sd, auto_cast->type, auto_cast->skill_id, auto_cast->skill_lv); // Implausible skill ID.
+ else if (auto_cast->skill_lv == 0 || (!use_skill_map && (skill_lv == 0 || auto_cast->skill_lv != skill_lv)))
+ pc->autocast_remove(sd, auto_cast->type, auto_cast->skill_id, auto_cast->skill_lv); // Implausible skill level.
+}
+
static struct s_skill_unit_layout *skill_get_unit_layout(uint16 skill_id, uint16 skill_lv, struct block_list *src, int x, int y)
{
int pos = skill->get_unit_layout_type(skill_id,skill_lv);
- uint8 dir;
nullpo_retr(&skill->dbs->unit_layout[0], src);
if (pos < -1 || pos >= MAX_SKILL_UNIT_LAYOUT) {
@@ -1191,7 +1517,9 @@ static struct s_skill_unit_layout *skill_get_unit_layout(uint16 skill_id, uint16
if (pos != -1) // simple single-definition layout
return &skill->dbs->unit_layout[pos];
- dir = (src->x == x && src->y == y) ? 6 : map->calc_dir(src,x,y); // 6 - default aegis direction
+ enum unit_dir dir = UNIT_DIR_EAST; // default aegis direction
+ if (src->x != x || src->y != y)
+ dir = map->calc_dir(src, x, y);
if (skill_id == MG_FIREWALL)
return &skill->dbs->unit_layout [skill->firewall_unit_pos + dir];
@@ -1321,11 +1649,15 @@ static int skill_additional_effect(struct block_list *src, struct block_list *bl
if( pc_iswug(sd) && (temp=pc->checkskill(sd,RA_WUGSTRIKE)) > 0 && rnd()%1000 <= sstatus->luk*3 )
skill->castend_damage_id(src,bl,RA_WUGSTRIKE,temp,tick,0);
// Gank
- if(dstmd && sd->weapontype != W_BOW &&
- (temp=pc->checkskill(sd,RG_SNATCHER)) > 0 &&
- (temp*15 + 55) + pc->checkskill(sd,TF_STEAL)*10 > rnd()%1000) {
- if(pc->steal_item(sd,bl,pc->checkskill(sd,TF_STEAL)))
- clif->skill_nodamage(src,bl,TF_STEAL,temp,1);
+ if (dstmd && sd->weapontype != W_BOW &&
+ (temp = pc->checkskill(sd, RG_SNATCHER)) > 0 &&
+#ifdef RENEWAL
+ (temp * 10) + pc->checkskill(sd, TF_STEAL) * 10 > rnd() % 1000) {
+#else
+ (temp * 15 + 55) + pc->checkskill(sd, TF_STEAL) * 10 > rnd() % 1000) {
+#endif
+ if (pc->steal_item(sd, bl, pc->checkskill(sd, TF_STEAL)))
+ clif->skill_nodamage(src, bl, TF_STEAL, temp, 1);
else
clif->skill_fail(sd, RG_SNATCHER, USESKILL_FAIL_LEVEL, 0, 0);
}
@@ -2064,9 +2396,9 @@ static int skill_additional_effect(struct block_list *src, struct block_list *bl
temp = (sd->autospell[i].id > 0) ? sd->autospell[i].id : -sd->autospell[i].id;
- sd->state.autocast = 1;
+ sd->auto_cast_current.type = AUTOCAST_TEMP;
notok = skill->not_ok(temp, sd);
- sd->state.autocast = 0;
+ sd->auto_cast_current.type = AUTOCAST_NONE;
if ( notok )
continue;
@@ -2117,11 +2449,12 @@ static int skill_additional_effect(struct block_list *src, struct block_list *bl
else if (temp == PF_SPIDERWEB) //Special case, due to its nature of coding.
type = CAST_GROUND;
- sd->state.autocast = 1;
+ sd->auto_cast_current.type = AUTOCAST_TEMP;
skill->consume_requirement(sd,temp,auto_skill_lv,1);
- skill->toggle_magicpower(src, temp);
+ skill->toggle_magicpower(src, temp, auto_skill_lv);
skill->castend_type(type, src, tbl, temp, auto_skill_lv, tick, 0);
- sd->state.autocast = 0;
+ sd->auto_cast_current.type = AUTOCAST_NONE;
+
//Set canact delay. [Skotlex]
ud = unit->bl2ud(src);
if (ud) {
@@ -2190,6 +2523,9 @@ static int skill_onskillusage(struct map_session_data *sd, struct block_list *bl
if( sd == NULL || !skill_id )
return 0;
+ // Preserve auto-cast type if bAutoSpellOnSkill was triggered by a skill which was cast by Abracadabra, Improvised Song or an item.
+ enum autocast_type ac_type = sd->auto_cast_current.type;
+
for( i = 0; i < ARRAYLENGTH(sd->autospell3) && sd->autospell3[i].flag; i++ ) {
if( sd->autospell3[i].flag != skill_id )
continue;
@@ -2199,9 +2535,9 @@ static int skill_onskillusage(struct map_session_data *sd, struct block_list *bl
temp = (sd->autospell3[i].id > 0) ? sd->autospell3[i].id : -sd->autospell3[i].id;
- sd->state.autocast = 1;
+ sd->auto_cast_current.type = AUTOCAST_TEMP;
notok = skill->not_ok(temp, sd);
- sd->state.autocast = 0;
+ sd->auto_cast_current.type = AUTOCAST_NONE;
if ( notok )
continue;
@@ -2247,14 +2583,16 @@ static int skill_onskillusage(struct map_session_data *sd, struct block_list *bl
!battle->check_range(&sd->bl, tbl, skill->get_range2(&sd->bl, temp,skill_lv) + (temp == RG_CLOSECONFINE?0:1)) )
continue;
- sd->state.autocast = 1;
sd->autospell3[i].lock = true;
+ sd->auto_cast_current.type = AUTOCAST_TEMP;
skill->consume_requirement(sd,temp,skill_lv,1);
skill->castend_type(type, &sd->bl, tbl, temp, skill_lv, tick, 0);
+ sd->auto_cast_current.type = AUTOCAST_NONE;
sd->autospell3[i].lock = false;
- sd->state.autocast = 0;
}
+ sd->auto_cast_current.type = ac_type;
+
if (sd->autobonus3[0].rate) {
for( i = 0; i < ARRAYLENGTH(sd->autobonus3); i++ ) {
if( rnd()%1000 >= sd->autobonus3[i].rate )
@@ -2401,6 +2739,9 @@ static int skill_counter_additional_effect(struct block_list *src, struct block_
struct unit_data *ud;
int i, auto_skill_id, auto_skill_lv, type, notok;
+ // Preserve auto-cast type if bAutoSpellWhenHit was triggered during cast of a skill which was cast by Abracadabra, Improvised Song or an item.
+ enum autocast_type ac_type = dstsd->auto_cast_current.type;
+
for (i = 0; i < ARRAYLENGTH(dstsd->autospell2) && dstsd->autospell2[i].id; i++) {
if(!(dstsd->autospell2[i].flag&attack_type&BF_WEAPONMASK &&
@@ -2416,9 +2757,9 @@ static int skill_counter_additional_effect(struct block_list *src, struct block_
if (attack_type&BF_LONG)
rate>>=1;
- dstsd->state.autocast = 1;
+ dstsd->auto_cast_current.type = AUTOCAST_TEMP;
notok = skill->not_ok(auto_skill_id, dstsd);
- dstsd->state.autocast = 0;
+ dstsd->auto_cast_current.type = AUTOCAST_NONE;
if ( notok )
continue;
@@ -2459,10 +2800,11 @@ static int skill_counter_additional_effect(struct block_list *src, struct block_
if( !battle->check_range(src, tbl, skill->get_range2(src, auto_skill_id,auto_skill_lv) + (auto_skill_id == RG_CLOSECONFINE?0:1)) && battle_config.autospell_check_range )
continue;
- dstsd->state.autocast = 1;
+ dstsd->auto_cast_current.type = AUTOCAST_TEMP;
skill->consume_requirement(dstsd,auto_skill_id,auto_skill_lv,1);
skill->castend_type(type, bl, tbl, auto_skill_id, auto_skill_lv, tick, 0);
- dstsd->state.autocast = 0;
+ dstsd->auto_cast_current.type = AUTOCAST_NONE;
+
// Set canact delay. [Skotlex]
ud = unit->bl2ud(bl);
if (ud) {
@@ -2474,6 +2816,8 @@ static int skill_counter_additional_effect(struct block_list *src, struct block_
}
}
}
+
+ dstsd->auto_cast_current.type = ac_type;
}
//Autobonus when attacked
@@ -2626,11 +2970,11 @@ static int skill_strip_equip(struct block_list *bl, unsigned short where, int ra
/*=========================================================================
* Used to knock back players, monsters, traps, etc
* 'count' is the number of squares to knock back
- * 'direction' indicates the way OPPOSITE to the knockback direction (or -1 for default behavior)
+ * 'direction' indicates the way OPPOSITE to the knockback direction (or UNIT_DIR_UNDEFINED for default behavior)
* if 'flag&0x1', position update packets must not be sent.
* if 'flag&0x2', skill blown ignores players' special_state.no_knockback
*/
-static int skill_blown(struct block_list *src, struct block_list *target, int count, int8 dir, int flag)
+static int skill_blown(struct block_list *src, struct block_list *target, int count, enum unit_dir dir, int flag)
{
int dx = 0, dy = 0;
struct status_change *tsc = status->get_sc(target);
@@ -2672,10 +3016,10 @@ static int skill_blown(struct block_list *src, struct block_list *target, int co
break;
}
- if (dir == -1) // <optimized>: do the computation here instead of outside
+ if (dir == UNIT_DIR_UNDEFINED) // <optimized>: do the computation here instead of outside
dir = map->calc_dir(target, src->x, src->y); // direction from src to target, reversed
- if (dir >= 0 && dir < 8) {
+ if (dir >= UNIT_DIR_FIRST && dir < UNIT_DIR_MAX) {
// take the reversed 'direction' and reverse it
dx = -dirx[dir];
dy = -diry[dir];
@@ -2934,7 +3278,7 @@ static int skill_attack(int attack_type, struct block_list *src, struct block_li
}
//Skill hit type
- type=(skill_id==0)?BDT_SPLASH:skill->get_hit(skill_id);
+ type = (skill_id == 0) ? BDT_SPLASH : skill->get_hit(skill_id, skill_lv);
if(damage < dmg.div_
//Only skills that knockback even when they miss. [Skotlex]
@@ -3297,7 +3641,7 @@ static int skill_attack(int attack_type, struct block_list *src, struct block_li
//Only knockback if it's still alive, otherwise a "ghost" is left behind. [Skotlex]
//Reflected spells do not bounce back (bl == dsrc since it only happens for direct skills)
if (dmg.blewcount > 0 && bl!=dsrc && !status->isdead(bl)) {
- int8 dir = -1; // default
+ enum unit_dir dir = UNIT_DIR_UNDEFINED; // default
switch(skill_id) {//direction
case MG_FIREWALL:
case PR_SANCTUARY:
@@ -3310,13 +3654,13 @@ static int skill_attack(int attack_type, struct block_list *src, struct block_li
// This ensures the storm randomly pushes instead of exactly a cell backwards per official mechanics.
case WZ_STORMGUST:
if(!battle_config.stormgust_knockback)
- dir = rnd()%8;
+ dir = rnd() % UNIT_DIR_MAX;
break;
case WL_CRIMSONROCK:
dir = map->calc_dir(bl,skill->area_temp[4],skill->area_temp[5]);
break;
case MC_CARTREVOLUTION:
- dir = 6; // Official servers push target to the West
+ dir = UNIT_DIR_EAST; // Official servers push target to the West
break;
default:
dir = skill->attack_dir_unknown(&attack_type, src, dsrc, bl, &skill_id, &skill_lv, &tick, &flag);
@@ -3337,8 +3681,12 @@ static int skill_attack(int attack_type, struct block_list *src, struct block_li
case SR_KNUCKLEARROW:
if( skill->blown(dsrc,bl,dmg.blewcount,dir,0) && !(flag&4) ) {
short dir_x, dir_y;
- dir_x = dirx[(dir+4)%8];
- dir_y = diry[(dir+4)%8];
+ if (Assert_chk(dir >= UNIT_DIR_FIRST && dir < UNIT_DIR_MAX)) {
+ map->freeblock_unlock(); // unblock before assert-returning
+ return 0;
+ }
+ dir_x = dirx[unit_get_opposite_dir(dir)];
+ dir_y = diry[unit_get_opposite_dir(dir)];
if (map->getcell(bl->m, bl, bl->x + dir_x, bl->y + dir_y, CELL_CHKNOPASS) != 0)
skill->addtimerskill(src, tick + 300 * ((flag&2) ? 1 : 2), bl->id, 0, 0, skill_id, skill_lv, BF_WEAPON, flag|4);
}
@@ -3498,10 +3846,12 @@ static int skill_attack_copy_unknown(int *attack_type, struct block_list *src, s
static int skill_attack_dir_unknown(int *attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag)
{
- return -1;
+ return UNIT_DIR_UNDEFINED;
}
-static void skill_attack_blow_unknown(int *attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, int *type, struct Damage *dmg, int64 *damage, int8 *dir)
+static void skill_attack_blow_unknown(int *attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl,
+ uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, int *type,
+ struct Damage *dmg, int64 *damage, enum unit_dir *dir)
{
nullpo_retv(bl);
nullpo_retv(dmg);
@@ -3512,7 +3862,7 @@ static void skill_attack_blow_unknown(int *attack_type, struct block_list *src,
if (!dmg->blewcount && bl->type == BL_SKILL && *damage > 0){
struct skill_unit *su = BL_UCAST(BL_SKILL, bl);
if (su->group && su->group->skill_id == HT_BLASTMINE)
- skill->blown(src, bl, 3, -1, 0);
+ skill->blown(src, bl, 3, UNIT_DIR_UNDEFINED, 0);
}
}
@@ -3708,9 +4058,9 @@ static int skill_check_condition_mercenary(struct block_list *bl, int skill_id,
{
struct status_data *st;
struct map_session_data *sd = NULL;
- int i, hp, sp, hp_rate, sp_rate, state, mhp;
+ int hp, sp, hp_rate, sp_rate, state;
int idx;
- int itemid[MAX_SKILL_ITEM_REQUIRE], amount[MAX_SKILL_ITEM_REQUIRE], index[MAX_SKILL_ITEM_REQUIRE];
+ int itemid[MAX_SKILL_ITEM_REQUIRE], amount[MAX_SKILL_ITEM_REQUIRE];
if( lv < 1 || lv > MAX_SKILL_LEVEL )
return 0;
@@ -3726,17 +4076,16 @@ static int skill_check_condition_mercenary(struct block_list *bl, int skill_id,
return 0;
// Requirements
- for (i = 0; i < MAX_SKILL_ITEM_REQUIRE; i++) {
- itemid[i] = skill->dbs->db[idx].itemid[i];
- amount[i] = skill->dbs->db[idx].amount[i];
+ for (int i = 0; i < MAX_SKILL_ITEM_REQUIRE; i++) {
+ itemid[i] = skill->get_itemid(skill_id, i);
+ amount[i] = skill->get_itemqty(skill_id, i, lv);
}
hp = skill->dbs->db[idx].hp[lv-1];
sp = skill->dbs->db[idx].sp[lv-1];
hp_rate = skill->dbs->db[idx].hp_rate[lv-1];
sp_rate = skill->dbs->db[idx].sp_rate[lv-1];
- state = skill->dbs->db[idx].state;
- if( (mhp = skill->dbs->db[idx].mhp[lv-1]) > 0 )
- hp += (st->max_hp * mhp) / 100;
+ state = skill->dbs->db[idx].state[lv - 1];
+
if( hp_rate > 0 )
hp += (st->hp * hp_rate) / 100;
else
@@ -3769,6 +4118,20 @@ static int skill_check_condition_mercenary(struct block_list *bl, int skill_id,
clif->skill_fail(sd, skill_id, USESKILL_FAIL_SP_INSUFFICIENT, 0, 0);
return 0;
}
+
+ int mhp = skill->get_mhp(skill_id, lv);
+
+ if (mhp > 0 && get_percentage(st->hp, st->max_hp) > mhp) {
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_HP_INSUFFICIENT, 0, 0);
+ return 0;
+ }
+
+ int msp = skill->get_msp(skill_id, lv);
+
+ if (msp > 0 && get_percentage(st->sp, st->max_sp) > msp) {
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_SP_INSUFFICIENT, 0, 0);
+ return 0;
+ }
}
if( !type )
@@ -3783,23 +4146,32 @@ static int skill_check_condition_mercenary(struct block_list *bl, int skill_id,
if( !(type&1) )
return 1;
- // Check item existences
- for (i = 0; i < ARRAYLENGTH(itemid); i++) {
- index[i] = INDEX_NOT_FOUND;
- if (itemid[i] < 1) continue; // No item
- index[i] = pc->search_inventory(sd, itemid[i]);
- if (index[i] == INDEX_NOT_FOUND || sd->status.inventory[index[i]].amount < amount[i]) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_NEED_ITEM, amount[i], itemid[i]);
- return 0;
- }
- }
+ bool items_required = skill->items_required(sd, skill_id, lv);
+
+ if (items_required && skill->check_condition_required_items(sd, skill_id, lv) != 0)
+ return 0;
- // Consume items
- for (i = 0; i < ARRAYLENGTH(itemid); i++) {
- if (index[i] != INDEX_NOT_FOUND)
- pc->delitem(sd, index[i], amount[i], 0, DELITEM_SKILLUSE, LOG_TYPE_CONSUME);
+ int any_item_index = INDEX_NOT_FOUND;
+
+ if (items_required)
+ any_item_index = skill->get_any_item_index(sd, skill_id, lv);
+
+ for (int i = 0; i < MAX_SKILL_ITEM_REQUIRE && items_required; i++) {
+ if (itemid[i] == 0)
+ continue;
+
+ if (any_item_index != INDEX_NOT_FOUND && any_item_index != i)
+ continue;
+
+ int inventory_index = pc->search_inventory(sd, itemid[i]);
+
+ if (inventory_index != INDEX_NOT_FOUND)
+ pc->delitem(sd, inventory_index, amount[i], 0, DELITEM_SKILLUSE, LOG_TYPE_CONSUME);
}
+ if (skill->check_condition_required_equip(sd, skill_id, lv) != 0)
+ return 0;
+
if( type&2 )
return 1;
@@ -3887,7 +4259,7 @@ static int skill_timerskill(int tid, int64 tick, int id, intptr_t data)
clif->skill_nodamage(src,target,skl->skill_id,skl->skill_lv,1);
break;
case WZ_WATERBALL:
- skill->toggle_magicpower(src, skl->skill_id); // only the first hit will be amplify
+ skill->toggle_magicpower(src, skl->skill_id, skl->skill_lv); // only the first hit will be amplify
if (!status->isdead(target))
skill->attack(BF_MAGIC,src,src,target,skl->skill_id,skl->skill_lv,tick,skl->flag);
if (skl->type>1 && !status->isdead(target) && !status->isdead(src)) {
@@ -3907,7 +4279,7 @@ static int skill_timerskill(int tid, int64 tick, int id, intptr_t data)
**/
case WL_CHAINLIGHTNING_ATK:
skill->attack(BF_MAGIC, src, src, target, skl->skill_id, skl->skill_lv, tick, (9-skl->type)); // Hit a Lightning on the current Target
- skill->toggle_magicpower(src, skl->skill_id); // only the first hit will be amplify
+ skill->toggle_magicpower(src, skl->skill_id, skl->skill_lv); // only the first hit will be amplify
if (skl->type < (4 + skl->skill_lv - 1) && skl->x < 3) {
// Remaining Chains Hit
@@ -3927,7 +4299,7 @@ static int skill_timerskill(int tid, int64 tick, int id, intptr_t data)
case WL_TETRAVORTEX_GROUND:
clif->skill_nodamage(src, target, skl->skill_id, skl->skill_lv, 1);
skill->attack(BF_MAGIC, src, src, target, skl->skill_id, skl->skill_lv, tick, skl->flag);
- skill->toggle_magicpower(src, skl->skill_id); // only the first hit will be amplify
+ skill->toggle_magicpower(src, skl->skill_id, skl->skill_lv); // only the first hit will be amplify
if( skl->type == 4 ){
const enum sc_type scs[] = { SC_BURNING, SC_BLOODING, SC_FROSTMISTY, SC_STUN }; // status inflicts are depend on what summoned element is used.
int rate = skl->y, index = skl->x-1;
@@ -3936,7 +4308,7 @@ static int skill_timerskill(int tid, int64 tick, int id, intptr_t data)
break;
case WM_REVERBERATION_MELEE:
case WM_REVERBERATION_MAGIC:
- skill->attack(skill->get_type(skl->skill_id),src, src, target, skl->skill_id, skl->skill_lv, 0, SD_LEVEL);
+ skill->attack(skill->get_type(skl->skill_id, skl->skill_lv), src, src, target, skl->skill_id, skl->skill_lv, 0, SD_LEVEL);
break;
case SC_FATALMENACE:
if( src == target ) // Casters Part
@@ -4041,7 +4413,7 @@ static int skill_timerskill(int tid, int64 tick, int id, intptr_t data)
case LG_OVERBRAND_BRANDISH:
skill->area_temp[1] = 0;
map->foreachinpath(skill->attack_area,src->m,src->x,src->y,skl->x,skl->y,4,2,BL_CHAR,
- skill->get_type(skl->skill_id),src,src,skl->skill_id,skl->skill_lv,tick,skl->flag,BCT_ENEMY);
+ skill->get_type(skl->skill_id, skl->skill_lv), src, src, skl->skill_id, skl->skill_lv, tick, skl->flag, BCT_ENEMY);
break;
default:
skill->timerskill_notarget_unknown(tid, tick, src, ud, skl);
@@ -4190,11 +4562,6 @@ static void skill_castend_type(int type, struct block_list *src, struct block_li
skill->castend_damage_id(src, bl, skill_id, skill_lv, tick, flag);
break;
}
-
- struct map_session_data *sd = BL_CAST(BL_PC, src);
-
- if (sd != NULL)
- pc->itemskill_clear(sd);
}
/*==========================================
@@ -4223,12 +4590,12 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl
if (status->isdead(bl))
return 1;
- if (skill_id && skill->get_type(skill_id) == BF_MAGIC && status->isimmune(bl) == 100) {
+ if (skill_id != 0 && skill->get_type(skill_id, skill_lv) == BF_MAGIC && status->isimmune(bl) == 100) {
//GTB makes all targeted magic display miss with a single bolt.
sc_type sct = status->skill2sc(skill_id);
if(sct != SC_NONE)
status_change_end(bl, sct, INVALID_TIMER);
- clif->skill_damage(src, bl, tick, status_get_amotion(src), status_get_dmotion(bl), 0, 1, skill_id, skill_lv, skill->get_hit(skill_id));
+ clif->skill_damage(src, bl, tick, status_get_amotion(src), status_get_dmotion(bl), 0, 1, skill_id, skill_lv, skill->get_hit(skill_id, skill_lv));
return 1;
}
@@ -4406,7 +4773,7 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl
case KN_CHARGEATK: {
bool path_exists = path->search_long(NULL, src, src->m, src->x, src->y, bl->x, bl->y,CELL_CHKWALL);
unsigned int dist = distance_bl(src, bl);
- uint8 dir = map->calc_dir(bl, src->x, src->y);
+ enum unit_dir dir = map->calc_dir(bl, src->x, src->y);
// teleport to target (if not on WoE grounds)
if( !map_flag_gvg2(src->m) && !map->list[src->m].flag.battleground && unit->movepos(src, bl->x, bl->y, 0, 1) )
@@ -4418,7 +4785,7 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl
skill->blown(src, bl, dist, dir, 0);
//HACK: since knockback officially defaults to the left, the client also turns to the left... therefore,
// make the caster look in the direction of the target
- unit->setdir(src, (dir+4)%8);
+ unit->set_dir(src, unit_get_opposite_dir(dir));
}
}
@@ -4436,7 +4803,7 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl
skill->area_temp[1] = bl->id;
map->foreachinpath(skill->attack_area,src->m,src->x,src->y,bl->x,bl->y,
skill->get_splash(skill_id, skill_lv),skill->get_maxcount(skill_id,skill_lv), skill->splash_target(src),
- skill->get_type(skill_id),src,src,skill_id,skill_lv,tick,flag,BCT_ENEMY);
+ skill->get_type(skill_id, skill_lv), src, src, skill_id, skill_lv, tick, flag, BCT_ENEMY);
break;
case NPC_ACIDBREATH:
@@ -4447,7 +4814,7 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl
skill->area_temp[1] = bl->id;
map->foreachinpath(skill->attack_area,src->m,src->x,src->y,bl->x,bl->y,
skill->get_splash(skill_id, skill_lv),skill->get_maxcount(skill_id,skill_lv), skill->splash_target(src),
- skill->get_type(skill_id),src,src,skill_id,skill_lv,tick,flag,BCT_ENEMY);
+ skill->get_type(skill_id, skill_lv), src, src, skill_id, skill_lv, tick, flag, BCT_ENEMY);
break;
case MO_INVESTIGATE:
@@ -4457,12 +4824,13 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl
case RG_BACKSTAP:
{
- uint8 dir = map->calc_dir(src, bl->x, bl->y), t_dir = unit->getdir(bl);
- if ((!check_distance_bl(src, bl, 0) && !map->check_dir(dir, t_dir)) || bl->type == BL_SKILL) {
+ enum unit_dir dir = map->calc_dir(src, bl->x, bl->y);
+ enum unit_dir t_dir = unit->getdir(bl);
+ if ((!check_distance_bl(src, bl, 0) && map->check_dir(dir, t_dir) == 0) || bl->type == BL_SKILL) {
status_change_end(src, SC_HIDING, INVALID_TIMER);
skill->attack(BF_WEAPON, src, src, bl, skill_id, skill_lv, tick, flag);
- dir = dir < 4 ? dir+4 : dir-4; // change direction [Celest]
- unit->setdir(bl,dir);
+ dir = unit_get_opposite_dir(dir); // change direction [Celest]
+ unit->set_dir(bl, dir);
}
else if (sd)
clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
@@ -4489,7 +4857,6 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl
{
short x, y, i = 2; // Move 2 cells for Issen(from target)
struct block_list *mbl = bl;
- short dir = 0;
skill->attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,flag);
@@ -4511,13 +4878,13 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl
status->set_hp(src, 1, STATUS_HEAL_DEFAULT);
#endif // RENEWAL
}
- dir = map->calc_dir(src,bl->x,bl->y);
- if( dir > 0 && dir < 4) x = -i;
- else if( dir > 4 ) x = i;
- else x = 0;
- if( dir > 2 && dir < 6 ) y = -i;
- else if( dir == 7 || dir < 2 ) y = i;
- else y = 0;
+ enum unit_dir dir = map->calc_dir(src, bl->x, bl->y);
+ if (Assert_chk(dir >= UNIT_DIR_FIRST && dir < UNIT_DIR_MAX)) {
+ map->freeblock_unlock(); // unblock before assert-returning
+ return 0;
+ }
+ x = i * dirx[dir];
+ y = i * diry[dir];
if ((mbl == src || (!map_flag_gvg2(src->m) && !map->list[src->m].flag.battleground))) { // only NJ_ISSEN don't have slide effect in GVG
if (!(unit->movepos(src, mbl->x+x, mbl->y+y, 1, 1))) {
// The cell is not reachable (wall, object, ...), move next to the target
@@ -4619,7 +4986,7 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl
if ( tsc && tsc->data[SC_HOVERING] && ( skill_id == SR_WINDMILL || skill_id == LG_MOONSLASHER ) )
break;
- heal = skill->attack(skill->get_type(skill_id), src, src, bl, skill_id, skill_lv, tick, sflag);
+ heal = skill->attack(skill->get_type(skill_id, skill_lv), src, src, bl, skill_id, skill_lv, tick, sflag);
if (skill_id == NPC_VAMPIRE_GIFT && heal > 0) {
clif->skill_nodamage(NULL, src, AL_HEAL, heal, 1);
status->heal(src, heal, 0, STATUS_HEAL_DEFAULT);
@@ -4694,7 +5061,7 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl
case MS_MAGNUM:
if( flag&1 ) {
//Damage depends on distance, so add it to flag if it is > 1
- skill->attack(skill->get_type(skill_id), src, src, bl, skill_id, skill_lv, tick, flag|SD_ANIMATION|distance_bl(src, bl));
+ skill->attack(skill->get_type(skill_id, skill_lv), src, src, bl, skill_id, skill_lv, tick, flag|SD_ANIMATION|distance_bl(src, bl));
}
break;
@@ -4702,9 +5069,9 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl
case ML_BRANDISH:
//Coded apart for it needs the flag passed to the damage calculation.
if (skill->area_temp[1] != bl->id)
- skill->attack(skill->get_type(skill_id), src, src, bl, skill_id, skill_lv, tick, flag|SD_ANIMATION);
+ skill->attack(skill->get_type(skill_id, skill_lv), src, src, bl, skill_id, skill_lv, tick, flag|SD_ANIMATION);
else
- skill->attack(skill->get_type(skill_id), src, src, bl, skill_id, skill_lv, tick, flag);
+ skill->attack(skill->get_type(skill_id, skill_lv), src, src, bl, skill_id, skill_lv, tick, flag);
break;
case KN_BOWLINGBASH:
@@ -4744,12 +5111,12 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl
if(idb_exists(skill->bowling_db, bl->id))
break;
// Random direction
- dir = rnd()%8;
+ dir = rnd() % UNIT_DIR_MAX;
} else {
// Create an empty list of already hit targets
db_clear(skill->bowling_db);
// Direction is walkpath
- dir = (unit->getdir(src)+4)%8;
+ dir = unit_get_opposite_dir(unit->getdir(src));
}
// Add current target to the list of already hit targets
idb_put(skill->bowling_db, bl->id, bl);
@@ -4758,6 +5125,10 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl
ty = bl->y;
for(i=0;i<c;i++) {
// Target coordinates (get changed even if knockback fails)
+ if (Assert_chk(dir >= UNIT_DIR_FIRST && dir < UNIT_DIR_MAX)) {
+ map->freeblock_unlock(); // unblock before assert-returning
+ return 0;
+ }
tx -= dirx[dir];
ty -= diry[dir];
// If target cell is a wall then break
@@ -4786,18 +5157,24 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl
if (bl->id==skill->area_temp[1])
break;
if (skill->attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,SD_ANIMATION))
- skill->blown(src,bl,skill->area_temp[2],-1,0);
+ skill->blown(src, bl, skill->area_temp[2], UNIT_DIR_UNDEFINED, 0);
} else {
- int x=bl->x,y=bl->y,i,dir;
- dir = map->calc_dir(bl,src->x,src->y);
+ int x = bl->x;
+ int y = bl->y;
+ int i;
+ enum unit_dir dir = map->calc_dir(bl, src->x, src->y);
skill->area_temp[1] = bl->id;
skill->area_temp[2] = skill->get_blewcount(skill_id,skill_lv);
// all the enemies between the caster and the target are hit, as well as the target
if (skill->attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,0))
- skill->blown(src,bl,skill->area_temp[2],-1,0);
+ skill->blown(src, bl, skill->area_temp[2], UNIT_DIR_UNDEFINED, 0);
for (i=0;i<4;i++) {
map->foreachincell(skill->area_sub,bl->m,x,y,BL_CHAR,src,skill_id,skill_lv,
tick,flag|BCT_ENEMY|1,skill->castend_damage_id);
+ if (Assert_chk(dir >= UNIT_DIR_FIRST && dir < UNIT_DIR_MAX)) {
+ map->freeblock_unlock(); // unblock before assert-returning
+ return 0;
+ }
x += dirx[dir];
y += diry[dir];
}
@@ -4954,7 +5331,7 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl
if( (tsc = status->get_sc(bl)) && (tsc->data[SC_HIDING] )) {
clif->skill_nodamage(src,src,skill_id,skill_lv,1);
} else
- skill->attack(BF_MISC,src,src,bl,skill_id,skill_lv,tick,flag);
+ skill->attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,flag);
}
break;
case NPC_SELFDESTRUCTION: {
@@ -5019,7 +5396,7 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl
if(rnd()%100 < (10 + 3*skill_lv)) {
if( !sd || pc->checkskill(sd,KN_SPEARBOOMERANG) == 0 )
break; // Spear Boomerang auto cast chance only works if you have mastered Spear Boomerang.
- skill->blown(src,bl,6,-1,0);
+ skill->blown(src, bl, 6, UNIT_DIR_UNDEFINED, 0);
skill->addtimerskill(src,tick+800,bl->id,0,0,skill_id,skill_lv,BF_WEAPON,flag);
skill->castend_damage_id(src,bl,KN_SPEARBOOMERANG,1,tick,0);
}
@@ -5027,7 +5404,7 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl
case RK_PHANTOMTHRUST:
{
struct map_session_data *tsd = BL_CAST(BL_PC, bl);
- unit->setdir(src,map->calc_dir(src, bl->x, bl->y));
+ unit->set_dir(src, map->calc_dir(src, bl->x, bl->y));
clif->skill_nodamage(src,bl,skill_id,skill_lv,1);
skill->blown(src,bl,distance_bl(src,bl)-1,unit->getdir(src),0);
@@ -5041,16 +5418,13 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl
case KO_JYUMONJIKIRI:
case GC_DARKILLUSION:
{
- short x, y;
- short dir = map->calc_dir(bl, src->x, src->y);
-
- if ( dir < 4 ) {
- x = bl->x + 2 * (dir > 0) - 3 * (dir > 0);
- y = bl->y + 1 - (dir / 2) - (dir > 2);
- } else {
- x = bl->x + 2 * (dir > 4) - 1 * (dir > 4);
- y = bl->y + (dir / 6) - 1 + (dir > 6);
+ enum unit_dir dir = map->calc_dir(bl, src->x, src->y);
+ if (Assert_chk(dir >= UNIT_DIR_FIRST && dir < UNIT_DIR_MAX)) {
+ map->freeblock_unlock(); // unblock before assert-returning
+ return 0;
}
+ short x = bl->x + dirx[dir];
+ short y = bl->y + diry[dir];
if ( unit->movepos(src, x, y, 1, 1) ) {
clif->slide(src, x, y);
@@ -5092,7 +5466,7 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl
break;
case WL_DRAINLIFE:
{
- int heal = skill->attack(skill->get_type(skill_id), src, src, bl, skill_id, skill_lv, tick, flag);
+ int heal = skill->attack(skill->get_type(skill_id, skill_lv), src, src, bl, skill_id, skill_lv, tick, flag);
int rate = 70 + 5 * skill_lv;
heal = heal * (5 + 5 * skill_lv) / 100;
@@ -5138,7 +5512,7 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl
if (sd) {
int i;
clif->skill_nodamage(src, bl, skill_id, skill_lv, 1);
- skill->toggle_magicpower(src, skill_id);
+ skill->toggle_magicpower(src, skill_id, skill_lv);
// Priority is to release SpellBook
if (sc && sc->data[SC_READING_SB]) {
// SpellBook
@@ -5207,14 +5581,16 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl
skill->attack(BF_MAGIC,src,src,bl,skill_id,skill_lv,tick,flag|ELE_DARK);
break;
case RA_WUGSTRIKE:
- if( sd && pc_isridingwug(sd) ){
- short x[8]={0,-1,-1,-1,0,1,1,1};
- short y[8]={1,1,0,-1,-1,-1,0,1};
- uint8 dir = map->calc_dir(bl, src->x, src->y);
-
- if( unit->movepos(src, bl->x+x[dir], bl->y+y[dir], 1, 1) )
- {
- clif->slide(src, bl->x+x[dir], bl->y+y[dir]);
+ if (sd != NULL && pc_isridingwug(sd)) {
+ enum unit_dir dir = map->calc_dir(bl, src->x, src->y);
+ if (Assert_chk(dir >= UNIT_DIR_FIRST && dir < UNIT_DIR_MAX)) {
+ map->freeblock_unlock(); // unblock before assert-returning
+ return 0;
+ }
+ short x = bl->x + dirx[dir];
+ short y = bl->y + diry[dir];
+ if (unit->movepos(src, x, y, 1, 1) != 0) {
+ clif->slide(src, x, y);
clif->fixpos(src);
skill->attack(BF_WEAPON, src, src, bl, skill_id, skill_lv, tick, flag);
}
@@ -5380,7 +5756,7 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl
{
struct status_change *tsc = status->get_sc(bl);
if( tsc && tsc->data[SC_POISON] ) {
- skill->attack(skill->get_type(skill_id), src, src, bl, skill_id, skill_lv, tick, flag);
+ skill->attack(skill->get_type(skill_id, skill_lv), src, src, bl, skill_id, skill_lv, tick, flag);
status_change_end(bl, SC_POISON, INVALID_TIMER);
} else if( sd )
clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
@@ -5402,7 +5778,7 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl
case EL_HURRICANE:
case EL_TYPOON_MIS:
if( flag&1 )
- skill->attack(skill->get_type(skill_id+1),src,src,bl,skill_id+1,skill_lv,tick,flag);
+ skill->attack(skill->get_type(skill_id + 1, skill_lv), src, src, bl, skill_id + 1, skill_lv, tick, flag);
else {
int i = skill->get_splash(skill_id,skill_lv);
clif->skill_nodamage(src,battle->get_master(src),skill_id,skill_lv,1);
@@ -5410,7 +5786,7 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl
if( rnd()%100 < 30 )
map->foreachinrange(skill->area_sub,bl,i,BL_CHAR,src,skill_id,skill_lv,tick,flag|BCT_ENEMY|1,skill->castend_damage_id);
else
- skill->attack(skill->get_type(skill_id),src,src,bl,skill_id,skill_lv,tick,flag);
+ skill->attack(skill->get_type(skill_id, skill_lv), src, src, bl, skill_id, skill_lv, tick, flag);
}
break;
@@ -5425,7 +5801,7 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl
case EL_STONE_RAIN:
if( flag&1 )
- skill->attack(skill->get_type(skill_id),src,src,bl,skill_id,skill_lv,tick,flag);
+ skill->attack(skill->get_type(skill_id, skill_lv), src, src, bl, skill_id, skill_lv, tick, flag);
else {
int i = skill->get_splash(skill_id,skill_lv);
clif->skill_nodamage(src,battle->get_master(src),skill_id,skill_lv,1);
@@ -5433,7 +5809,7 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl
if( rnd()%100 < 30 )
map->foreachinrange(skill->area_sub,bl,i,BL_CHAR,src,skill_id,skill_lv,tick,flag|BCT_ENEMY|1,skill->castend_damage_id);
else
- skill->attack(skill->get_type(skill_id),src,src,bl,skill_id,skill_lv,tick,flag);
+ skill->attack(skill->get_type(skill_id, skill_lv), src, src, bl, skill_id, skill_lv, tick, flag);
}
break;
@@ -5443,7 +5819,7 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl
case EL_STONE_HAMMER:
clif->skill_nodamage(src,battle->get_master(src),skill_id,skill_lv,1);
clif->skill_damage(src, bl, tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, BDT_SKILL);
- skill->attack(skill->get_type(skill_id),src,src,bl,skill_id,skill_lv,tick,flag);
+ skill->attack(skill->get_type(skill_id, skill_lv), src, src, bl, skill_id, skill_lv, tick, flag);
break;
case EL_TIDAL_WEAPON:
@@ -5460,7 +5836,7 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl
elemental->clean_single_effect(ele, skill_id);
}
if( rnd()%100 < 50 )
- skill->attack(skill->get_type(skill_id),src,src,bl,skill_id,skill_lv,tick,flag);
+ skill->attack(skill->get_type(skill_id, skill_lv), src, src, bl, skill_id, skill_lv, tick, flag);
else {
sc_start(src, src,type2,100,skill_lv,skill->get_time(skill_id,skill_lv));
sc_start(src, battle->get_master(src),type,100,ele->bl.id,skill->get_time(skill_id,skill_lv));
@@ -5473,7 +5849,7 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl
case MH_MAGMA_FLOW:
case MH_HEILIGE_STANGE:
if(flag & 1)
- skill->attack(skill->get_type(skill_id), src, src, bl, skill_id, skill_lv, tick, flag);
+ skill->attack(skill->get_type(skill_id, skill_lv), src, src, bl, skill_id, skill_lv, tick, flag);
else {
map->foreachinrange(skill->area_sub, bl, skill->get_splash(skill_id, skill_lv), skill->splash_target(src), src, skill_id, skill_lv, tick, flag | BCT_ENEMY | SD_SPLASH | 1, skill->castend_damage_id);
}
@@ -5497,7 +5873,7 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl
break;
case SU_SV_STEMSPEAR:
- skill->attack(skill->get_type(skill_id), src, src, bl, skill_id, skill_lv, tick, flag);
+ skill->attack(skill->get_type(skill_id, skill_lv), src, src, bl, skill_id, skill_lv, tick, flag);
if (status->get_lv(src) >= 30 && (rnd() % 100 < (int)(status->get_lv(src) / 30) + 10)) // TODO: Need activation chance.
skill->addtimerskill(src, tick + skill->get_delay(skill_id, skill_lv), bl->id, 0, 0, skill_id, skill_lv, (skill_id == SU_SV_STEMSPEAR) ? BF_MAGIC : BF_WEAPON, flag);
break;
@@ -5557,7 +5933,7 @@ static bool skill_castend_damage_id_unknown(struct block_list *src, struct block
ShowWarning("skill_castend_damage_id: Unknown skill used:%d\n", *skill_id);
clif->skill_damage(src, bl, *tick, status_get_amotion(src), tstatus->dmotion,
0, abs(skill->get_num(*skill_id, *skill_lv)),
- *skill_id, *skill_lv, skill->get_hit(*skill_id));
+ *skill_id, *skill_lv, skill->get_hit(*skill_id, *skill_lv));
map->freeblock_unlock();
return true;
}
@@ -5657,8 +6033,9 @@ static int skill_castend_id(int tid, int64 tick, int id, intptr_t data)
}
if(ud->skill_id == RG_BACKSTAP) {
- uint8 dir = map->calc_dir(src,target->x,target->y),t_dir = unit->getdir(target);
- if(check_distance_bl(src, target, 0) || map->check_dir(dir,t_dir)) {
+ enum unit_dir dir = map->calc_dir(src, target->x, target->y);
+ enum unit_dir t_dir = unit->getdir(target);
+ if (check_distance_bl(src, target, 0) || map->check_dir(dir, t_dir) != 0) {
break;
}
}
@@ -5775,7 +6152,7 @@ static int skill_castend_id(int tid, int64 tick, int id, intptr_t data)
if (ud->walktimer != INVALID_TIMER && ud->skill_id != TK_RUN && ud->skill_id != RA_WUGDASH)
unit->stop_walking(src, STOPWALKING_FLAG_FIXPOS);
- if( !sd || sd->skillitem != ud->skill_id || skill->get_delay(ud->skill_id,ud->skill_lv) )
+ if (sd == NULL || sd->auto_cast_current.skill_id != ud->skill_id || skill->get_delay(ud->skill_id, ud->skill_lv) != 0)
ud->canact_tick = tick + skill->delay_fix(src, ud->skill_id, ud->skill_lv); // Tests show wings don't overwrite the delay but skill scrolls do. [Inkfish]
if (sd) { // Cooldown application
int i, cooldown = skill->get_cooldown(ud->skill_id, ud->skill_lv);
@@ -5808,7 +6185,7 @@ static int skill_castend_id(int tid, int64 tick, int id, intptr_t data)
break;
}
}
- if (skill->get_state(ud->skill_id) != ST_MOVE_ENABLE)
+ if (skill->get_state(ud->skill_id, ud->skill_lv) != ST_MOVE_ENABLE)
unit->set_walkdelay(src, tick, battle_config.default_walk_delay+skill->get_walkdelay(ud->skill_id, ud->skill_lv), 1);
if(battle_config.skill_log && battle_config.skill_log&src->type)
@@ -5818,7 +6195,7 @@ static int skill_castend_id(int tid, int64 tick, int id, intptr_t data)
map->freeblock_lock();
// SC_MAGICPOWER needs to switch states before any damage is actually dealt
- skill->toggle_magicpower(src, ud->skill_id);
+ skill->toggle_magicpower(src, ud->skill_id, ud->skill_lv);
#if 0 // On aegis damage skills are also increase by camouflage. Need confirmation on kRO.
if( ud->skill_id != RA_CAMOUFLAGE ) // only normal attack and auto cast skills benefit from its bonuses
@@ -5843,8 +6220,10 @@ static int skill_castend_id(int tid, int64 tick, int id, intptr_t data)
skill->blockpc_start(sd,BD_ADAPTATION,3000);
}
- if( sd && ud->skill_id != SA_ABRACADABRA && ud->skill_id != WM_RANDOMIZESPELL ) // they just set the data so leave it as it is.[Inkfish]
- sd->skillitem = sd->skillitemlv = 0;
+ if (sd != NULL && ud->skill_id != SA_ABRACADABRA && ud->skill_id != WM_RANDOMIZESPELL
+ && ud->skill_id == sd->auto_cast_current.skill_id) { // they just set the data so leave it as it is.[Inkfish]
+ pc->autocast_remove(sd, sd->auto_cast_current.type, ud->skill_id, ud->skill_lv);
+ }
if (ud->skilltimer == INVALID_TIMER) {
if(md) md->skill_idx = -1;
@@ -5854,7 +6233,7 @@ static int skill_castend_id(int tid, int64 tick, int id, intptr_t data)
// Asura Strike caster doesn't look to their target in the end
if (src->id != target->id && !is_asura)
- unit->setdir(src, map->calc_dir(src, target->x, target->y));
+ unit->set_dir(src, map->calc_dir(src, target->x, target->y));
map->freeblock_unlock();
return 1;
@@ -5877,25 +6256,13 @@ static int skill_castend_id(int tid, int64 tick, int id, intptr_t data)
}
if (target && target->m == src->m) {
//Move character to target anyway.
- int dir, x, y;
+ enum unit_dir dir = map->calc_dir(src, target->x, target->y);
+ Assert_ret(dir >= UNIT_DIR_FIRST && dir < UNIT_DIR_MAX);
int dist = 3; // number of cells that asura caster will walk
+ int x = dist * dirx[dir];
+ int y = dist * diry[dir];
- dir = map->calc_dir(src,target->x,target->y);
- if (dir > 0 && dir < 4)
- x = -dist;
- else if (dir > 4)
- x = dist;
- else
- x = 0;
-
- if (dir > 2 && dir < 6)
- y = -dist;
- else if (dir == 7 || dir < 2)
- y = dist;
- else
- y = 0;
-
- if (unit->movepos(src, src->x + x, src->y + y, 1, 1) == 1) {
+ if (unit->movepos(src, src->x + x, src->y + y, 1, 1) != 0) {
//Display movement + animation.
clif->slide(src, src->x, src->y);
clif->spiritball(src);
@@ -5905,16 +6272,20 @@ static int skill_castend_id(int tid, int64 tick, int id, intptr_t data)
}
}
- if( !sd || sd->skillitem != ud->skill_id || skill->get_delay(ud->skill_id,ud->skill_lv) )
+ if (sd == NULL || sd->auto_cast_current.skill_id != ud->skill_id || skill->get_delay(ud->skill_id, ud->skill_lv) != 0)
ud->canact_tick = tick;
- ud->skill_id = ud->skill_lv = ud->skilltarget = 0;
//You can't place a skill failed packet here because it would be
//sent in ALL cases, even cases where skill_check_condition fails
//which would lead to double 'skill failed' messages u.u [Skotlex]
- if(sd)
- sd->skillitem = sd->skillitemlv = 0;
+ if (sd != NULL && ud->skill_id == sd->auto_cast_current.skill_id)
+ pc->autocast_remove(sd, sd->auto_cast_current.type, ud->skill_id, ud->skill_lv);
else if(md)
md->skill_idx = -1;
+
+ ud->skill_id = 0;
+ ud->skill_lv = 0;
+ ud->skilltarget = 0;
+
return 0;
}
@@ -6096,7 +6467,7 @@ static int skill_castend_nodamage_id(struct block_list *src, struct block_list *
if (skill->castend_nodamage_id_undead_unknown(src, bl, &skill_id, &skill_lv, &tick, &flag))
{
//Skill is actually ground placed.
- if (src == bl && skill->get_unit_id(skill_id,0))
+ if (src == bl && skill->get_unit_id(skill_id, skill_lv, 0) != 0)
return skill->castend_pos2(src,bl->x,bl->y,skill_id,skill_lv,tick,0);
}
break;
@@ -6294,9 +6665,12 @@ static int skill_castend_nodamage_id(struct block_list *src, struct block_list *
if (sd) {
// player-casted
- sd->state.abra_flag = 1;
- sd->skillitem = abra_skill_id;
- sd->skillitemlv = abra_skill_lv;
+ pc->autocast_clear(sd);
+ sd->auto_cast_current.type = AUTOCAST_ABRA;
+ sd->auto_cast_current.skill_id = abra_skill_id;
+ sd->auto_cast_current.skill_lv = abra_skill_lv;
+ VECTOR_ENSURE(sd->auto_cast, 1, 1);
+ VECTOR_PUSH(sd->auto_cast, sd->auto_cast_current);
clif->item_skill(sd, abra_skill_id, abra_skill_lv);
} else {
// mob-casted
@@ -7344,7 +7718,7 @@ static int skill_castend_nodamage_id(struct block_list *src, struct block_list *
int rate = 100 * (100 - (tstatus->int_ / 2 + tstatus->vit / 3 + tstatus->luk / 10));
int duration = skill->get_time2(skill_id, skill_lv);
- duration *= (100 - (tstatus->int_ + tstatus->vit) / 2) / 100;
+ duration = duration * (100 - (tstatus->int_ + tstatus->vit) / 2) / 100;
status->change_start(src, bl, SC_BLIND, rate, 1, 0, 0, 0, duration, SCFLAG_NONE);
}
@@ -7425,7 +7799,7 @@ static int skill_castend_nodamage_id(struct block_list *src, struct block_list *
map->freeblock_unlock();
return 1;
}
- if( sd->skillitem != skill_id )
+ if (sd->auto_cast_current.type == AUTOCAST_NONE)
status_zap(src, 0, skill->get_sp(skill_id, skill_lv)); // consume sp only if succeeded
}
break;
@@ -7462,7 +7836,7 @@ static int skill_castend_nodamage_id(struct block_list *src, struct block_list *
break;
}
- if( sd->state.autocast || ( (sd->skillitem == AL_TELEPORT || battle_config.skip_teleport_lv1_menu) && skill_lv == 1 ) || skill_lv == 3 )
+ if (sd->auto_cast_current.type == AUTOCAST_TEMP || ((sd->auto_cast_current.skill_id == AL_TELEPORT || battle_config.skip_teleport_lv1_menu) && skill_lv == 1) || skill_lv == 3)
{
if( skill_lv == 1 )
pc->randomwarp(sd,CLR_TELEPORT);
@@ -7603,7 +7977,14 @@ static int skill_castend_nodamage_id(struct block_list *src, struct block_list *
}
if( sd ) {
int bonus = 100, potion = min(500+skill_lv,505);
- int item_idx = (skill_lv - 1) % MAX_SKILL_ITEM_REQUIRE;
+ int item_idx = skill->get_item_index(skill_id, skill_lv);
+
+ if (item_idx == INDEX_NOT_FOUND) {
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
+ map->freeblock_unlock();
+ return 1;
+ }
+
int item_id = skill->get_itemid(skill_id, item_idx);
int inventory_idx = pc->search_inventory(sd, item_id);
if (inventory_idx == INDEX_NOT_FOUND || item_id <= 0) {
@@ -7611,7 +7992,7 @@ static int skill_castend_nodamage_id(struct block_list *src, struct block_list *
map->freeblock_unlock();
return 1;
}
- if (sd->inventory_data[inventory_idx] == NULL || sd->status.inventory[inventory_idx].amount < skill->get_itemqty(skill_id, item_idx)) {
+ if (sd->inventory_data[inventory_idx] == NULL || sd->status.inventory[inventory_idx].amount < skill->get_itemqty(skill_id, item_idx, skill_lv)) {
clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
map->freeblock_unlock();
return 1;
@@ -7835,7 +8216,9 @@ static int skill_castend_nodamage_id(struct block_list *src, struct block_list *
case TK_HIGHJUMP:
{
- int x,y, dir = unit->getdir(src);
+ int x;
+ int y;
+ enum unit_dir dir = unit->getdir(src);
//Fails on noteleport maps, except for GvG and BG maps [Skotlex]
if( map->list[src->m].flag.noteleport
@@ -8084,11 +8467,19 @@ static int skill_castend_nodamage_id(struct block_list *src, struct block_list *
case NPC_RUN:
{
- const int mask[8][2] = {{0,-1},{1,-1},{1,0},{1,1},{0,1},{-1,1},{-1,0},{-1,-1}};
- uint8 dir = (bl == src)?unit->getdir(src):map->calc_dir(src,bl->x,bl->y); //If cast on self, run forward, else run away.
+ enum unit_dir dir;
+ if (bl == src) //If cast on self, run forward, else run away.
+ dir = unit->getdir(src);
+ else
+ dir = map->calc_dir(src, bl->x, bl->y);
+ if (Assert_chk(dir >= UNIT_DIR_FIRST && dir < UNIT_DIR_MAX)) {
+ map->freeblock_unlock(); // unblock before assert-returning
+ return 0;
+ }
unit->stop_attack(src);
//Run skillv tiles overriding the can-move check.
- if (unit->walktoxy(src, src->x + skill_lv * mask[dir][0], src->y + skill_lv * mask[dir][1], 2) && md)
+ if (unit->walk_toxy(src, src->x + skill_lv * -dirx[dir], src->y + skill_lv * -diry[dir], 2) == 0
+ && md != NULL)
md->state.skillstate = MSS_WALK; //Otherwise it isn't updated in the AI.
}
break;
@@ -8229,7 +8620,7 @@ static int skill_castend_nodamage_id(struct block_list *src, struct block_list *
if (nameid > 0) {
int success;
struct item item_tmp = { 0 };
- int amount = skill->get_itemqty(su->group->skill_id, i);
+ int amount = skill->get_itemqty(su->group->skill_id, i, skill_lv);
item_tmp.nameid = nameid;
item_tmp.identify = 1;
if ((success = pc->additem(sd, &item_tmp, amount, LOG_TYPE_SKILL)) != 0) {
@@ -9449,7 +9840,9 @@ static int skill_castend_nodamage_id(struct block_list *src, struct block_list *
case NC_F_SIDESLIDE:
case NC_B_SIDESLIDE:
{
- uint8 dir = (skill_id == NC_F_SIDESLIDE) ? (unit->getdir(src)+4)%8 : unit->getdir(src);
+ enum unit_dir dir = unit->getdir(src);
+ if (skill_id == NC_F_SIDESLIDE)
+ dir = unit_get_opposite_dir(dir);
skill->blown(src,bl,skill->get_blewcount(skill_id,skill_lv),dir,0);
clif->slide(src,src->x,src->y);
clif->skill_nodamage(src,bl,skill_id,skill_lv,1);
@@ -10024,9 +10417,12 @@ static int skill_castend_nodamage_id(struct block_list *src, struct block_list *
clif->skill_nodamage (src, bl, skill_id, skill_lv, 1);
if (sd != NULL) {
- sd->state.abra_flag = 2;
- sd->skillitem = improv_skill_id;
- sd->skillitemlv = improv_skill_lv;
+ pc->autocast_clear(sd);
+ sd->auto_cast_current.type = AUTOCAST_IMPROVISE;
+ sd->auto_cast_current.skill_id = improv_skill_id;
+ sd->auto_cast_current.skill_lv = improv_skill_lv;
+ VECTOR_ENSURE(sd->auto_cast, 1, 1);
+ VECTOR_PUSH(sd->auto_cast, sd->auto_cast_current);
clif->item_skill(sd, improv_skill_id, improv_skill_lv);
} else {
struct unit_data *ud = unit->bl2ud(src);
@@ -10419,7 +10815,7 @@ static int skill_castend_nodamage_id(struct block_list *src, struct block_list *
case KO_KAZEHU_SEIRAN:
case KO_DOHU_KOUKAI:
if(sd) {
- int ttype = skill->get_ele(skill_id, skill_lv);
+ enum spirit_charm_types ttype = skill->get_ele(skill_id, skill_lv);
clif->skill_nodamage(src, bl, skill_id, skill_lv, 1);
pc->add_charm(sd, skill->get_time(skill_id, skill_lv), MAX_SPIRITCHARM, ttype); // replace existing charms of other type
}
@@ -10795,7 +11191,7 @@ static int skill_castend_pos(int tid, int64 tick, int id, intptr_t data)
if (ud->walktimer != INVALID_TIMER)
unit->stop_walking(src, STOPWALKING_FLAG_FIXPOS);
- if( !sd || sd->skillitem != ud->skill_id || skill->get_delay(ud->skill_id,ud->skill_lv) )
+ if (sd == NULL || sd->auto_cast_current.skill_id != ud->skill_id || skill->get_delay(ud->skill_id, ud->skill_lv) != 0)
ud->canact_tick = tick + skill->delay_fix(src, ud->skill_id, ud->skill_lv);
if (sd) { //Cooldown application
int i, cooldown = skill->get_cooldown(ud->skill_id, ud->skill_lv);
@@ -10824,10 +11220,10 @@ static int skill_castend_pos(int tid, int64 tick, int id, intptr_t data)
map->freeblock_lock();
skill->castend_pos2(src,ud->skillx,ud->skilly,ud->skill_id,ud->skill_lv,tick,0);
- if( sd && sd->skillitem != AL_WARP ) // Warp-Portal thru items will clear data in skill_castend_map. [Inkfish]
- sd->skillitem = sd->skillitemlv = 0;
+ if (sd != NULL && ud->skill_id != AL_WARP && ud->skill_id == sd->auto_cast_current.skill_id) // Warp-Portal thru items will clear data in skill_castend_map. [Inkfish]
+ pc->autocast_remove(sd, sd->auto_cast_current.type, ud->skill_id, ud->skill_lv);
- unit->setdir(src, map->calc_dir(src, ud->skillx, ud->skilly));
+ unit->set_dir(src, map->calc_dir(src, ud->skillx, ud->skilly));
if (ud->skilltimer == INVALID_TIMER) {
if (md) md->skill_idx = -1;
@@ -10839,13 +11235,17 @@ static int skill_castend_pos(int tid, int64 tick, int id, intptr_t data)
return 1;
} while(0);
- if( !sd || sd->skillitem != ud->skill_id || skill->get_delay(ud->skill_id,ud->skill_lv) )
+ if (sd == NULL || sd->auto_cast_current.skill_id != ud->skill_id || skill->get_delay(ud->skill_id, ud->skill_lv) != 0)
ud->canact_tick = tick;
- ud->skill_id = ud->skill_lv = 0;
- if(sd)
- sd->skillitem = sd->skillitemlv = 0;
+
+ if (sd != NULL && ud->skill_id == sd->auto_cast_current.skill_id)
+ pc->autocast_remove(sd, sd->auto_cast_current.type, ud->skill_id, ud->skill_lv);
else if(md)
md->skill_idx = -1;
+
+ ud->skill_id = 0;
+ ud->skill_lv = 0;
+
return 0;
}
@@ -10876,6 +11276,37 @@ static int skill_count_wos(struct block_list *bl, va_list ap)
return 0;
}
+/**
+ * Returns the linked song/dance skill ID, if any (for the Bard/Dancer Soul Link).
+ *
+ * @param skill_id The skill ID to look up
+ *
+ * @return The linked song or dance's skill ID if any
+ * @retval 0 if the given skill_id doesn't have a linked skill ID
+ */
+static int skill_get_linked_song_dance_id(int skill_id)
+{
+ switch (skill_id) {
+ case BA_WHISTLE:
+ return DC_HUMMING;
+ case BA_ASSASSINCROSS:
+ return DC_DONTFORGETME;
+ case BA_POEMBRAGI:
+ return DC_FORTUNEKISS;
+ case BA_APPLEIDUN:
+ return DC_SERVICEFORYOU;
+ case DC_HUMMING:
+ return BA_WHISTLE;
+ case DC_DONTFORGETME:
+ return BA_ASSASSINCROSS;
+ case DC_FORTUNEKISS:
+ return BA_POEMBRAGI;
+ case DC_SERVICEFORYOU:
+ return BA_APPLEIDUN;
+ }
+ return 0;
+}
+
/*==========================================
*
*------------------------------------------*/
@@ -10928,17 +11359,21 @@ static int skill_castend_map(struct map_session_data *sd, uint16 skill_id, const
return 0;
}
- switch(skill_id) {
+ switch (skill_id) {
case AL_TELEPORT:
- // The storage window is closed automatically by the client when there's
- // any kind of map change, so we need to restore it automatically
- // issue: 8027
- if(strcmp(mapname,"Random")==0)
- pc->randomwarp(sd,CLR_TELEPORT);
- else if (sd->menuskill_val > 1) //Need lv2 to be able to warp here.
- pc->setpos(sd,sd->status.save_point.map,sd->status.save_point.x,sd->status.save_point.y,CLR_TELEPORT);
-
- clif->refresh_storagewindow(sd);
+ if (strcmp(mapname, "Random") == 0)
+ pc->randomwarp(sd, CLR_TELEPORT);
+ else if (sd->menuskill_val > 1) // Need lv2 to be able to warp here.
+ pc->setpos(sd, sd->status.save_point.map, sd->status.save_point.x, sd->status.save_point.y, CLR_TELEPORT);
+
+ if (battle_config.teleport_close_storage == 1 && sd->state.storage_flag != STORAGE_FLAG_CLOSED) {
+ if (sd->state.storage_flag == STORAGE_FLAG_NORMAL)
+ storage->close(sd);
+ if (sd->state.storage_flag == STORAGE_FLAG_GUILD)
+ gstorage->close(sd);
+ } else {
+ clif->refresh_storagewindow(sd);
+ }
break;
case AL_WARP:
@@ -10973,7 +11408,7 @@ static int skill_castend_map(struct map_session_data *sd, uint16 skill_id, const
}
}
- lv = sd->skillitem==skill_id?sd->skillitemlv:pc->checkskill(sd,skill_id);
+ lv = (sd->auto_cast_current.type > AUTOCAST_TEMP) ? sd->auto_cast_current.skill_lv : pc->checkskill(sd, skill_id);
wx = sd->menuskill_val>>16;
wy = sd->menuskill_val&0xffff;
@@ -10996,7 +11431,10 @@ static int skill_castend_map(struct map_session_data *sd, uint16 skill_id, const
}
skill->consume_requirement(sd,sd->menuskill_id,lv,2);
- sd->skillitem = sd->skillitemlv = 0; // Clear data that's skipped in 'skill_castend_pos' [Inkfish]
+
+ // Clear data which was skipped in skill_castend_pos().
+ pc->autocast_remove(sd, sd->auto_cast_current.type, sd->auto_cast_current.skill_id,
+ sd->auto_cast_current.skill_lv);
if((group=skill->unitsetting(&sd->bl,skill_id,lv,wx,wy,0))==NULL) {
skill_failed(sd);
@@ -11057,7 +11495,7 @@ static int skill_castend_pos2(struct block_list *src, int x, int y, uint16 skill
}
// SC_MAGICPOWER needs to switch states before any damage is actually dealt
- skill->toggle_magicpower(src, skill_id);
+ skill->toggle_magicpower(src, skill_id, skill_lv);
switch(skill_id) {
case PR_BENEDICTIO:
@@ -11245,7 +11683,7 @@ static int skill_castend_pos2(struct block_list *src, int x, int y, uint16 skill
FALLTHROUGH
case GS_GROUNDDRIFT: //Ammo should be deleted right away.
if ( skill_id == WM_SEVERE_RAINSTORM )
- sc_start(src,src,SC_NO_SWITCH_EQUIP,100,0,skill->get_time(skill_id,skill_lv));
+ sc_start(src, src, type, 100, 0, skill->get_time(skill_id, skill_lv));
skill->unitsetting(src,skill_id,skill_lv,x,y,0);
break;
case WZ_ICEWALL:
@@ -11410,13 +11848,19 @@ static int skill_castend_pos2(struct block_list *src, int x, int y, uint16 skill
// Slim Pitcher [Celest]
case CR_SLIMPITCHER:
if (sd) {
- int item_idx = (skill_lv - 1) % MAX_SKILL_ITEM_REQUIRE;
+ int item_idx = skill->get_item_index(skill_id, skill_lv);
+
+ if (item_idx == INDEX_NOT_FOUND) {
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
+ return 1;
+ }
+
int item_id = skill->get_itemid(skill_id, item_idx);
int inventory_idx = pc->search_inventory(sd, item_id);
int bonus;
if (inventory_idx == INDEX_NOT_FOUND || item_id <= 0
|| sd->inventory_data[inventory_idx] == NULL
- || sd->status.inventory[inventory_idx].amount < skill->get_itemqty(skill_id, item_idx)
+ || sd->status.inventory[inventory_idx].amount < skill->get_itemqty(skill_id, item_idx, skill_lv)
) {
clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
return 1;
@@ -11443,7 +11887,11 @@ static int skill_castend_pos2(struct block_list *src, int x, int y, uint16 skill
skill->castend_nodamage_id);
}
} else {
- int item_idx = (skill_lv - 1) % MAX_SKILL_ITEM_REQUIRE;
+ int item_idx = skill->get_item_index(skill_id, skill_lv);
+
+ if (item_idx == INDEX_NOT_FOUND)
+ return 1;
+
int item_id = skill->get_itemid(skill_id, item_idx);
struct item_data *item = itemdb->search(item_id);
int bonus;
@@ -11606,17 +12054,16 @@ static int skill_castend_pos2(struct block_list *src, int x, int y, uint16 skill
case WL_EARTHSTRAIN:
{
- int i, wave = skill_lv + 4, dir = map->calc_dir(src,x,y);
+ int i;
+ int wave = skill_lv + 4;
+ enum unit_dir dir = map->calc_dir(src, x, y);
+ Assert_ret(dir >= UNIT_DIR_FIRST && dir < UNIT_DIR_MAX);
int sx = x = src->x, sy = y = src->y; // Store first caster's location to avoid glitch on unit setting
- for( i = 1; i <= wave; i++ )
- {
- switch( dir ){
- case 0: case 1: case 7: sy = y + i; break;
- case 3: case 4: case 5: sy = y - i; break;
- case 2: sx = x - i; break;
- case 6: sx = x + i; break;
- }
+ for (i = 1; i <= wave; i++) {
+ sy = y + i * diry[dir];
+ if (dir == UNIT_DIR_WEST || dir == UNIT_DIR_EAST)
+ sx = x + i * dirx[dir];
skill->addtimerskill(src,timer->gettick() + (140 * i),0,sx,sy,skill_id,skill_lv,dir,flag&2);
}
}
@@ -11663,7 +12110,7 @@ static int skill_castend_pos2(struct block_list *src, int x, int y, uint16 skill
skill->unitsetting(src, skill_id, skill_lv, x, y, 0); // Set bomb on current Position
clif->skill_nodamage(src, src, skill_id, skill_lv, 1);
if( skill->blown(src, src, 3 * skill_lv, unit->getdir(src), 0) && sc) {
- sc_start(src, src, SC__FEINTBOMB_MASTER, 100, 0, skill->get_unit_interval(SC_FEINTBOMB));
+ sc_start(src, src, SC__FEINTBOMB_MASTER, 100, 0, skill->get_unit_interval(SC_FEINTBOMB, skill_lv));
}
break;
@@ -11676,7 +12123,7 @@ static int skill_castend_pos2(struct block_list *src, int x, int y, uint16 skill
case LG_OVERBRAND:
skill->area_temp[1] = 0;
map->foreachinpath(skill->attack_area,src->m,src->x,src->y,x,y,1,5,BL_CHAR,
- skill->get_type(skill_id),src,src,skill_id,skill_lv,tick,flag,BCT_ENEMY);
+ skill->get_type(skill_id, skill_lv), src, src, skill_id, skill_lv, tick, flag, BCT_ENEMY);
skill->addtimerskill(src,timer->gettick() + status_get_amotion(src), 0, x, y, LG_OVERBRAND_BRANDISH, skill_lv, 0, flag);
break;
@@ -11713,7 +12160,7 @@ static int skill_castend_pos2(struct block_list *src, int x, int y, uint16 skill
int tmpx = x - area + rnd()%(area * 2 + 1);
int tmpy = y - area + rnd()%(area * 2 + 1);
- skill->addtimerskill(src,tick+r*250,0,tmpx,tmpy,GN_CRAZYWEED_ATK,skill_lv,-1,0);
+ skill->addtimerskill(src, tick + (int64)r * 250, 0, tmpx, tmpy, GN_CRAZYWEED_ATK, skill_lv, 0, 0);
}
}
break;
@@ -11910,10 +12357,10 @@ static bool skill_dance_switch(struct skill_unit *su, int flag)
// replace
group->skill_id = skill_id;
group->skill_lv = 1;
- group->unit_id = skill->get_unit_id(skill_id,0);
- group->target_flag = skill->get_unit_target(skill_id);
- group->bl_flag = skill->get_unit_bl_target(skill_id);
- group->interval = skill->get_unit_interval(skill_id);
+ group->unit_id = skill->get_unit_id(skill_id, 1, 0);
+ group->target_flag = skill->get_unit_target(skill_id, 1);
+ group->bl_flag = skill->get_unit_bl_target(skill_id, 1);
+ group->interval = skill->get_unit_interval(skill_id, 1);
} else {
//Restore
group->skill_id = backup.skill_id;
@@ -11946,8 +12393,8 @@ static struct skill_unit_group *skill_unitsetting(struct block_list *src, uint16
limit = skill->get_time(skill_id,skill_lv);
range = skill->get_unit_range(skill_id,skill_lv);
- interval = skill->get_unit_interval(skill_id);
- target = skill->get_unit_target(skill_id);
+ interval = skill->get_unit_interval(skill_id, skill_lv);
+ target = skill->get_unit_target(skill_id, skill_lv);
unit_flag = skill->get_unit_flag(skill_id);
layout = skill->get_unit_layout(skill_id,skill_lv,src,x,y);
@@ -12311,12 +12758,12 @@ static struct skill_unit_group *skill_unitsetting(struct block_list *src, uint16
}
nullpo_retr(NULL, layout);
- nullpo_retr(NULL, group=skill->init_unitgroup(src,layout->count,skill_id,skill_lv,skill->get_unit_id(skill_id,flag&1)+subunt, limit, interval));
+ nullpo_retr(NULL, group = skill->init_unitgroup(src, layout->count, skill_id, skill_lv, skill->get_unit_id(skill_id, skill_lv, flag & 1) + subunt, limit, interval));
group->val1=val1;
group->val2=val2;
group->val3=val3;
group->target_flag=target;
- group->bl_flag= skill->get_unit_bl_target(skill_id);
+ group->bl_flag= skill->get_unit_bl_target(skill_id, skill_lv);
group->state.ammo_consume = (sd && sd->state.arrow_atk && skill_id != GS_GROUNDDRIFT); //Store if this skill needs to consume ammo.
group->state.song_dance = ((unit_flag&(UF_DANCE|UF_SONG)) ? 1 : 0)|((unit_flag&UF_ENSEMBLE) ? 2 : 0); //Signals if this is a song/dance/duet
group->state.guildaura = ( skill_id >= GD_LEADERSHIP && skill_id <= GD_HAWKEYES )?1:0;
@@ -12437,7 +12884,7 @@ static struct skill_unit_group *skill_unitsetting(struct block_list *src, uint16
if (!group->alive_count) {
//No cells? Something that was blocked completely by Land Protector?
- skill->del_unitgroup(group,ALC_MARK);
+ skill->del_unitgroup(group);
return NULL;
}
@@ -12485,7 +12932,7 @@ static int skill_unit_onplace(struct skill_unit *src, struct block_list *bl, int
nullpo_ret(sg=src->group);
nullpo_ret(ss=map->id2bl(sg->src_id));
- if (skill->get_type(sg->skill_id) == BF_MAGIC && map->getcell(src->bl.m, &src->bl, src->bl.x, src->bl.y, CELL_CHKLANDPROTECTOR) && sg->skill_id != SA_LANDPROTECTOR)
+ if (skill->get_type(sg->skill_id, sg->skill_lv) == BF_MAGIC && map->getcell(src->bl.m, &src->bl, src->bl.x, src->bl.y, CELL_CHKLANDPROTECTOR) != 0 && sg->skill_id != SA_LANDPROTECTOR)
return 0; //AoE skills are ineffective. [Skotlex]
sc = status->get_sc(bl);
@@ -12553,7 +13000,7 @@ static int skill_unit_onplace(struct skill_unit *src, struct block_list *bl, int
unsigned short m = sg->val3;
if( --count <= 0 )
- skill->del_unitgroup(sg,ALC_MARK);
+ skill->del_unitgroup(sg);
if ( map->mapindex2mapid(sg->val3) == sd->bl.m && x == sd->bl.x && y == sd->bl.y )
working = 1;/* we break it because officials break it, lovely stuff. */
@@ -12684,7 +13131,7 @@ static int skill_unit_onplace(struct skill_unit *src, struct block_list *bl, int
if( status_get_mode(bl)&MD_BOSS )
break; // iRO Wiki says that this skill don't affect to Boss monsters.
if( map_flag_vs(bl->m) || bl->id == src->bl.id || battle->check_target(&src->bl,bl, BCT_ENEMY) == 1 )
- skill->attack(skill->get_type(sg->skill_id), ss, &src->bl, bl, sg->skill_id, sg->skill_lv, tick, 0);
+ skill->attack(skill->get_type(sg->skill_id, sg->skill_lv), ss, &src->bl, bl, sg->skill_id, sg->skill_lv, tick, 0);
break;
case UNT_REVERBERATION:
@@ -12859,7 +13306,7 @@ static int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *b
sg->val1--;
}
if (sg->val1 <= 0)
- skill->del_unitgroup(sg, ALC_MARK);
+ skill->del_unitgroup(sg);
break;
case UNT_EVILLAND:
@@ -12920,7 +13367,7 @@ static int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *b
case WZ_STORMGUST: //SG counter does not reset per stormgust. IE: One hit from a SG and two hits from another will freeze you.
if (tsc)
tsc->sg_counter++; //SG hit counter.
- if (skill->attack(skill->get_type(sg->skill_id),ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick,0) <= 0 && tsc)
+ if (skill->attack(skill->get_type(sg->skill_id, sg->skill_lv), ss, &src->bl, bl, sg->skill_id, sg->skill_lv, tick, 0) <= 0 && tsc != NULL)
tsc->sg_counter=0; //Attack absorbed.
break;
#endif
@@ -12929,7 +13376,7 @@ static int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *b
skill->attack(BF_WEAPON,ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick,0);
break;
default:
- skill->attack(skill->get_type(sg->skill_id),ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick,0);
+ skill->attack(skill->get_type(sg->skill_id, sg->skill_lv), ss, &src->bl, bl, sg->skill_id, sg->skill_lv, tick, 0);
}
break;
@@ -13250,7 +13697,7 @@ static int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *b
case UNT_PSYCHIC_WAVE:
case UNT_MAGMA_ERUPTION:
case UNT_MAKIBISHI:
- skill->attack(skill->get_type(sg->skill_id),ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick,0);
+ skill->attack(skill->get_type(sg->skill_id, sg->skill_lv), ss, &src->bl, bl, sg->skill_id, sg->skill_lv, tick, 0);
break;
case UNT_GROUNDDRIFT_WIND:
@@ -13351,7 +13798,7 @@ static int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *b
sec = 3000; // Couldn't trap it?
sg->limit = DIFF_TICK32(tick, sg->tick) + sec;
} else if( tsc->data[SC_THORNS_TRAP] && bl->id == sg->val2 )
- skill->attack(skill->get_type(GN_THORNS_TRAP), ss, ss, bl, sg->skill_id, sg->skill_lv, tick, SD_LEVEL|SD_ANIMATION);
+ skill->attack(skill->get_type(GN_THORNS_TRAP, sg->skill_lv), ss, ss, bl, sg->skill_id, sg->skill_lv, tick, SD_LEVEL|SD_ANIMATION);
}
break;
@@ -13363,11 +13810,11 @@ static int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *b
default:
sc_start4(ss, bl, SC_BURNING, 4 + 4 * sg->skill_lv, sg->skill_lv, 0, ss->id, 0,
skill->get_time2(sg->skill_id, sg->skill_lv));
- skill->attack(skill->get_type(sg->skill_id), ss, &src->bl, bl,
+ skill->attack(skill->get_type(sg->skill_id, sg->skill_lv), ss, &src->bl, bl,
sg->skill_id, sg->skill_lv + 10 * sg->val2, tick, 0);
break;
case 3:
- skill->attack(skill->get_type(CR_ACIDDEMONSTRATION), ss, &src->bl, bl,
+ skill->attack(skill->get_type(CR_ACIDDEMONSTRATION, sg->skill_lv), ss, &src->bl, bl,
CR_ACIDDEMONSTRATION, sd ? pc->checkskill(sd, CR_ACIDDEMONSTRATION) : sg->skill_lv, tick, 0);
break;
@@ -13385,7 +13832,7 @@ static int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *b
case UNT_HELLS_PLANT:
if( battle->check_target(&src->bl,bl,BCT_ENEMY) > 0 )
- skill->attack(skill->get_type(GN_HELLS_PLANT_ATK), ss, &src->bl, bl, GN_HELLS_PLANT_ATK, sg->skill_lv, tick, 0);
+ skill->attack(skill->get_type(GN_HELLS_PLANT_ATK, sg->skill_lv), ss, &src->bl, bl, GN_HELLS_PLANT_ATK, sg->skill_lv, tick, 0);
if( ss != bl) //The caster is the only one who can step on the Plants, without destroying them
sg->limit = DIFF_TICK32(tick, sg->tick) + 100;
break;
@@ -13393,7 +13840,7 @@ static int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *b
case UNT_CLOUD_KILL:
if(tsc && !tsc->data[type])
status->change_start(ss,bl,type,10000,sg->skill_lv,sg->group_id,0,0,skill->get_time2(sg->skill_id,sg->skill_lv),SCFLAG_FIXEDRATE);
- skill->attack(skill->get_type(sg->skill_id),ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick,0);
+ skill->attack(skill->get_type(sg->skill_id, sg->skill_lv), ss, &src->bl, bl, sg->skill_id, sg->skill_lv, tick, 0);
break;
case UNT_WARMER:
@@ -13518,7 +13965,7 @@ static int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *b
}
sg->limit = DIFF_TICK32(tick, sg->tick) + sec;
} else if (tsc->data[type] && bl->id == sg->val2) {
- skill->attack(skill->get_type(SU_SV_ROOTTWIST_ATK), ss, &src->bl, bl, SU_SV_ROOTTWIST_ATK, sg->skill_lv, tick, SD_LEVEL|SD_ANIMATION);
+ skill->attack(skill->get_type(SU_SV_ROOTTWIST_ATK, sg->skill_lv), ss, &src->bl, bl, SU_SV_ROOTTWIST_ATK, sg->skill_lv, tick, SD_LEVEL|SD_ANIMATION);
}
}
break;
@@ -13835,12 +14282,14 @@ static int skill_check_condition_char_sub(struct block_list *bl, va_list ap)
} else {
switch(skill_id) {
- case PR_BENEDICTIO: {
- uint8 dir = map->calc_dir(&sd->bl,tsd->bl.x,tsd->bl.y);
- dir = (unit->getdir(&sd->bl) + dir)%8; //This adjusts dir to account for the direction the sd is facing.
- if ((tsd->job & MAPID_BASEMASK) == MAPID_ACOLYTE && (dir == 2 || dir == 6) //Must be standing to the left/right of Priest.
- && sd->status.sp >= 10)
+ case PR_BENEDICTIO:
+ {
+ enum unit_dir dir = map->calc_dir(&sd->bl, tsd->bl.x, tsd->bl.y);
+ dir = (unit->getdir(&sd->bl) + dir) % UNIT_DIR_MAX; //This adjusts dir to account for the direction the sd is facing.
+ if ((tsd->job & MAPID_BASEMASK) == MAPID_ACOLYTE && (dir == UNIT_DIR_WEST || dir == UNIT_DIR_EAST) //Must be standing to the left/right of Priest.
+ && sd->status.sp >= 10) {
p_sd[(*c)++]=tsd->bl.id;
+ }
return 1;
}
case AB_ADORAMUS:
@@ -13970,16 +14419,16 @@ static int skill_check_condition_mob_master_sub(struct block_list *bl, va_list a
* Determines if a given skill should be made to consume ammo
* when used by the player. [Skotlex]
*------------------------------------------*/
-static int skill_isammotype(struct map_session_data *sd, int skill_id)
+static int skill_isammotype(struct map_session_data *sd, int skill_id, int skill_lv)
{
nullpo_ret(sd);
return (
battle_config.arrow_decrement==2 &&
(sd->weapontype == W_BOW || (sd->weapontype >= W_REVOLVER && sd->weapontype <= W_GRENADE)) &&
skill_id != HT_PHANTASMIC &&
- skill->get_type(skill_id) == BF_WEAPON &&
+ skill->get_type(skill_id, skill_lv) == BF_WEAPON &&
!(skill->get_nk(skill_id)&NK_NO_DAMAGE) &&
- !skill->get_spiritball(skill_id,1) //Assume spirit spheres are used as ammo instead.
+ !skill->get_spiritball(skill_id, skill_lv) //Assume spirit spheres are used as ammo instead.
);
}
@@ -13995,19 +14444,87 @@ static bool skill_is_combo(int skill_id)
}
/**
- * Checks if a skill is casted by an item (itemskill() script command).
+ * Checks if a skill's equipment requirements are fulfilled.
*
- * @param sd The charcater's session data.
+ * @param sd The character who casts the skill.
* @param skill_id The skill's ID.
* @param skill_lv The skill's level.
- * @return true if skill is casted by an item, otherwise false.
- */
-static bool skill_is_item_skill(struct map_session_data *sd, int skill_id, int skill_lv)
+ * @return 0 on success or 1 in case of error.
+ *
+ **/
+static int skill_check_condition_required_equip(struct map_session_data *sd, int skill_id, int skill_lv)
{
- nullpo_retr(false, sd);
+ nullpo_retr(1, sd);
+
+ struct skill_condition req = skill->get_requirement(sd, skill_id, skill_lv);
+ bool any_equip_flag = skill->get_equip_any_flag(skill_id, skill_lv);
+ bool any_equip_found = false;
+ int fail_id = 0;
+ int fail_amount = 0;
+
+ for (int i = 0; i < MAX_SKILL_ITEM_REQUIRE; i++) {
+ if (req.equip_id[i] == 0)
+ continue;
+
+ int req_id = req.equip_id[i];
+ int req_amount = req.equip_amount[i];
+ int found_amount = 0;
+
+ for (int j = 0; j < EQI_MAX; j++) {
+ int inv_idx = sd->equip_index[j];
+
+ if (inv_idx == INDEX_NOT_FOUND || sd->inventory_data[inv_idx] == NULL)
+ continue;
+
+ if ((j == EQI_HAND_R && sd->equip_index[EQI_HAND_L] == inv_idx)
+ || (j == EQI_HEAD_MID && sd->equip_index[EQI_HEAD_LOW] == inv_idx)
+ || (j == EQI_HEAD_TOP && sd->equip_index[EQI_HEAD_MID] == inv_idx)
+ || (j == EQI_HEAD_TOP && sd->equip_index[EQI_HEAD_LOW] == inv_idx)
+ || (j == EQI_COSTUME_MID && sd->equip_index[EQI_COSTUME_LOW] == inv_idx)
+ || (j == EQI_COSTUME_TOP && sd->equip_index[EQI_COSTUME_MID] == inv_idx)
+ || (j == EQI_COSTUME_TOP && sd->equip_index[EQI_COSTUME_LOW] == inv_idx)) {
+ continue; // Equipment uses more than one slot; only process it once!
+ }
+
+ if (itemdb_type(req_id) != IT_CARD) {
+ if (sd->inventory_data[inv_idx]->nameid != req_id)
+ continue;
+
+ if (itemdb_type(req_id) == IT_AMMO)
+ found_amount += sd->status.inventory[inv_idx].amount;
+ else
+ found_amount++;
+ } else {
+ if (itemdb_isspecial(sd->status.inventory[inv_idx].card[0]))
+ continue;
+
+ for (int k = 0; k < sd->inventory_data[inv_idx]->slot; k++) {
+ if (sd->status.inventory[inv_idx].card[k] == req_id)
+ found_amount++;
+ }
+ }
+ }
- return (sd->skillitem == skill_id && sd->skillitemlv == skill_lv
- && sd->itemskill_id == skill_id && sd->itemskill_lv == skill_lv);
+ if (any_equip_flag) {
+ if (found_amount >= req_amount) {
+ any_equip_found = true;
+ break;
+ } else if (fail_id == 0) { // Save ID/amount of first missing equipment for skill fail message.
+ fail_id = req_id;
+ fail_amount = req_amount;
+ }
+ } else if (found_amount < req_amount) {
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_NEED_EQUIPMENT, req_amount, req_id);
+ return 1;
+ }
+ }
+
+ if (any_equip_flag && !any_equip_found) {
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_NEED_EQUIPMENT, fail_amount, fail_id);
+ return 1;
+ }
+
+ return 0;
}
static int skill_check_condition_castbegin(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv)
@@ -14024,13 +14541,13 @@ static int skill_check_condition_castbegin(struct map_session_data *sd, uint16 s
if (sd->chat_id != 0)
return 0;
- if ((sd->state.itemskill_conditions_checked == 1 || sd->state.itemskill_no_conditions == 1)
- && skill->is_item_skill(sd, skill_id, skill_lv)) {
+ if (((sd->auto_cast_current.itemskill_conditions_checked || !sd->auto_cast_current.itemskill_check_conditions)
+ && sd->auto_cast_current.type == AUTOCAST_ITEM) || sd->auto_cast_current.type == AUTOCAST_IMPROVISE) {
return 1;
}
- if (pc_has_permission(sd, PC_PERM_SKILL_UNCONDITIONAL) && sd->skillitem != skill_id) {
- //GMs don't override the skillItem check, otherwise they can use items without them being consumed! [Skotlex]
+ if (pc_has_permission(sd, PC_PERM_SKILL_UNCONDITIONAL) && sd->auto_cast_current.type != AUTOCAST_ITEM) {
+ // GMs don't override the AUTOCAST_ITEM check, otherwise they can use items without them being consumed!
sd->state.arrow_atk = skill->get_ammotype(skill_id)?1:0; //Need to do arrow state check.
sd->spiritball_old = sd->spiritball; //Need to do Spiritball check.
return 1;
@@ -14061,30 +14578,7 @@ static int skill_check_condition_castbegin(struct map_session_data *sd, uint16 s
if( !sc->count )
sc = NULL;
- if( sd->skillitem == skill_id ) {
- if( sd->state.abra_flag ) // Hocus-Pocus was used. [Inkfish]
- sd->state.abra_flag = 0;
- else {
- int i;
- // When a target was selected, consume items that were skipped in pc_use_item [Skotlex]
- if( (i = sd->itemindex) == -1 ||
- sd->status.inventory[i].nameid != sd->itemid ||
- sd->inventory_data[i] == NULL ||
- sd->status.inventory[i].amount < 1
- ) {
- //Something went wrong, item exploit?
- sd->itemid = sd->itemindex = -1;
- return 0;
- }
-
- //Consume
- sd->itemid = sd->itemindex = -1;
- if (sd->status.inventory[i].expire_time == 0 && sd->inventory_data[i]->flag.delay_consume == 1) // Rental usable items are not consumed until expiration
- pc->delitem(sd, i, 1, 0, DELITEM_NORMAL, LOG_TYPE_CONSUME);
- }
- }
-
- if (pc_is90overweight(sd) && sd->skillitem != skill_id) { /// Skill casting items ignore the overweight restriction. [Kenpachi]
+ if (pc_is90overweight(sd) && sd->auto_cast_current.type != AUTOCAST_ITEM) { // Skill casting items ignore the overweight restriction.
clif->skill_fail(sd, skill_id, USESKILL_FAIL_WEIGHTOVER, 0, 0);
return 0;
}
@@ -14732,22 +15226,6 @@ static int skill_check_condition_castbegin(struct map_session_data *sd, uint16 s
require.sp -= require.sp * 20 * count / 100; // -20% each W/M in the party.
}
break;
- case NC_PILEBUNKER:
- if (sd->equip_index[EQI_HAND_R] < 0
- || !itemid_is_pilebunker(sd->status.inventory[sd->equip_index[EQI_HAND_R]].nameid)
- ) {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_THIS_WEAPON, 0, 0);
- return 0;
- }
- break;
- case NC_HOVERING:
- if (( sd->equip_index[EQI_ACC_L] >= 0 && sd->status.inventory[sd->equip_index[EQI_ACC_L]].nameid == ITEMID_HOVERING_BOOSTER ) ||
- ( sd->equip_index[EQI_ACC_R] >= 0 && sd->status.inventory[sd->equip_index[EQI_ACC_R]].nameid == ITEMID_HOVERING_BOOSTER ));
- else {
- clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0);
- return 0;
- }
- break;
case SO_FIREWALK:
case SO_ELECTRICWALK: // Can't be casted until you've walked all cells.
if( sc && sc->data[SC_PROPERTYWALK] &&
@@ -14950,12 +15428,20 @@ static int skill_check_condition_castbegin(struct map_session_data *sd, uint16 s
return 0;
}
+ if (require.msp > 0 && get_percentage(st->sp, st->max_sp) > require.msp) {
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_SP_INSUFFICIENT, 0, 0);
+ return 0;
+ }
+
if( require.weapon && !pc_check_weapontype(sd,require.weapon) ) {
clif->skill_fail(sd, skill_id, USESKILL_FAIL_THIS_WEAPON, 0, 0);
return 0;
}
- if (require.sp > 0 && st->sp < (unsigned int)require.sp && sd->skillitem != skill_id) { /// Skill casting items and Hocus-Pocus skills don't consume SP. [Kenpachi]
+ if (skill->check_condition_required_equip(sd, skill_id, skill_lv) != 0)
+ return 0;
+
+ if (require.sp > 0 && st->sp < (unsigned int)require.sp && sd->auto_cast_current.type == AUTOCAST_NONE) { // Auto-cast skills don't consume SP.
clif->skill_fail(sd, skill_id, USESKILL_FAIL_SP_INSUFFICIENT, 0, 0);
return 0;
}
@@ -15001,25 +15487,140 @@ static int skill_check_condition_castbegin_unknown(struct status_change *sc, uin
return -1;
}
+/**
+ * Checks if a skill's item requirements are fulfilled.
+ *
+ * @param sd The character who casts the skill.
+ * @param skill_id The skill's ID.
+ * @param skill_lv The skill's level.
+ * @return 0 on success or 1 in case of error.
+ *
+ **/
+static int skill_check_condition_required_items(struct map_session_data *sd, int skill_id, int skill_lv)
+{
+ nullpo_retr(1, sd);
+
+ struct skill_condition req = skill->get_requirement(sd, skill_id, skill_lv);
+
+ if (skill->get_item_any_flag(skill_id, skill_lv)) {
+ for (int i = 0; i < MAX_SKILL_ITEM_REQUIRE; i++) {
+ if (req.itemid[i] == 0)
+ continue;
+
+ int inv_idx = pc->search_inventory(sd, req.itemid[i]);
+
+ if (inv_idx == INDEX_NOT_FOUND)
+ continue;
+
+ if ((req.amount[i] > 0 && sd->status.inventory[inv_idx].amount >= req.amount[i])
+ || (req.amount[i] == 0 && sd->status.inventory[inv_idx].amount > 0)) {
+ return 0;
+ }
+ }
+ }
+
+ /**
+ * Find first missing item and show skill failed message if item any-flag is false
+ * or item any-flag check didn't find an item with sufficient amount.
+ *
+ **/
+ for (int i = 0; i < MAX_SKILL_ITEM_REQUIRE; i++) {
+ if (req.itemid[i] == 0)
+ continue;
+
+ int inv_idx = pc->search_inventory(sd, req.itemid[i]);
+
+ if (inv_idx == INDEX_NOT_FOUND || sd->status.inventory[inv_idx].amount < req.amount[i]) {
+ useskill_fail_cause cause = USESKILL_FAIL_NEED_ITEM;
+
+ switch (skill_id) {
+ case NC_SILVERSNIPER:
+ case NC_MAGICDECOY:
+ cause = USESKILL_FAIL_STUFF_INSUFFICIENT;
+ break;
+ default:
+ switch (req.itemid[i]) {
+ case ITEMID_RED_GEMSTONE:
+ cause = USESKILL_FAIL_REDJAMSTONE;
+ break;
+ case ITEMID_BLUE_GEMSTONE:
+ cause = USESKILL_FAIL_BLUEJAMSTONE;
+ break;
+ case ITEMID_HOLY_WATER:
+ cause = USESKILL_FAIL_HOLYWATER;
+ break;
+ case ITEMID_ANSILA:
+ cause = USESKILL_FAIL_ANCILLA;
+ break;
+ case ITEMID_ACCELERATOR:
+ case ITEMID_HOVERING_BOOSTER:
+ case ITEMID_SUICIDAL_DEVICE:
+ case ITEMID_SHAPE_SHIFTER:
+ case ITEMID_COOLING_DEVICE:
+ case ITEMID_MAGNETIC_FIELD_GENERATOR:
+ case ITEMID_BARRIER_BUILDER:
+ case ITEMID_CAMOUFLAGE_GENERATOR:
+ case ITEMID_REPAIR_KIT:
+ case ITEMID_MONKEY_SPANNER:
+ cause = USESKILL_FAIL_NEED_EQUIPMENT;
+ FALLTHROUGH
+ default:
+ clif->skill_fail(sd, skill_id, cause, max(1, req.amount[i]), req.itemid[i]);
+ return 1;
+ }
+
+ break;
+ }
+
+ clif->skill_fail(sd, skill_id, cause, 0, 0);
+ return 1;
+ }
+ }
+
+ return 0;
+}
+
+/**
+ * Checks if a skill has item requirements.
+ *
+ * @param sd The character who casts the skill.
+ * @param skill_id The skill's ID.
+ * @param skill_lv The skill's level.
+ * @return True if skill has item requirements, otherwise false.
+ *
+ **/
+static bool skill_items_required(struct map_session_data *sd, int skill_id, int skill_lv)
+{
+ nullpo_retr(false, sd);
+
+ struct skill_condition req = skill->get_requirement(sd, skill_id, skill_lv);
+
+ for (int i = 0; i < MAX_SKILL_ITEM_REQUIRE; i++) {
+ if (req.itemid[i] != 0)
+ return true;
+ }
+
+ return false;
+}
+
static int skill_check_condition_castend(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv)
{
struct skill_condition require;
struct status_data *st;
int i;
- int index[MAX_SKILL_ITEM_REQUIRE];
nullpo_ret(sd);
if (sd->chat_id != 0)
return 0;
- if ((sd->state.itemskill_conditions_checked == 1 || sd->state.itemskill_no_conditions == 1)
- && skill->is_item_skill(sd, skill_id, skill_lv)) {
+ if (((sd->auto_cast_current.itemskill_conditions_checked || !sd->auto_cast_current.itemskill_check_conditions)
+ && sd->auto_cast_current.type == AUTOCAST_ITEM) || sd->auto_cast_current.type == AUTOCAST_IMPROVISE) {
return 1;
}
- if( pc_has_permission(sd, PC_PERM_SKILL_UNCONDITIONAL) && sd->skillitem != skill_id ) {
- //GMs don't override the skillItem check, otherwise they can use items without them being consumed! [Skotlex]
+ if (pc_has_permission(sd, PC_PERM_SKILL_UNCONDITIONAL) && sd->auto_cast_current.type != AUTOCAST_ITEM) {
+ // GMs don't override the AUTOCAST_ITEM check, otherwise they can use items without them being consumed!
sd->state.arrow_atk = skill->get_ammotype(skill_id)?1:0; //Need to do arrow state check.
sd->spiritball_old = sd->spiritball; //Need to do Spiritball check.
return 1;
@@ -15046,7 +15647,7 @@ static int skill_check_condition_castend(struct map_session_data *sd, uint16 ski
break;
}
- if (pc_is90overweight(sd) && sd->skillitem != skill_id) { /// Skill casting items ignore the overweight restriction. [Kenpachi]
+ if (pc_is90overweight(sd) && sd->auto_cast_current.type != AUTOCAST_ITEM) { // Skill casting items ignore the overweight restriction.
clif->skill_fail(sd, skill_id, USESKILL_FAIL_WEIGHTOVER, 0, 0);
return 0;
}
@@ -15152,56 +15753,16 @@ static int skill_check_condition_castend(struct map_session_data *sd, uint16 ski
clif->messagecolor_self(sd->fd, COLOR_RED, e_msg);
return 0;
}
- if (!(require.ammo&1<<sd->inventory_data[i]->subtype)) { //Ammo type check. Send the "wrong weapon type" message
- //which is the closest we have to wrong ammo type. [Skotlex]
- clif->arrow_fail(sd,0); //Haplo suggested we just send the equip-arrows message instead. [Skotlex]
- //clif->skill_fail(sd, skill_id, USESKILL_FAIL_THIS_WEAPON, 0, 0);
+ if ((require.ammo & (1 << sd->inventory_data[i]->subtype)) == 0 || !battle->check_arrows(sd)) { // Ammo type check.
+ clif->arrow_fail(sd, 0); // "Please equip the proper ammunition first."
return 0;
}
}
- for( i = 0; i < MAX_SKILL_ITEM_REQUIRE; ++i ) {
- if( !require.itemid[i] )
- continue;
- index[i] = pc->search_inventory(sd,require.itemid[i]);
- if (index[i] == INDEX_NOT_FOUND || sd->status.inventory[index[i]].amount < require.amount[i]) {
- useskill_fail_cause cause = USESKILL_FAIL_NEED_ITEM;
- switch( skill_id ){
- case NC_SILVERSNIPER:
- case NC_MAGICDECOY:
- cause = USESKILL_FAIL_STUFF_INSUFFICIENT;
- break;
- default:
- switch(require.itemid[i]){
- case ITEMID_RED_GEMSTONE:
- cause = USESKILL_FAIL_REDJAMSTONE; break;
- case ITEMID_BLUE_GEMSTONE:
- cause = USESKILL_FAIL_BLUEJAMSTONE; break;
- case ITEMID_HOLY_WATER:
- cause = USESKILL_FAIL_HOLYWATER; break;
- case ITEMID_ANSILA:
- cause = USESKILL_FAIL_ANCILLA; break;
- case ITEMID_ACCELERATOR:
- case ITEMID_HOVERING_BOOSTER:
- case ITEMID_SUICIDAL_DEVICE:
- case ITEMID_SHAPE_SHIFTER:
- case ITEMID_COOLING_DEVICE:
- case ITEMID_MAGNETIC_FIELD_GENERATOR:
- case ITEMID_BARRIER_BUILDER:
- case ITEMID_CAMOUFLAGE_GENERATOR:
- case ITEMID_REPAIR_KIT:
- case ITEMID_MONKEY_SPANNER:
- cause = USESKILL_FAIL_NEED_EQUIPMENT;
- /* Fall through */
- default:
- clif->skill_fail(sd, skill_id, cause, max(1, require.amount[i]), require.itemid[i]);
- return 0;
- }
- }
- clif->skill_fail(sd, skill_id, cause, 0, 0);
- return 0;
- }
- }
+ bool items_required = skill->items_required(sd, skill_id, skill_lv);
+
+ if (items_required && skill->check_condition_required_items(sd, skill_id, skill_lv) != 0)
+ return 0;
return 1;
}
@@ -15211,6 +15772,43 @@ static bool skill_check_condition_castend_unknown(struct map_session_data *sd, u
return false;
}
+/**
+ * Gets the array index of the first required item with sufficient amount.
+ *
+ * @param sd The character who casts the skill.
+ * @param skill_id The skill's ID.
+ * @param skill_lv The skill's level.
+ * @return A number greater than or equal to 0 on success, otherwise INDEX_NOT_FOUND (-1).
+ *
+ **/
+static int skill_get_any_item_index(struct map_session_data *sd, int skill_id, int skill_lv)
+{
+ nullpo_retr(INDEX_NOT_FOUND, sd);
+
+ int any_item_index = INDEX_NOT_FOUND;
+
+ if (skill->get_item_any_flag(skill_id, skill_lv)) {
+ struct skill_condition req = skill->get_requirement(sd, skill_id, skill_lv);
+
+ for (int i = 0; i < MAX_SKILL_ITEM_REQUIRE; i++) {
+ if (req.itemid[i] == 0)
+ continue;
+
+ int inv_idx = pc->search_inventory(sd, req.itemid[i]);
+
+ if (inv_idx == INDEX_NOT_FOUND)
+ continue;
+
+ if (req.amount[i] == 0 || sd->status.inventory[inv_idx].amount >= req.amount[i]) {
+ any_item_index = i;
+ break;
+ }
+ }
+ }
+
+ return any_item_index;
+}
+
// type&2: consume items (after skill was used)
// type&1: consume the others (before skill was used)
static int skill_consume_requirement(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv, short type)
@@ -15219,8 +15817,10 @@ static int skill_consume_requirement(struct map_session_data *sd, uint16 skill_i
nullpo_ret(sd);
- if (sd->state.itemskill_no_conditions == 1 && skill->is_item_skill(sd, skill_id, skill_lv))
+ if ((!sd->auto_cast_current.itemskill_check_conditions && sd->auto_cast_current.type == AUTOCAST_ITEM)
+ || sd->auto_cast_current.type == AUTOCAST_IMPROVISE) {
return 1;
+ }
req = skill->get_requirement(sd,skill_id,skill_lv);
@@ -15236,7 +15836,7 @@ static int skill_consume_requirement(struct map_session_data *sd, uint16 skill_i
break;
default:
- if (sd->state.autocast == 1 || sd->skillitem == skill_id) /// Skill casting items and Hocus-Pocus skills don't consume SP. [Kenpachi]
+ if (sd->auto_cast_current.type != AUTOCAST_NONE) // Auto-cast skills don't consume SP.
req.sp = 0;
break;
@@ -15261,16 +15861,24 @@ static int skill_consume_requirement(struct map_session_data *sd, uint16 skill_i
if( type&2 )
{
struct status_change *sc = &sd->sc;
- int n,i;
+ int n;
if( !sc->count )
sc = NULL;
- for( i = 0; i < MAX_SKILL_ITEM_REQUIRE; ++i )
- {
+ bool items_required = skill->items_required(sd, skill_id, skill_lv);
+ int any_item_index = INDEX_NOT_FOUND;
+
+ if (items_required)
+ any_item_index = skill->get_any_item_index(sd, skill_id, skill_lv);
+
+ for (int i = 0; i < MAX_SKILL_ITEM_REQUIRE && items_required; i++) {
if( !req.itemid[i] )
continue;
+ if (any_item_index != INDEX_NOT_FOUND && any_item_index != i)
+ continue;
+
if( itemid_isgemstone(req.itemid[i]) && skill_id != HW_GANBANTEIN && sc && sc->data[SC_SOULLINK] && sc->data[SC_SOULLINK]->val2 == SL_WIZARD )
continue; //Gemstones are checked, but not subtracted from inventory.
@@ -15408,61 +16016,36 @@ static struct skill_condition skill_get_requirement(struct map_session_data *sd,
req.spiritball = skill->dbs->db[idx].spiritball[skill_lv-1];
- req.state = skill->dbs->db[idx].state;
+ req.state = skill->dbs->db[idx].state[skill_lv - 1];
req.mhp = skill->dbs->db[idx].mhp[skill_lv-1];
+ req.msp = skill->get_msp(skill_id, skill_lv);
+
req.weapon = skill->dbs->db[idx].weapon;
req.ammo_qty = skill->dbs->db[idx].ammo_qty[skill_lv-1];
if (req.ammo_qty)
req.ammo = skill->dbs->db[idx].ammo;
- if (!req.ammo && skill_id && skill->isammotype(sd, skill_id)) {
+ if (req.ammo == 0 && skill_id != 0 && skill->isammotype(sd, skill_id, skill_lv)) {
//Assume this skill is using the weapon, therefore it requires arrows.
req.ammo = 0xFFFFFFFF; //Enable use on all ammo types.
req.ammo_qty = 1;
}
for( i = 0; i < MAX_SKILL_ITEM_REQUIRE; i++ ) {
- int item_idx = (skill_lv - 1) % MAX_SKILL_ITEM_REQUIRE;
- if ((skill_id == AM_POTIONPITCHER || skill_id == CR_SLIMPITCHER || skill_id == CR_CULTIVATION) && i != item_idx)
- continue;
-
switch( skill_id ) {
case AM_CALLHOMUN:
if (sd->status.hom_id) //Don't delete items when hom is already out.
continue;
break;
- case NC_SHAPESHIFT:
- if( i < 4 )
- continue;
- break;
- case WZ_FIREPILLAR: // celest
- if (skill_lv <= 5) // no gems required at level 1-5
- continue;
- break;
case AB_ADORAMUS:
- if( itemid_isgemstone(skill->dbs->db[idx].itemid[i]) && skill->check_pc_partner(sd,skill_id,&skill_lv, 1, 2) )
+ if (itemid_isgemstone(skill->get_itemid(skill_id, i)) && skill->check_pc_partner(sd, skill_id, &skill_lv, 1, 2) != 0)
continue;
break;
case WL_COMET:
- if( itemid_isgemstone(skill->dbs->db[idx].itemid[i]) && skill->check_pc_partner(sd,skill_id,&skill_lv, 1, 0) )
- continue;
- break;
- case GN_FIRE_EXPANSION:
- if( i < 5 )
- continue;
- break;
- case SO_SUMMON_AGNI:
- case SO_SUMMON_AQUA:
- case SO_SUMMON_VENTUS:
- case SO_SUMMON_TERA:
- case SO_WATER_INSIGNIA:
- case SO_FIRE_INSIGNIA:
- case SO_WIND_INSIGNIA:
- case SO_EARTH_INSIGNIA:
- if( i < 3 )
+ if (itemid_isgemstone(skill->get_itemid(skill_id, i)) && skill->check_pc_partner(sd, skill_id, &skill_lv, 1, 0) != 0)
continue;
break;
default:
@@ -15473,8 +16056,17 @@ static struct skill_condition skill_get_requirement(struct map_session_data *sd,
}
}
- req.itemid[i] = skill->dbs->db[idx].itemid[i];
- req.amount[i] = skill->dbs->db[idx].amount[i];
+ int amount;
+
+ if ((amount = skill->get_itemqty(skill_id, i, skill_lv)) >= 0) {
+ req.itemid[i] = skill->get_itemid(skill_id, i);
+ req.amount[i] = amount;
+ }
+
+ if ((amount = skill->get_equip_amount(skill_id, i, skill_lv)) > 0) {
+ req.equip_id[i] = skill->get_equip_id(skill_id, i);
+ req.equip_amount[i] = amount;
+ }
if (itemid_isgemstone(req.itemid[i]) && skill_id != HW_GANBANTEIN) {
if (sd->special_state.no_gemstone) {
@@ -15506,39 +16098,6 @@ static struct skill_condition skill_get_requirement(struct map_session_data *sd,
}
}
- /* requirements are level-dependent */
- switch( skill_id ) {
- case NC_SHAPESHIFT:
- case GN_FIRE_EXPANSION:
- case SO_SUMMON_AGNI:
- case SO_SUMMON_AQUA:
- case SO_SUMMON_VENTUS:
- case SO_SUMMON_TERA:
- case SO_WATER_INSIGNIA:
- case SO_FIRE_INSIGNIA:
- case SO_WIND_INSIGNIA:
- case SO_EARTH_INSIGNIA:
- req.itemid[skill_lv-1] = skill->dbs->db[idx].itemid[skill_lv-1];
- req.amount[skill_lv-1] = skill->dbs->db[idx].amount[skill_lv-1];
- break;
- }
- if (skill_id == NC_REPAIR) {
- switch(skill_lv) {
- case 1:
- case 2:
- req.itemid[1] = ITEMID_REPAIRA;
- break;
- case 3:
- case 4:
- req.itemid[1] = ITEMID_REPAIRB;
- break;
- case 5:
- req.itemid[1] = ITEMID_REPAIRC;
- break;
- }
- req.amount[1] = 1;
- }
-
// Check for cost reductions due to skills & SCs
switch(skill_id) {
case MC_MAMMONITE:
@@ -15724,6 +16283,8 @@ static int skill_castfix_sc(struct block_list *bl, int time)
}
if (sc->data[SC_POEMBRAGI])
time -= time * sc->data[SC_POEMBRAGI]->val2 / 100;
+ if (sc->data[SC_SKF_CAST] != NULL)
+ time -= time * sc->data[SC_SKF_CAST]->val1 / 100;
if (sc->data[SC_IZAYOI])
time -= time * 50 / 100;
}
@@ -15825,6 +16386,8 @@ static int skill_vfcastfix(struct block_list *bl, double time, uint16 skill_id,
}
if (sc->data[SC_MYSTICSCROLL])
VARCAST_REDUCTION(sc->data[SC_MYSTICSCROLL]->val1);
+ if (sc->data[SC_SKF_CAST] != NULL)
+ VARCAST_REDUCTION(sc->data[SC_SKF_CAST]->val1);
// Fixed cast reduction bonuses
if( sc->data[SC__LAZINESS] )
@@ -15976,11 +16539,11 @@ struct square {
int val2[5];
};
-static void skill_brandishspear_first(struct square *tc, uint8 dir, int16 x, int16 y)
+static void skill_brandishspear_first(struct square *tc, enum unit_dir dir, int16 x, int16 y)
{
nullpo_retv(tc);
- if(dir == 0){
+ if (dir == UNIT_DIR_NORTH) {
tc->val1[0]=x-2;
tc->val1[1]=x-1;
tc->val1[2]=x;
@@ -15991,7 +16554,7 @@ static void skill_brandishspear_first(struct square *tc, uint8 dir, int16 x, int
tc->val2[2]=
tc->val2[3]=
tc->val2[4]=y-1;
- } else if(dir==2){
+ } else if (dir == UNIT_DIR_WEST) {
tc->val1[0]=
tc->val1[1]=
tc->val1[2]=
@@ -16002,7 +16565,7 @@ static void skill_brandishspear_first(struct square *tc, uint8 dir, int16 x, int
tc->val2[2]=y;
tc->val2[3]=y-1;
tc->val2[4]=y-2;
- } else if(dir==4){
+ } else if (dir == UNIT_DIR_SOUTH) {
tc->val1[0]=x-2;
tc->val1[1]=x-1;
tc->val1[2]=x;
@@ -16013,7 +16576,7 @@ static void skill_brandishspear_first(struct square *tc, uint8 dir, int16 x, int
tc->val2[2]=
tc->val2[3]=
tc->val2[4]=y+1;
- } else if(dir==6){
+ } else if (dir == UNIT_DIR_EAST) {
tc->val1[0]=
tc->val1[1]=
tc->val1[2]=
@@ -16024,7 +16587,7 @@ static void skill_brandishspear_first(struct square *tc, uint8 dir, int16 x, int
tc->val2[2]=y;
tc->val2[3]=y-1;
tc->val2[4]=y-2;
- } else if(dir==1){
+ } else if (dir == UNIT_DIR_NORTHWEST) {
tc->val1[0]=x-1;
tc->val1[1]=x;
tc->val1[2]=x+1;
@@ -16035,7 +16598,7 @@ static void skill_brandishspear_first(struct square *tc, uint8 dir, int16 x, int
tc->val2[2]=y-1;
tc->val2[3]=y;
tc->val2[4]=y+1;
- } else if(dir==3){
+ } else if (dir == UNIT_DIR_SOUTHWEST) {
tc->val1[0]=x+3;
tc->val1[1]=x+2;
tc->val1[2]=x+1;
@@ -16046,7 +16609,7 @@ static void skill_brandishspear_first(struct square *tc, uint8 dir, int16 x, int
tc->val2[2]=y+1;
tc->val2[3]=y+2;
tc->val2[4]=y+3;
- } else if(dir==5){
+ } else if (dir == UNIT_DIR_SOUTHEAST) {
tc->val1[0]=x+1;
tc->val1[1]=x;
tc->val1[2]=x-1;
@@ -16057,7 +16620,7 @@ static void skill_brandishspear_first(struct square *tc, uint8 dir, int16 x, int
tc->val2[2]=y+1;
tc->val2[3]=y;
tc->val2[4]=y-1;
- } else if(dir==7){
+ } else if (dir == UNIT_DIR_NORTHEAST) {
tc->val1[0]=x-3;
tc->val1[1]=x-2;
tc->val1[2]=x-1;
@@ -16072,36 +16635,27 @@ static void skill_brandishspear_first(struct square *tc, uint8 dir, int16 x, int
}
-static void skill_brandishspear_dir(struct square *tc, uint8 dir, int are)
+static void skill_brandishspear_dir(struct square *tc, enum unit_dir dir, int are)
{
- int c;
nullpo_retv(tc);
+ Assert_retv(dir >= UNIT_DIR_FIRST && dir < UNIT_DIR_MAX);
- for( c = 0; c < 5; c++ ) {
- switch( dir ) {
- case 0: tc->val2[c]+=are; break;
- case 1: tc->val1[c]-=are; tc->val2[c]+=are; break;
- case 2: tc->val1[c]-=are; break;
- case 3: tc->val1[c]-=are; tc->val2[c]-=are; break;
- case 4: tc->val2[c]-=are; break;
- case 5: tc->val1[c]+=are; tc->val2[c]-=are; break;
- case 6: tc->val1[c]+=are; break;
- case 7: tc->val1[c]+=are; tc->val2[c]+=are; break;
- }
+ for (int c = 0; c < 5; c++) {
+ tc->val1[c] += dirx[dir] * are;
+ tc->val2[c] += diry[dir] * are;
}
}
static void skill_brandishspear(struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int64 tick, int flag)
{
int c,n=4;
- uint8 dir;
struct square tc;
int x, y;
nullpo_retv(bl);
x = bl->x;
y = bl->y;
- dir = map->calc_dir(src, x, y);
+ enum unit_dir dir = map->calc_dir(src, x, y);
skill->brandishspear_first(&tc,dir,x,y);
skill->brandishspear_dir(&tc,dir,4);
skill->area_temp[1] = bl->id;
@@ -16588,7 +17142,7 @@ static int skill_clear_group(struct block_list *bl, int flag)
}
for (i=0;i<count;i++)
- skill->del_unitgroup(group[i],ALC_MARK);
+ skill->del_unitgroup(group[i]);
return count;
}
@@ -16947,7 +17501,7 @@ static int skill_trap_splash(struct block_list *bl, va_list ap)
}
/* Fall through */
default:
- skill->attack(skill->get_type(sg->skill_id), ss, src, bl, sg->skill_id, sg->skill_lv, tick, enemy_count);
+ skill->attack(skill->get_type(sg->skill_id, sg->skill_lv), ss, src, bl, sg->skill_id, sg->skill_lv, tick, enemy_count);
break;
}
return 1;
@@ -17236,7 +17790,7 @@ static int skill_delunit(struct skill_unit *su)
map->deliddb(&su->bl);
idb_remove(skill->unit_db, su->bl.id);
if(--group->alive_count==0)
- skill->del_unitgroup(group,ALC_MARK);
+ skill->del_unitgroup(group);
return 0;
}
@@ -17273,13 +17827,20 @@ static int skill_get_new_group_id(void)
static struct skill_unit_group *skill_initunitgroup(struct block_list *src, int count, uint16 skill_id, uint16 skill_lv, int unit_id, int limit, int interval)
{
- struct unit_data* ud = unit->bl2ud( src );
struct skill_unit_group* group;
int i;
if(!(skill_id && skill_lv)) return 0;
nullpo_retr(NULL, src);
+
+ struct unit_data *ud;
+
+ if (src->type == BL_NPC)
+ ud = unit->bl2ud2(src);
+ else
+ ud = unit->bl2ud(src);
+
nullpo_retr(NULL, ud);
// find a free spot to store the new unit group
@@ -17295,7 +17856,7 @@ static struct skill_unit_group *skill_initunitgroup(struct block_list *src, int
j = i;
}
}
- skill->del_unitgroup(ud->skillunit[j],ALC_MARK);
+ skill->del_unitgroup(ud->skillunit[j]);
//Since elements must have shifted, we use the last slot.
i = MAX_SKILLUNITGROUP-1;
}
@@ -17334,18 +17895,13 @@ static struct skill_unit_group *skill_initunitgroup(struct block_list *src, int
/*==========================================
*
*------------------------------------------*/
-static int skill_delunitgroup(struct skill_unit_group *group, const char *file, int line, const char *func)
+static int skill_delunitgroup(struct skill_unit_group *group)
{
struct block_list* src;
struct unit_data *ud;
int i,j;
struct map_session_data *sd = NULL;
- if( group == NULL ) {
- ShowDebug("skill_delunitgroup: group is NULL (source=%s:%d, %s)! Please report this! (#3504)\n", file, line, func);
- return 0;
- }
-
src = map->id2bl(group->src_id);
ud = unit->bl2ud(src);
sd = BL_CAST(BL_PC, src);
@@ -17477,7 +18033,7 @@ static int skill_clear_unitgroup(struct block_list *src)
nullpo_ret(ud);
while (ud->skillunit[0])
- skill->del_unitgroup(ud->skillunit[0],ALC_MARK);
+ skill->del_unitgroup(ud->skillunit[0]);
return 1;
}
@@ -17636,7 +18192,7 @@ static int skill_unit_timer_sub(union DBKey key, struct DBData *data, va_list ap
case UNT_WARP_ACTIVE:
// warp portal opens (morph to a UNT_WARP_WAITING cell)
- group->unit_id = skill->get_unit_id(group->skill_id, 1); // UNT_WARP_WAITING
+ group->unit_id = skill->get_unit_id(group->skill_id, group->skill_lv, 1); // UNT_WARP_WAITING
clif->changelook(&su->bl, LOOK_BASE, group->unit_id);
// restart timers
group->limit = skill->get_time(group->skill_id,group->skill_lv);
@@ -18763,12 +19319,12 @@ static int skill_poisoningweapon(struct map_session_data *sd, int nameid)
return 0;
}
-static void skill_toggle_magicpower(struct block_list *bl, uint16 skill_id)
+static void skill_toggle_magicpower(struct block_list *bl, uint16 skill_id, int skill_lv)
{
struct status_change *sc = status->get_sc(bl);
// non-offensive and non-magic skills do not affect the status
- if (skill->get_nk(skill_id)&NK_NO_DAMAGE || !(skill->get_type(skill_id)&BF_MAGIC))
+ if ((skill->get_nk(skill_id) & NK_NO_DAMAGE) != 0 || (skill->get_type(skill_id, skill_lv) & BF_MAGIC) == 0)
return;
if (sc && sc->count && sc->data[SC_MAGICPOWER]) {
@@ -18902,14 +19458,20 @@ static int skill_select_menu(struct map_session_data *sd, uint16 skill_id)
idx = skill->get_index(skill_id);
- if( skill_id >= GS_GLITTERING || skill->get_type(skill_id) != BF_MAGIC ||
- (id = sd->status.skill[idx].id) == 0 || sd->status.skill[idx].flag != SKILL_FLAG_PLAGIARIZED ) {
+ if (skill_id >= GS_GLITTERING || (id = sd->status.skill[idx].id) == 0
+ || sd->status.skill[idx].flag != SKILL_FLAG_PLAGIARIZED) {
clif->skill_fail(sd, SC_AUTOSHADOWSPELL, 0, 0, 0);
return 0;
}
lv = (aslvl + 1) / 2; // The level the skill will be autocasted
- lv = min(lv,sd->status.skill[idx].lv);
+ lv = min(lv, sd->status.skill[idx].lv);
+
+ if (skill->get_type(skill_id, lv) != BF_MAGIC) {
+ clif->skill_fail(sd, SC_AUTOSHADOWSPELL, 0, 0, 0);
+ return 0;
+ }
+
prob = (aslvl == 10) ? 15 : (32 - 2 * aslvl); // Probability at level 10 was increased to 15.
sc_start4(&sd->bl,&sd->bl,SC__AUTOSHADOWSPELL,100,id,lv,prob,0,skill->get_time(SC_AUTOSHADOWSPELL,aslvl));
return 0;
@@ -20050,9 +20612,6 @@ static bool skill_parse_row_changematerialdb(char *split[], int columns, int cur
return true;
}
-#define skilldb_duplicate_warning(name, setting, skill) (ShowError("skill_read_skilldb: Duplicate entry '%s' in setting '%s' for Skill Id %d in '%s', skipping...\n", name, setting, skill, "db/"DBPATH"skill_db.conf"))
-#define skilldb_invalid_error(name, setting, skill) (ShowError("skill_read_skilldb: Invalid entry '%s' in setting '%s' for Skill Id %d in '%s', skipping...\n", name, setting, skill, "db/"DBPATH"skill_db.conf"))
-
/**
* Sets Level based configuration for skill groups from skill_db.conf [ Smokexyz/Hercules ]
* @param *conf pointer to config setting.
@@ -20097,295 +20656,549 @@ static void skill_level_set_value(int *arr, int value)
}
}
-static void skill_validate_hittype(struct config_setting_t *conf, struct s_skill_db *sk)
+/**
+ * Validates a skill's ID when reading the skill DB.
+ * If validating fails, the ID is set to 0.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the ID should be set it.
+ * @param conf_index The 1-based index of the currently processed libconfig settings block.
+ *
+ **/
+static void skill_validate_id(struct config_setting_t *conf, struct s_skill_db *sk, int conf_index)
{
- const char *type = NULL;
+ nullpo_retv(conf);
+ nullpo_retv(sk);
+ sk->nameid = 0;
+
+ int id;
+
+ if (libconfig->setting_lookup_int(conf, "Id", &id) == CONFIG_FALSE)
+ ShowError("%s: No skill ID specified in entry %d in %s! Skipping skill...\n",
+ __func__, conf_index, conf->file);
+ else if (id <= 0)
+ ShowError("%s: Invalid skill ID %d specified in entry %d in %s! Skipping skill...\n",
+ __func__, id, conf_index, conf->file);
+ else if(skill->get_index(id) == 0)
+ ShowError("%s: Skill ID %d in entry %d in %s is out of range, or within a reserved range (for guild, homunculus, mercenary or elemental skills)! Skipping skill...\n",
+ __func__, id, conf_index, conf->file);
+ else if (*skill->get_name(id) != '\0')
+ ShowError("%s: Duplicate skill ID %d in entry %d in %s! Skipping skill...\n",
+ __func__, id, conf_index, conf->file);
+ else
+ sk->nameid = id;
+}
+
+/**
+ * Validates if a skill's name contains invalid characters when reading the skill DB.
+ *
+ * @param name The name to validate.
+ * @return True if the passed name is a NULL pointer or contains at least one invalid character, otherwise false.
+ *
+ **/
+static bool skill_name_contains_invalid_character(const char *name)
+{
+ nullpo_retr(true, name);
+
+ for (int i = 0; i < MAX_SKILL_NAME_LENGTH && name[i] != '\0'; i++) {
+ if (ISALNUM(name[i]) == 0 && name[i] != '_')
+ return true;
+ }
+
+ return false;
+}
+
+/**
+ * Validates a skill's name when reading the skill DB.
+ * If validating fails, the name is set to an enpty string.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the name should be set it.
+ *
+ **/
+static void skill_validate_name(struct config_setting_t *conf, struct s_skill_db *sk)
+{
+ nullpo_retv(conf);
nullpo_retv(sk);
- if (libconfig->setting_lookup_string(conf, "Hit", &type)) {
- if (strcmpi(type, "BDT_SKILL") == 0) {
- sk->hit = BDT_SKILL;
- } else if (strcmpi(type, "BDT_MULTIHIT") == 0) {
- sk->hit = BDT_MULTIHIT;
- } else if (strcmpi(type, "BDT_NORMAL") == 0) {
- sk->hit = BDT_NORMAL;
- } else {
- skilldb_invalid_error(type, "Hit", sk->nameid);
+
+ *sk->name = '\0';
+
+ const char *name;
+
+ if (libconfig->setting_lookup_string(conf, "Name", &name) == CONFIG_FALSE || *name == '\0')
+ ShowError("%s: No name specified for skill ID %d in %s! Skipping skill...\n",
+ __func__, sk->nameid, conf->file);
+ else if (strlen(name) >= sizeof(sk->name))
+ ShowError("%s: Specified name %s for skill ID %d in %s is too long: %d! Maximum is %d. Skipping skill...\n",
+ __func__, name, sk->nameid, conf->file, (int)strlen(name), (int)sizeof(sk->name) - 1);
+ else if (skill->name_contains_invalid_character(name))
+ ShowError("%s: Specified name %s for skill ID %d in %s contains invalid characters! Allowed characters are letters, numbers and underscores. Skipping skill...\n",
+ __func__, name, sk->nameid, conf->file);
+ else if (skill->name2id(name) != 0)
+ ShowError("%s: Duplicate name %s for skill ID %d in %s! Skipping skill...\n",
+ __func__, name, sk->nameid, conf->file);
+ else
+ safestrncpy(sk->name, name, sizeof(sk->name));
+}
+
+/**
+ * Validates a skill's maximum level when reading the skill DB.
+ * If validating fails, the maximum level is set to 0.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the maximum level should be set it.
+ *
+ **/
+static void skill_validate_max_level(struct config_setting_t *conf, struct s_skill_db *sk)
+{
+ nullpo_retv(conf);
+ nullpo_retv(sk);
+
+ sk->max = 0;
+
+ int max_level;
+
+ if (libconfig->setting_lookup_int(conf, "MaxLevel", &max_level) == CONFIG_FALSE)
+ ShowError("%s: No maximum level specified for skill ID %d in %s! Skipping skill...\n",
+ __func__, sk->nameid, conf->file);
+ else if (max_level < 1 || max_level > MAX_SKILL_LEVEL)
+ ShowError("%s: Invalid maximum level %d specified for skill ID %d in %s! Minimum is 1, maximum is %d. Skipping skill...\n",
+ __func__, max_level, sk->nameid, conf->file, MAX_SKILL_LEVEL);
+ else
+ sk->max = max_level;
+}
+
+/**
+ * Validates a skill's description when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the description should be set it.
+ *
+ **/
+static void skill_validate_description(struct config_setting_t *conf, struct s_skill_db *sk)
+{
+ nullpo_retv(conf);
+ nullpo_retv(sk);
+
+ *sk->desc = '\0';
+
+ const char *description;
+
+ if (libconfig->setting_lookup_string(conf, "Description", &description) == CONFIG_TRUE && *description != '\0') {
+ if (strlen(description) >= sizeof(sk->desc))
+ ShowWarning("%s: Specified description '%s' for skill ID %d in %s is too long: %d! Maximum is %d. Trimming...\n",
+ __func__, description, sk->nameid, conf->file, (int)strlen(description), (int)sizeof(sk->desc) - 1);
+
+ safestrncpy(sk->desc, description, sizeof(sk->desc));
+ }
+}
+
+/**
+ * Validates a skill's range when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the range should be set it.
+ *
+ **/
+static void skill_validate_range(struct config_setting_t *conf, struct s_skill_db *sk)
+{
+ nullpo_retv(conf);
+ nullpo_retv(sk);
+
+ skill->level_set_value(sk->range, 0);
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "Range");
+
+ if (t != NULL && config_setting_is_group(t)) {
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++) {
+ char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL.
+ safesnprintf(lv, sizeof(lv), "Lv%d", i + 1);
+ int range;
+
+ if (libconfig->setting_lookup_int(t, lv, &range) == CONFIG_TRUE) {
+ if (range >= SHRT_MIN && range <= SHRT_MAX)
+ sk->range[i] = range;
+ else
+ ShowWarning("%s: Invalid range %d specified in level %d for skill ID %d in %s! Minimum is %d, maximum is %d. Defaulting to 0...\n",
+ __func__, range, i + 1, sk->nameid, conf->file, SHRT_MIN, SHRT_MAX);
+ }
+ }
+
+ return;
+ }
+
+ int range;
+
+ if (libconfig->setting_lookup_int(conf, "Range", &range) == CONFIG_TRUE) {
+ if (range >= SHRT_MIN && range <= SHRT_MAX)
+ skill->level_set_value(sk->range, range);
+ else
+ ShowWarning("%s: Invalid range %d specified for skill ID %d in %s! Minimum is %d, maximum is %d. Defaulting to 0...\n",
+ __func__, range, sk->nameid, conf->file, SHRT_MIN, SHRT_MAX);
+ }
+}
+
+/**
+ * Validates a skill's hit type when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the hit type should be set it.
+ *
+ **/
+static void skill_validate_hittype(struct config_setting_t *conf, struct s_skill_db *sk)
+{
+ nullpo_retv(conf);
+ nullpo_retv(sk);
+
+ skill->level_set_value(sk->hit, BDT_NORMAL);
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "Hit");
+
+ if (t != NULL && config_setting_is_group(t)) {
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++) {
+ char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL.
+ safesnprintf(lv, sizeof(lv), "Lv%d", i + 1);
+ const char *hit_type;
+
+ if (libconfig->setting_lookup_string(t, lv, &hit_type) == CONFIG_TRUE) {
+ if (strcmpi(hit_type, "BDT_SKILL") == 0)
+ sk->hit[i] = BDT_SKILL;
+ else if (strcmpi(hit_type, "BDT_MULTIHIT") == 0)
+ sk->hit[i] = BDT_MULTIHIT;
+ else if (strcmpi(hit_type, "BDT_NORMAL") != 0)
+ ShowWarning("%s: Invalid hit type %s specified in level %d for skill ID %d in %s! Defaulting to BDT_NORMAL...\n",
+ __func__, hit_type, i + 1, sk->nameid, conf->file);
+ }
+ }
+
+ return;
+ }
+
+ const char *hit_type;
+
+ if (libconfig->setting_lookup_string(conf, "Hit", &hit_type) == CONFIG_TRUE) {
+ int hit = BDT_NORMAL;
+
+ if (strcmpi(hit_type, "BDT_SKILL") == 0) {
+ hit = BDT_SKILL;
+ } else if (strcmpi(hit_type, "BDT_MULTIHIT") == 0) {
+ hit = BDT_MULTIHIT;
+ } else if (strcmpi(hit_type, "BDT_NORMAL") != 0) {
+ ShowWarning("%s: Invalid hit type %s specified for skill ID %d in %s! Defaulting to BDT_NORMAL...\n",
+ __func__, hit_type, sk->nameid, conf->file);
return;
}
+
+ skill->level_set_value(sk->hit, hit);
}
}
/**
- * Validates "SkillType" when reading skill_db.conf
- * @param conf struct, pointer to skill configuration
- * @param sk struct, pointer to s_skill_db
- * @return (void)
- */
+ * Validates a skill's types when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the types should be set it.
+ *
+ **/
static void skill_validate_skilltype(struct config_setting_t *conf, struct s_skill_db *sk)
{
- struct config_setting_t *t = NULL, *tt = NULL;
-
+ nullpo_retv(conf);
nullpo_retv(sk);
- if((t=libconfig->setting_get_member(conf, "SkillType")) && config_setting_is_group(t)) {
- int j=0;
- while ((tt = libconfig->setting_get_elem(t, j++))) {
- const char *type = config_setting_name(tt);
+
+ sk->inf = INF_NONE;
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "SkillType");
+
+ if (t != NULL && config_setting_is_group(t)) {
+ struct config_setting_t *tt;
+ int i = 0;
+
+ while ((tt = libconfig->setting_get_elem(t, i++)) != NULL) {
+ const char *skill_type = config_setting_name(tt);
bool on = libconfig->setting_get_bool_real(tt);
- if (strcmpi(type, "Enemy") == 0) {
- if (on) {
+ if (strcmpi(skill_type, "Enemy") == 0) {
+ if (on)
sk->inf |= INF_ATTACK_SKILL;
- } else {
+ else
sk->inf &= ~INF_ATTACK_SKILL;
- }
- } else if (strcmpi(type, "Place") == 0) {
- if (on) {
+ } else if (strcmpi(skill_type, "Place") == 0) {
+ if (on)
sk->inf |= INF_GROUND_SKILL;
- } else {
+ else
sk->inf &= ~INF_GROUND_SKILL;
- }
- } else if (strcmpi(type, "Self") == 0) {
- if (on) {
+ } else if (strcmpi(skill_type, "Self") == 0) {
+ if (on)
sk->inf |= INF_SELF_SKILL;
- } else {
+ else
sk->inf &= ~INF_SELF_SKILL;
- }
- } else if (strcmpi(type, "Friend") == 0) {
- if (on) {
+ } else if (strcmpi(skill_type, "Friend") == 0) {
+ if (on)
sk->inf |= INF_SUPPORT_SKILL;
- } else {
+ else
sk->inf &= ~INF_SUPPORT_SKILL;
- }
- } else if (strcmpi(type, "Trap") == 0) {
- if (on) {
+ } else if (strcmpi(skill_type, "Trap") == 0) {
+ if (on)
sk->inf |= INF_TARGET_TRAP;
- } else {
+ else
sk->inf &= ~INF_TARGET_TRAP;
- }
- } else if (strcmpi(type, "Passive") != 0) {
- skilldb_invalid_error(type, config_setting_name(t), sk->nameid);
+ } else if (strcmpi(skill_type, "Passive") != 0) {
+ ShowWarning("%s: Invalid skill type %s specified for skill ID %d in %s! Skipping type...\n",
+ __func__, skill_type, sk->nameid, conf->file);
}
}
}
}
/**
- * Validates "SkillInfo" when reading skill_db.conf
- * @param conf struct, pointer to skill configuration
- * @param sk struct, pointer to s_skill_db
- * @return (void)
- */
+ * Validates a skill's sub-types when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the sub-types should be set it.
+ *
+ **/
static void skill_validate_skillinfo(struct config_setting_t *conf, struct s_skill_db *sk)
{
- struct config_setting_t *t = NULL, *tt = NULL;
-
+ nullpo_retv(conf);
nullpo_retv(sk);
- if ((t=libconfig->setting_get_member(conf, "SkillInfo")) && config_setting_is_group(t)) {
- int j=0;
- while ((tt = libconfig->setting_get_elem(t, j++))) {
- const char *type = config_setting_name(tt);
+
+ sk->inf2 = INF2_NONE;
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "SkillInfo");
+
+ if (t != NULL && config_setting_is_group(t)) {
+ struct config_setting_t *tt;
+ int i = 0;
+
+ while ((tt = libconfig->setting_get_elem(t, i++)) != NULL) {
+ const char *skill_info = config_setting_name(tt);
bool on = libconfig->setting_get_bool_real(tt);
- if (strcmpi(type, "Quest") == 0) {
- if (on) {
+ if (strcmpi(skill_info, "Quest") == 0) {
+ if (on)
sk->inf2 |= INF2_QUEST_SKILL;
- } else {
+ else
sk->inf2 &= ~INF2_QUEST_SKILL;
- }
- } else if (strcmpi(type, "NPC") == 0) {
- if (on) {
+ } else if (strcmpi(skill_info, "NPC") == 0) {
+ if (on)
sk->inf2 |= INF2_NPC_SKILL;
- } else {
+ else
sk->inf2 &= ~INF2_NPC_SKILL;
- }
- } else if (strcmpi(type, "Wedding") == 0) {
- if (on) {
+ } else if (strcmpi(skill_info, "Wedding") == 0) {
+ if (on)
sk->inf2 |= INF2_WEDDING_SKILL;
- } else {
+ else
sk->inf2 &= ~INF2_WEDDING_SKILL;
- }
- } else if (strcmpi(type, "Spirit") == 0) {
- if (on) {
+ } else if (strcmpi(skill_info, "Spirit") == 0) {
+ if (on)
sk->inf2 |= INF2_SPIRIT_SKILL;
- } else {
+ else
sk->inf2 &= ~INF2_SPIRIT_SKILL;
- }
- } else if (strcmpi(type, "Guild") == 0) {
- if (on) {
+ } else if (strcmpi(skill_info, "Guild") == 0) {
+ if (on)
sk->inf2 |= INF2_GUILD_SKILL;
- } else {
+ else
sk->inf2 &= ~INF2_GUILD_SKILL;
- }
- } else if (strcmpi(type, "Song") == 0) {
- if (on) {
+ } else if (strcmpi(skill_info, "Song") == 0) {
+ if (on)
sk->inf2 |= INF2_SONG_DANCE;
- } else {
+ else
sk->inf2 &= ~INF2_SONG_DANCE;
- }
- } else if (strcmpi(type, "Ensemble") == 0) {
- if (on) {
+ } else if (strcmpi(skill_info, "Ensemble") == 0) {
+ if (on)
sk->inf2 |= INF2_ENSEMBLE_SKILL;
- } else {
+ else
sk->inf2 &= ~INF2_ENSEMBLE_SKILL;
- }
- } else if (strcmpi(type, "Trap") == 0) {
- if (on) {
+ } else if (strcmpi(skill_info, "Trap") == 0) {
+ if (on)
sk->inf2 |= INF2_TRAP;
- } else {
+ else
sk->inf2 &= ~INF2_TRAP;
- }
- } else if (strcmpi(type, "TargetSelf") == 0) {
- if (on) {
+ } else if (strcmpi(skill_info, "TargetSelf") == 0) {
+ if (on)
sk->inf2 |= INF2_TARGET_SELF;
- } else {
+ else
sk->inf2 &= ~INF2_TARGET_SELF;
- }
- } else if (strcmpi(type, "NoCastSelf") == 0) {
- if (on) {
+ } else if (strcmpi(skill_info, "NoCastSelf") == 0) {
+ if (on)
sk->inf2 |= INF2_NO_TARGET_SELF;
- } else {
+ else
sk->inf2 &= ~INF2_NO_TARGET_SELF;
- }
- } else if (strcmpi(type, "PartyOnly") == 0) {
- if (on) {
+ } else if (strcmpi(skill_info, "PartyOnly") == 0) {
+ if (on)
sk->inf2 |= INF2_PARTY_ONLY;
- } else {
+ else
sk->inf2 &= ~INF2_PARTY_ONLY;
- }
- } else if (strcmpi(type, "GuildOnly") == 0) {
- if (on) {
+ } else if (strcmpi(skill_info, "GuildOnly") == 0) {
+ if (on)
sk->inf2 |= INF2_GUILD_ONLY;
- } else {
+ else
sk->inf2 &= ~INF2_GUILD_ONLY;
- }
- } else if (strcmpi(type, "NoEnemy") == 0) {
- if (on) {
+ } else if (strcmpi(skill_info, "NoEnemy") == 0) {
+ if (on)
sk->inf2 |= INF2_NO_ENEMY;
- } else {
+ else
sk->inf2 &= ~INF2_NO_ENEMY;
- }
- } else if (strcmpi(type, "IgnoreLandProtector") == 0) {
- if (on) {
+ } else if (strcmpi(skill_info, "IgnoreLandProtector") == 0) {
+ if (on)
sk->inf2 |= INF2_NOLP;
- } else {
+ else
sk->inf2 &= ~INF2_NOLP;
- }
- } else if (strcmpi(type, "Chorus") == 0) {
- if (on) {
+ } else if (strcmpi(skill_info, "Chorus") == 0) {
+ if (on)
sk->inf2 |= INF2_CHORUS_SKILL;
- } else {
+ else
sk->inf2 &= ~INF2_CHORUS_SKILL;
- }
- } else if (strcmpi(type, "FreeCastNormal") == 0) {
- if (on) {
+ } else if (strcmpi(skill_info, "FreeCastNormal") == 0) {
+ if (on)
sk->inf2 |= INF2_FREE_CAST_NORMAL;
- } else {
+ else
sk->inf2 &= ~INF2_FREE_CAST_NORMAL;
- }
- } else if (strcmpi(type, "FreeCastReduced") == 0) {
- if (on) {
+ } else if (strcmpi(skill_info, "FreeCastReduced") == 0) {
+ if (on)
sk->inf2 |= INF2_FREE_CAST_REDUCED;
- } else {
+ else
sk->inf2 &= ~INF2_FREE_CAST_REDUCED;
- }
- } else if (strcmpi(type, "ShowSkillScale") == 0) {
- if (on) {
+ } else if (strcmpi(skill_info, "ShowSkillScale") == 0) {
+ if (on)
sk->inf2 |= INF2_SHOW_SKILL_SCALE;
- } else {
+ else
sk->inf2 &= ~INF2_SHOW_SKILL_SCALE;
- }
- } else if (strcmpi(type, "AllowReproduce") == 0) {
- if (on) {
+ } else if (strcmpi(skill_info, "AllowReproduce") == 0) {
+ if (on)
sk->inf2 |= INF2_ALLOW_REPRODUCE;
- } else {
+ else
sk->inf2 &= ~INF2_ALLOW_REPRODUCE;
- }
- } else if (strcmpi(type, "HiddenTrap") == 0) {
- if (on) {
+ } else if (strcmpi(skill_info, "HiddenTrap") == 0) {
+ if (on)
sk->inf2 |= INF2_HIDDEN_TRAP;
- } else {
+ else
sk->inf2 &= ~INF2_HIDDEN_TRAP;
- }
- } else if (strcmpi(type, "IsCombo") == 0) {
- if (on) {
+ } else if (strcmpi(skill_info, "IsCombo") == 0) {
+ if (on)
sk->inf2 |= INF2_IS_COMBO_SKILL;
- } else {
+ else
sk->inf2 &= ~INF2_IS_COMBO_SKILL;
- }
- } else if (strcmpi(type, "None") != 0) {
- skilldb_invalid_error(type, config_setting_name(t), sk->nameid);
+ } else if (strcmpi(skill_info, "None") != 0) {
+ ShowWarning("%s: Invalid sub-type %s specified for skill ID %d in %s! Skipping sub-type...\n",
+ __func__, skill_info, sk->nameid, conf->file);
}
}
}
}
/**
- * Validates "AttackType" when reading skill_db.conf
- * @param conf struct, pointer to skill configuration
- * @param sk struct, pointer to s_skill_db
- * @return (void)
- */
+ * Validates a skill's attack type when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the attack type should be set it.
+ *
+ **/
static void skill_validate_attacktype(struct config_setting_t *conf, struct s_skill_db *sk)
{
- const char *type = NULL;
-
+ nullpo_retv(conf);
nullpo_retv(sk);
- if (libconfig->setting_lookup_string(conf, "AttackType", &type)) {
- if (!strcmpi(type, "Weapon")) {
- sk->skill_type = BF_WEAPON;
- } else if (!strcmpi(type, "Magic")) {
- sk->skill_type = BF_MAGIC;
- } else if (!strcmpi(type, "Misc")) {
- sk->skill_type = BF_MISC;
- } else {
- skilldb_invalid_error(type, "AttackType", sk->nameid);
+
+ skill->level_set_value(sk->skill_type, BF_NONE);
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "AttackType");
+
+ if (t != NULL && config_setting_is_group(t)) {
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++) {
+ char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL.
+ safesnprintf(lv, sizeof(lv), "Lv%d", i + 1);
+ const char *attack_type;
+
+ if (libconfig->setting_lookup_string(t, lv, &attack_type) == CONFIG_TRUE) {
+ if (strcmpi(attack_type, "Weapon") == 0)
+ sk->skill_type[i] = BF_WEAPON;
+ else if (strcmpi(attack_type, "Magic") == 0)
+ sk->skill_type[i] = BF_MAGIC;
+ else if (strcmpi(attack_type, "Misc") == 0)
+ sk->skill_type[i] = BF_MISC;
+ else if (strcmpi(attack_type, "None") != 0)
+ ShowWarning("%s: Invalid attack type %s specified in level %d for skill ID %d in %s! Defaulting to None...\n",
+ __func__, attack_type, i + 1, sk->nameid, conf->file);
+ }
+ }
+
+ return;
+ }
+
+ const char *attack_type;
+
+ if (libconfig->setting_lookup_string(conf, "AttackType", &attack_type) == CONFIG_TRUE) {
+ int attack = BF_NONE;
+
+ if (strcmpi(attack_type, "Weapon") == 0) {
+ attack = BF_WEAPON;
+ } else if (strcmpi(attack_type, "Magic") == 0) {
+ attack = BF_MAGIC;
+ } else if (strcmpi(attack_type, "Misc") == 0) {
+ attack = BF_MISC;
+ } else if (strcmpi(attack_type, "None") != 0) {
+ ShowWarning("%s: Invalid attack type %s specified for skill ID %d in %s! Defaulting to None...\n",
+ __func__, attack_type, sk->nameid, conf->file);
return;
}
+
+ skill->level_set_value(sk->skill_type, attack);
}
}
/**
- * Validates "Element" when reading skill_db.conf
- * @param ele_t struct, pointer to skill configuration
- * @param sk struct, pointer to s_skill_db
- * @return (void)
- */
+ * Validates a skill's element when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the element should be set it.
+ *
+ **/
static void skill_validate_element(struct config_setting_t *conf, struct s_skill_db *sk)
{
- const char *type = NULL;
- struct config_setting_t *t = NULL;
-
+ nullpo_retv(conf);
nullpo_retv(sk);
- if ((t=libconfig->setting_get_member(conf, "Element")) && config_setting_is_group(t)) {
- int j = 0;
- char lv[6]; // enough to contain "Lv100" in case of custom MAX_SKILL_LEVEL
- for (j=0; j < MAX_SKILL_LEVEL; j++) {
- sprintf(lv, "Lv%d",j+1);
- if (libconfig->setting_lookup_string(t, lv, &type)) {
- if (strcmpi(type,"Ele_Weapon") == 0)
- sk->element[j] = -1;
- else if (strcmpi(type,"Ele_Endowed") == 0)
- sk->element[j] = -2;
- else if (strcmpi(type,"Ele_Random") == 0)
- sk->element[j] = -3;
- else if (!script->get_constant(type,&sk->element[j]))
- skilldb_invalid_error(type, config_setting_name(conf), sk->nameid);
+ skill->level_set_value(sk->element, ELE_NEUTRAL);
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "Element");
+
+ if (t != NULL && config_setting_is_group(t)) {
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++) {
+ char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL.
+ safesnprintf(lv, sizeof(lv), "Lv%d", i + 1);
+ const char *element;
+
+ if (libconfig->setting_lookup_string(t, lv, &element) == CONFIG_TRUE) {
+ if (strcmpi(element, "Ele_Weapon") == 0)
+ sk->element[i] = -1;
+ else if (strcmpi(element, "Ele_Endowed") == 0)
+ sk->element[i] = -2;
+ else if (strcmpi(element, "Ele_Random") == 0)
+ sk->element[i] = -3;
+ else if (!script->get_constant(element, &sk->element[i]))
+ ShowWarning("%s: Invalid element %s specified in level %d for skill ID %d in %s! Defaulting to Ele_Neutral...\n",
+ __func__, element, i + 1, sk->nameid, conf->file);
}
}
- } else if (libconfig->setting_lookup_string(conf, "Element", &type)) {
- int ele = 0;
+ return;
+ }
+
+ const char *element;
+
+ if (libconfig->setting_lookup_string(conf, "Element", &element) == CONFIG_TRUE) {
+ int ele = ELE_NEUTRAL;
- if (strcmpi(type,"Ele_Weapon") == 0)
+ if (strcmpi(element, "Ele_Weapon") == 0) {
ele = -1;
- else if (strcmpi(type,"Ele_Endowed") == 0)
+ } else if (strcmpi(element, "Ele_Endowed") == 0) {
ele = -2;
- else if (strcmpi(type,"Ele_Random") == 0)
+ } else if (strcmpi(element, "Ele_Random") == 0) {
ele = -3;
- else if (!script->get_constant(type, &ele)) {
- skilldb_invalid_error(type, config_setting_name(conf), sk->nameid);
+ } else if (!script->get_constant(element, &ele)) {
+ ShowWarning("%s: Invalid element %s specified for skill ID %d in %s! Defaulting to Ele_Neutral...\n",
+ __func__, element, sk->nameid, conf->file);
return;
}
@@ -20394,696 +21207,2513 @@ static void skill_validate_element(struct config_setting_t *conf, struct s_skill
}
/**
- * Validates "DamageType" when reading skill_db.conf
- * @param conf struct, pointer to skill configuration
- * @param sk struct, pointer to s_skill_db
- * @return (void)
- */
+ * Validates a skill's damage types when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the damage types should be set it.
+ *
+ **/
static void skill_validate_damagetype(struct config_setting_t *conf, struct s_skill_db *sk)
{
- struct config_setting_t *t = NULL, *tt = NULL;
-
+ nullpo_retv(conf);
nullpo_retv(sk);
- if ((t=libconfig->setting_get_member(conf, "DamageType")) && config_setting_is_group(t)) {
- int j=0;
- while ((tt = libconfig->setting_get_elem(t, j++))) {
- const char *type = config_setting_name(tt);
+
+ sk->nk = NK_NONE;
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "DamageType");
+
+ if (t != NULL && config_setting_is_group(t)) {
+ struct config_setting_t *tt;
+ int i = 0;
+
+ while ((tt = libconfig->setting_get_elem(t, i++)) != NULL) {
+ const char *damage_type = config_setting_name(tt);
bool on = libconfig->setting_get_bool_real(tt);
- if (strcmpi(type, "NoDamage") == 0) {
- if (on) {
+ if (strcmpi(damage_type, "NoDamage") == 0) {
+ if (on)
sk->nk |= NK_NO_DAMAGE;
- } else {
+ else
sk->nk &= ~NK_NO_DAMAGE;
- }
- } else if (strcmpi(type, "SplashArea") == 0) {
- if (on) {
+ } else if (strcmpi(damage_type, "SplashArea") == 0) {
+ if (on)
sk->nk |= NK_SPLASH_ONLY;
- } else {
+ else
sk->nk &= ~NK_SPLASH_ONLY;
- }
- } else if (strcmpi(type, "SplitDamage") == 0) {
- if (on) {
+ } else if (strcmpi(damage_type, "SplitDamage") == 0) {
+ if (on)
sk->nk |= NK_SPLASHSPLIT;
- } else {
+ else
sk->nk &= ~NK_SPLASHSPLIT;
- }
- } else if (strcmpi(type, "IgnoreCards") == 0) {
- if (on) {
+ } else if (strcmpi(damage_type, "IgnoreCards") == 0) {
+ if (on)
sk->nk |= NK_NO_CARDFIX_ATK;
- } else {
+ else
sk->nk &= ~NK_NO_CARDFIX_ATK;
- }
- } else if (strcmpi(type, "IgnoreElement") == 0) {
- if (on) {
+ } else if (strcmpi(damage_type, "IgnoreElement") == 0) {
+ if (on)
sk->nk |= NK_NO_ELEFIX;
- } else {
+ else
sk->nk &= ~NK_NO_ELEFIX;
- }
- } else if (strcmpi(type, "IgnoreDefense") == 0) {
- if (on) {
+ } else if (strcmpi(damage_type, "IgnoreDefense") == 0) {
+ if (on)
sk->nk |= NK_IGNORE_DEF;
- } else {
+ else
sk->nk &= ~NK_IGNORE_DEF;
- }
- } else if (strcmpi(type, "IgnoreFlee") == 0) {
- if (on) {
+ } else if (strcmpi(damage_type, "IgnoreFlee") == 0) {
+ if (on)
sk->nk |= NK_IGNORE_FLEE;
- } else {
+ else
sk->nk &= ~NK_IGNORE_FLEE;
- }
- } else if (strcmpi(type, "IgnoreDefCards") == 0) {
- if (on) {
+ } else if (strcmpi(damage_type, "IgnoreDefCards") == 0) {
+ if (on)
sk->nk |= NK_NO_CARDFIX_DEF;
- } else {
+ else
sk->nk &= ~NK_NO_CARDFIX_DEF;
- }
} else {
- skilldb_invalid_error(type, config_setting_name(t), sk->nameid);
+ ShowWarning("%s: Invalid damage type %s specified for skill ID %d in %s! Skipping damage type...\n",
+ __func__, damage_type, sk->nameid, conf->file);
}
}
}
}
/**
- * Validates "SkillCast/DelayOptions" when reading skill_db.conf
- * @param conf struct, pointer to skill configuration
- * @param sk struct, pointer to s_skill_db
- * @param delay boolean, switch for cast/delay setting
- * @return (void)
- */
-static void skill_validate_castnodex(struct config_setting_t *conf, struct s_skill_db *sk, bool delay)
+ * Validates a skill's splash range when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the splash range should be set it.
+ *
+ **/
+static void skill_validate_splash_range(struct config_setting_t *conf, struct s_skill_db *sk)
+{
+ nullpo_retv(conf);
+ nullpo_retv(sk);
+
+ skill->level_set_value(sk->splash, 0);
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "SplashRange");
+
+ if (t != NULL && config_setting_is_group(t)) {
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++) {
+ char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL.
+ safesnprintf(lv, sizeof(lv), "Lv%d", i + 1);
+ int splash_range;
+
+ if (libconfig->setting_lookup_int(t, lv, &splash_range) == CONFIG_TRUE) {
+ if (splash_range >= SHRT_MIN && splash_range <= SHRT_MAX)
+ sk->splash[i] = splash_range;
+ else
+ ShowWarning("%s: Invalid splash range %d specified in level %d for skill ID %d in %s! Minimum is %d, maximum is %d. Defaulting to 0...\n",
+ __func__, splash_range, i + 1, sk->nameid, conf->file, SHRT_MIN, SHRT_MAX);
+ }
+ }
+
+ return;
+ }
+
+ int splash_range;
+
+ if (libconfig->setting_lookup_int(conf, "SplashRange", &splash_range) == CONFIG_TRUE) {
+ if (splash_range >= SHRT_MIN && splash_range <= SHRT_MAX)
+ skill->level_set_value(sk->splash, splash_range);
+ else
+ ShowWarning("%s: Invalid splash range %d specified for skill ID %d in %s! Minimum is %d, maximum is %d. Defaulting to 0...\n",
+ __func__, splash_range, sk->nameid, conf->file, SHRT_MIN, SHRT_MAX);
+ }
+}
+
+/**
+ * Validates a skill's number of hits when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the number of hits should be set it.
+ *
+ **/
+static void skill_validate_number_of_hits(struct config_setting_t *conf, struct s_skill_db *sk)
+{
+ nullpo_retv(conf);
+ nullpo_retv(sk);
+
+ skill->level_set_value(sk->num, 1);
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "NumberOfHits");
+
+ if (t != NULL && config_setting_is_group(t)) {
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++) {
+ char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL.
+ safesnprintf(lv, sizeof(lv), "Lv%d", i + 1);
+ int number_of_hits;
+
+ if (libconfig->setting_lookup_int(t, lv, &number_of_hits) == CONFIG_TRUE) {
+ if (number_of_hits >= SHRT_MIN && number_of_hits <= SHRT_MAX)
+ sk->num[i] = number_of_hits;
+ else
+ ShowWarning("%s: Invalid number of hits %d specified in level %d for skill ID %d in %s! Minimum is %d, maximum is %d. Defaulting to 1...\n",
+ __func__, number_of_hits, i + 1, sk->nameid, conf->file, SHRT_MIN, SHRT_MAX);
+ }
+ }
+
+ return;
+ }
+
+ int number_of_hits;
+
+ if (libconfig->setting_lookup_int(conf, "NumberOfHits", &number_of_hits) == CONFIG_TRUE) {
+ if (number_of_hits >= SHRT_MIN && number_of_hits <= SHRT_MAX)
+ skill->level_set_value(sk->num, number_of_hits);
+ else
+ ShowWarning("%s: Invalid number of hits %d specified for skill ID %d in %s! Minimum is %d, maximum is %d. Defaulting to 1...\n",
+ __func__, number_of_hits, sk->nameid, conf->file, SHRT_MIN, SHRT_MAX);
+ }
+}
+
+/**
+ * Validates a skill's cast interruptibility when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the cast interruptibility should be set it.
+ *
+ **/
+static void skill_validate_interrupt_cast(struct config_setting_t *conf, struct s_skill_db *sk)
+{
+ nullpo_retv(conf);
+ nullpo_retv(sk);
+
+ skill->level_set_value(sk->castcancel, 0);
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "InterruptCast");
+
+ if (t != NULL && config_setting_is_group(t)) {
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++) {
+ char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL.
+ safesnprintf(lv, sizeof(lv), "Lv%d", i + 1);
+ int interrupt_cast;
+
+ if (libconfig->setting_lookup_bool(t, lv, &interrupt_cast) == CONFIG_TRUE)
+ sk->castcancel[i] = (interrupt_cast != 0) ? 1 : 0;
+ }
+
+ return;
+ }
+
+ int interrupt_cast;
+
+ if (libconfig->setting_lookup_bool(conf, "InterruptCast", &interrupt_cast) == CONFIG_TRUE) {
+ if (interrupt_cast != 0)
+ skill->level_set_value(sk->castcancel, 1);
+ }
+}
+
+/**
+ * Validates a skill's cast defence rate when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the cast defence rate should be set it.
+ *
+ **/
+static void skill_validate_cast_def_rate(struct config_setting_t *conf, struct s_skill_db *sk)
+{
+ nullpo_retv(conf);
+ nullpo_retv(sk);
+
+ skill->level_set_value(sk->cast_def_rate, 0);
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "CastDefRate");
+
+ if (t != NULL && config_setting_is_group(t)) {
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++) {
+ char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL.
+ safesnprintf(lv, sizeof(lv), "Lv%d", i + 1);
+ int cast_def_rate;
+
+ if (libconfig->setting_lookup_int(t, lv, &cast_def_rate) == CONFIG_TRUE) {
+ if (cast_def_rate >= SHRT_MIN && cast_def_rate <= SHRT_MAX)
+ sk->cast_def_rate[i] = cast_def_rate;
+ else
+ ShowWarning("%s: Invalid cast defence rate %d specified in level %d for skill ID %d in %s! Minimum is %d, maximum is %d. Defaulting to 0...\n",
+ __func__, cast_def_rate, i + 1, sk->nameid, conf->file, SHRT_MIN, SHRT_MAX);
+ }
+ }
+
+ return;
+ }
+
+ int cast_def_rate;
+
+ if (libconfig->setting_lookup_int(conf, "CastDefRate", &cast_def_rate) == CONFIG_TRUE) {
+ if (cast_def_rate >= SHRT_MIN && cast_def_rate <= SHRT_MAX)
+ skill->level_set_value(sk->cast_def_rate, cast_def_rate);
+ else
+ ShowWarning("%s: Invalid cast defence rate %d specified for skill ID %d in %s! Minimum is %d, maximum is %d. Defaulting to 0...\n",
+ __func__, cast_def_rate, sk->nameid, conf->file, SHRT_MIN, SHRT_MAX);
+ }
+}
+
+/**
+ * Validates a skill's number of instances when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the number of instances should be set it.
+ *
+ **/
+static void skill_validate_number_of_instances(struct config_setting_t *conf, struct s_skill_db *sk)
+{
+ nullpo_retv(conf);
+ nullpo_retv(sk);
+
+ skill->level_set_value(sk->maxcount, 0);
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "SkillInstances");
+
+ if (t != NULL && config_setting_is_group(t)) {
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++) {
+ char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL.
+ safesnprintf(lv, sizeof(lv), "Lv%d", i + 1);
+ int number_of_instances;
+
+ if (libconfig->setting_lookup_int(t, lv, &number_of_instances) == CONFIG_TRUE) {
+ if (number_of_instances >= 0 && number_of_instances <= MAX_SKILLUNITGROUP)
+ sk->maxcount[i] = number_of_instances;
+ else
+ ShowWarning("%s: Invalid number of instances %d specified in level %d for skill ID %d in %s! Minimum is 0, maximum is %d. Defaulting to 0...\n",
+ __func__, number_of_instances, i + 1, sk->nameid, conf->file, MAX_SKILLUNITGROUP);
+ }
+ }
+
+ return;
+ }
+
+ int number_of_instances;
+
+ if (libconfig->setting_lookup_int(conf, "SkillInstances", &number_of_instances) == CONFIG_TRUE) {
+ if (number_of_instances >= 0 && number_of_instances <= MAX_SKILLUNITGROUP)
+ skill->level_set_value(sk->maxcount, number_of_instances);
+ else
+ ShowWarning("%s: Invalid number of instances %d specified for skill ID %d in %s! Minimum is 0, maximum is %d. Defaulting to 0...\n",
+ __func__, number_of_instances, sk->nameid, conf->file, MAX_SKILLUNITGROUP);
+ }
+}
+
+/**
+ * Validates a skill's number of knock back tiles when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the number of knock back tiles should be set it.
+ *
+ **/
+static void skill_validate_knock_back_tiles(struct config_setting_t *conf, struct s_skill_db *sk)
+{
+ nullpo_retv(conf);
+ nullpo_retv(sk);
+
+ skill->level_set_value(sk->blewcount, 0);
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "KnockBackTiles");
+
+ if (t != NULL && config_setting_is_group(t)) {
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++) {
+ char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL.
+ safesnprintf(lv, sizeof(lv), "Lv%d", i + 1);
+ int knock_back_tiles;
+
+ if (libconfig->setting_lookup_int(t, lv, &knock_back_tiles) == CONFIG_TRUE) {
+ if (knock_back_tiles >= 0)
+ sk->blewcount[i] = knock_back_tiles;
+ else
+ ShowWarning("%s: Invalid number of knock back tiles %d specified in level %d for skill ID %d in %s! Must be greater than or equal to 0. Defaulting to 0...\n",
+ __func__, knock_back_tiles, i + 1, sk->nameid, conf->file);
+ }
+ }
+
+ return;
+ }
+
+ int knock_back_tiles;
+
+ if (libconfig->setting_lookup_int(conf, "KnockBackTiles", &knock_back_tiles) == CONFIG_TRUE) {
+ if (knock_back_tiles >= 0)
+ skill->level_set_value(sk->blewcount, knock_back_tiles);
+ else
+ ShowWarning("%s: Invalid number of knock back tiles %d specified for skill ID %d in %s! Must be greater than or equal to 0. Defaulting to 0...\n",
+ __func__, knock_back_tiles, sk->nameid, conf->file);
+ }
+}
+
+/**
+ * Validates a skill's cast time when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the cast time should be set it.
+ *
+ **/
+static void skill_validate_cast_time(struct config_setting_t *conf, struct s_skill_db *sk)
+{
+ nullpo_retv(conf);
+ nullpo_retv(sk);
+
+ skill->level_set_value(sk->cast, 0);
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "CastTime");
+
+ if (t != NULL && config_setting_is_group(t)) {
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++) {
+ char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL.
+ safesnprintf(lv, sizeof(lv), "Lv%d", i + 1);
+ int cast_time;
+
+ if (libconfig->setting_lookup_int(t, lv, &cast_time) == CONFIG_TRUE) {
+ if (cast_time >= 0)
+ sk->cast[i] = cast_time;
+ else
+ ShowWarning("%s: Invalid cast time %d specified in level %d for skill ID %d in %s! Must be greater than or equal to 0. Defaulting to 0...\n",
+ __func__, cast_time, i + 1, sk->nameid, conf->file);
+ }
+ }
+
+ return;
+ }
+
+ int cast_time;
+
+ if (libconfig->setting_lookup_int(conf, "CastTime", &cast_time) == CONFIG_TRUE) {
+ if (cast_time >= 0)
+ skill->level_set_value(sk->cast, cast_time);
+ else
+ ShowWarning("%s: Invalid cast time %d specified for skill ID %d in %s! Must be greater than or equal to 0. Defaulting to 0...\n",
+ __func__, cast_time, sk->nameid, conf->file);
+ }
+}
+
+/**
+ * Validates a skill's after cast act delay when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the after cast act delay should be set it.
+ *
+ **/
+static void skill_validate_act_delay(struct config_setting_t *conf, struct s_skill_db *sk)
+{
+ nullpo_retv(conf);
+ nullpo_retv(sk);
+
+ skill->level_set_value(sk->delay, 0);
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "AfterCastActDelay");
+
+ if (t != NULL && config_setting_is_group(t)) {
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++) {
+ char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL.
+ safesnprintf(lv, sizeof(lv), "Lv%d", i + 1);
+ int act_delay;
+
+ if (libconfig->setting_lookup_int(t, lv, &act_delay) == CONFIG_TRUE) {
+ if (act_delay >= 0)
+ sk->delay[i] = act_delay;
+ else
+ ShowWarning("%s: Invalid after cast act delay %d specified in level %d for skill ID %d in %s! Must be greater than or equal to 0. Defaulting to 0...\n",
+ __func__, act_delay, i + 1, sk->nameid, conf->file);
+ }
+ }
+
+ return;
+ }
+
+ int act_delay;
+
+ if (libconfig->setting_lookup_int(conf, "AfterCastActDelay", &act_delay) == CONFIG_TRUE) {
+ if (act_delay >= 0)
+ skill->level_set_value(sk->delay, act_delay);
+ else
+ ShowWarning("%s: Invalid after cast act delay %d specified for skill ID %d in %s! Must be greater than or equal to 0. Defaulting to 0...\n",
+ __func__, act_delay, sk->nameid, conf->file);
+ }
+}
+
+/**
+ * Validates a skill's after cast walk delay when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the after cast walk delay should be set it.
+ *
+ **/
+static void skill_validate_walk_delay(struct config_setting_t *conf, struct s_skill_db *sk)
+{
+ nullpo_retv(conf);
+ nullpo_retv(sk);
+
+ skill->level_set_value(sk->walkdelay, 0);
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "AfterCastWalkDelay");
+
+ if (t != NULL && config_setting_is_group(t)) {
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++) {
+ char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL.
+ safesnprintf(lv, sizeof(lv), "Lv%d", i + 1);
+ int walk_delay;
+
+ if (libconfig->setting_lookup_int(t, lv, &walk_delay) == CONFIG_TRUE) {
+ if (walk_delay >= 0)
+ sk->walkdelay[i] = walk_delay;
+ else
+ ShowWarning("%s: Invalid after cast walk delay %d specified in level %d for skill ID %d in %s! Must be greater than or equal to 0. Defaulting to 0...\n",
+ __func__, walk_delay, i + 1, sk->nameid, conf->file);
+ }
+ }
+
+ return;
+ }
+
+ int walk_delay;
+
+ if (libconfig->setting_lookup_int(conf, "AfterCastWalkDelay", &walk_delay) == CONFIG_TRUE) {
+ if (walk_delay >= 0)
+ skill->level_set_value(sk->walkdelay, walk_delay);
+ else
+ ShowWarning("%s: Invalid after cast walk delay %d specified for skill ID %d in %s! Must be greater than or equal to 0. Defaulting to 0...\n",
+ __func__, walk_delay, sk->nameid, conf->file);
+ }
+}
+
+/**
+ * Validates a skill's stay duration when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the stay duration should be set it.
+ *
+ **/
+static void skill_validate_skill_data1(struct config_setting_t *conf, struct s_skill_db *sk)
+{
+ nullpo_retv(conf);
+ nullpo_retv(sk);
+
+ skill->level_set_value(sk->upkeep_time, 0);
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "SkillData1");
+
+ if (t != NULL && config_setting_is_group(t)) {
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++) {
+ char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL.
+ safesnprintf(lv, sizeof(lv), "Lv%d", i + 1);
+ int skill_data1;
+
+ if (libconfig->setting_lookup_int(t, lv, &skill_data1) == CONFIG_TRUE) {
+ if (skill_data1 >= INFINITE_DURATION)
+ sk->upkeep_time[i] = skill_data1;
+ else
+ ShowWarning("%s: Invalid stay duration %d specified in level %d for skill ID %d in %s! Must be greater than or equal to %d. Defaulting to 0...\n",
+ __func__, skill_data1, i + 1, sk->nameid, conf->file, INFINITE_DURATION);
+ }
+ }
+
+ return;
+ }
+
+ int skill_data1;
+
+ if (libconfig->setting_lookup_int(conf, "SkillData1", &skill_data1) == CONFIG_TRUE) {
+ if (skill_data1 >= INFINITE_DURATION)
+ skill->level_set_value(sk->upkeep_time, skill_data1);
+ else
+ ShowWarning("%s: Invalid stay duration %d specified for skill ID %d in %s! Must be greater than or equal to %d. Defaulting to 0...\n",
+ __func__, skill_data1, sk->nameid, conf->file, INFINITE_DURATION);
+ }
+}
+
+/**
+ * Validates a skill's effect duration when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the effect duration should be set it.
+ *
+ **/
+static void skill_validate_skill_data2(struct config_setting_t *conf, struct s_skill_db *sk)
{
- struct config_setting_t *t = NULL, *tt = NULL;
+ nullpo_retv(conf);
+ nullpo_retv(sk);
+
+ skill->level_set_value(sk->upkeep_time2, 0);
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "SkillData2");
+ if (t != NULL && config_setting_is_group(t)) {
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++) {
+ char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL.
+ safesnprintf(lv, sizeof(lv), "Lv%d", i + 1);
+ int skill_data2;
+
+ if (libconfig->setting_lookup_int(t, lv, &skill_data2) == CONFIG_TRUE) {
+ if (skill_data2 >= INFINITE_DURATION)
+ sk->upkeep_time2[i] = skill_data2;
+ else
+ ShowWarning("%s: Invalid effect duration %d specified in level %d for skill ID %d in %s! Must be greater than or equal to %d. Defaulting to 0...\n",
+ __func__, skill_data2, i + 1, sk->nameid, conf->file, INFINITE_DURATION);
+ }
+ }
+
+ return;
+ }
+
+ int skill_data2;
+
+ if (libconfig->setting_lookup_int(conf, "SkillData2", &skill_data2) == CONFIG_TRUE) {
+ if (skill_data2 >= INFINITE_DURATION)
+ skill->level_set_value(sk->upkeep_time2, skill_data2);
+ else
+ ShowWarning("%s: Invalid effect duration %d specified for skill ID %d in %s! Must be greater than or equal to %d. Defaulting to 0...\n",
+ __func__, skill_data2, sk->nameid, conf->file, INFINITE_DURATION);
+ }
+}
+
+/**
+ * Validates a skill's cooldown when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the cooldown should be set it.
+ *
+ **/
+static void skill_validate_cooldown(struct config_setting_t *conf, struct s_skill_db *sk)
+{
+ nullpo_retv(conf);
nullpo_retv(sk);
- if ((t=libconfig->setting_get_member(conf, delay?"SkillDelayOptions":"CastTimeOptions")) && config_setting_is_group(t)) {
- int j = 0, tmpopt = 0;
- while ((tt = libconfig->setting_get_elem(t, j++)) && j < 4) {
- const char *type = config_setting_name(tt);
+
+ skill->level_set_value(sk->cooldown, 0);
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "CoolDown");
+
+ if (t != NULL && config_setting_is_group(t)) {
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++) {
+ char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL.
+ safesnprintf(lv, sizeof(lv), "Lv%d", i + 1);
+ int cooldown;
+
+ if (libconfig->setting_lookup_int(t, lv, &cooldown) == CONFIG_TRUE) {
+ if (cooldown >= 0)
+ sk->cooldown[i] = cooldown;
+ else
+ ShowWarning("%s: Invalid cooldown %d specified in level %d for skill ID %d in %s! Must be greater than or equal to 0. Defaulting to 0...\n",
+ __func__, cooldown, i + 1, sk->nameid, conf->file);
+ }
+ }
+
+ return;
+ }
+
+ int cooldown;
+
+ if (libconfig->setting_lookup_int(conf, "CoolDown", &cooldown) == CONFIG_TRUE) {
+ if (cooldown >= 0)
+ skill->level_set_value(sk->cooldown, cooldown);
+ else
+ ShowWarning("%s: Invalid cooldown %d specified for skill ID %d in %s! Must be greater than or equal to 0. Defaulting to 0...\n",
+ __func__, cooldown, sk->nameid, conf->file);
+ }
+}
+
+/**
+ * Validates a skill's fixed cast time when reading the skill DB.
+ * If RENEWAL_CAST is not defined, nothing is done.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the fixed cast time should be set it.
+ *
+ **/
+static void skill_validate_fixed_cast_time(struct config_setting_t *conf, struct s_skill_db *sk)
+{
+ nullpo_retv(conf);
+ nullpo_retv(sk);
+
+#ifdef RENEWAL_CAST
+ skill->level_set_value(sk->fixed_cast, 0);
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "FixedCastTime");
+
+ if (t != NULL && config_setting_is_group(t)) {
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++) {
+ char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL.
+ safesnprintf(lv, sizeof(lv), "Lv%d", i + 1);
+ int fixed_cast_time;
+
+ if (libconfig->setting_lookup_int(t, lv, &fixed_cast_time) == CONFIG_TRUE) {
+ if (fixed_cast_time >= INFINITE_DURATION)
+ sk->fixed_cast[i] = fixed_cast_time;
+ else
+ ShowWarning("%s: Invalid fixed cast time %d specified in level %d for skill ID %d in %s! Must be greater than or equal to %d. Defaulting to 0...\n",
+ __func__, fixed_cast_time, i + 1, sk->nameid, conf->file, INFINITE_DURATION);
+ }
+ }
+
+ return;
+ }
+
+ int fixed_cast_time;
+
+ if (libconfig->setting_lookup_int(conf, "FixedCastTime", &fixed_cast_time) == CONFIG_TRUE) {
+ if (fixed_cast_time >= INFINITE_DURATION)
+ skill->level_set_value(sk->fixed_cast, fixed_cast_time);
+ else
+ ShowWarning("%s: Invalid fixed cast time %d specified for skill ID %d in %s! Must be greater than or equal to %d. Defaulting to 0...\n",
+ __func__, fixed_cast_time, sk->nameid, conf->file, INFINITE_DURATION);
+ }
+#else
+#ifndef RENEWAL /** Check pre-RE skill DB for FixedCastTime. **/
+ if (libconfig->setting_get_member(conf, "FixedCastTime") != NULL)
+ ShowWarning("%s: Fixed cast time was specified for skill ID %d in %s without RENEWAL_CAST being defined! Skipping...\n", __func__, sk->nameid, conf->file);
+#endif /** RENEWAL **/
+#endif /** RENEWAL_CAST **/
+}
+
+/**
+ * Validates a skill's cast time or delay options when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the cast time or delay options should be set it.
+ * @param delay If true, the skill's delay options are validated, otherwise its cast time options.
+ *
+ **/
+static void skill_validate_castnodex(struct config_setting_t *conf, struct s_skill_db *sk, bool delay)
+{
+ nullpo_retv(conf);
+ nullpo_retv(sk);
+
+ skill->level_set_value(delay ? sk->delaynodex : sk->castnodex, 0);
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, delay ? "SkillDelayOptions" : "CastTimeOptions");
+
+ if (t != NULL && config_setting_is_group(t)) {
+ struct config_setting_t *tt;
+ int i = 0;
+ int options = 0;
+
+ while ((tt = libconfig->setting_get_elem(t, i++)) != NULL) {
+ const char *value = config_setting_name(tt);
bool on = libconfig->setting_get_bool_real(tt);
- if (strcmpi(type, "IgnoreDex") == 0) {
- if (on) {
- tmpopt |= 1<<0;
- } else {
- tmpopt &= ~(1<<0);
- }
- } else if (strcmpi(type, "IgnoreStatusEffect") == 0) {
- if (on) {
- tmpopt |= 1<<1;
- } else {
- tmpopt &= ~(1<<1);
- }
- } else if (strcmpi(type, "IgnoreItemBonus") == 0) {
- if (on) {
- tmpopt |= 1<<2;
- } else {
- tmpopt &= ~(1<<2);
- }
+ if (strcmpi(value, "IgnoreDex") == 0) {
+ if (on)
+ options |= 1;
+ else
+ options &= ~1;
+ } else if (strcmpi(value, "IgnoreStatusEffect") == 0) {
+ if (on)
+ options |= 2;
+ else
+ options &= ~2;
+ } else if (strcmpi(value, "IgnoreItemBonus") == 0) {
+ if (on)
+ options |= 4;
+ else
+ options &= ~4;
} else {
- skilldb_invalid_error(type, config_setting_name(t), sk->nameid);
- return;
+ const char *option_string = delay ? "skill delay" : "cast time";
+ ShowWarning("%s: Invalid %s option %s specified for skill ID %d in %s! Skipping option...\n",
+ __func__, option_string, value, sk->nameid, conf->file);
+ }
+ }
+
+ skill->level_set_value(delay ? sk->delaynodex : sk->castnodex, options);
+ }
+}
+
+/**
+ * Validates a skill's HP cost when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the HP cost should be set it.
+ *
+ **/
+static void skill_validate_hp_cost(struct config_setting_t *conf, struct s_skill_db *sk)
+{
+ nullpo_retv(conf);
+ nullpo_retv(sk);
+
+ skill->level_set_value(sk->hp, 0);
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "HPCost");
+
+ if (t != NULL && config_setting_is_group(t)) {
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++) {
+ char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL.
+ safesnprintf(lv, sizeof(lv), "Lv%d", i + 1);
+ int hp_cost;
+
+ if (libconfig->setting_lookup_int(t, lv, &hp_cost) == CONFIG_TRUE) {
+ if (hp_cost >= 0 && hp_cost <= battle_config.max_hp)
+ sk->hp[i] = hp_cost;
+ else
+ ShowWarning("%s: Invalid HP cost %d specified in level %d for skill ID %d in %s! Minimum is 0, maximum is %d. Defaulting to 0...\n",
+ __func__, hp_cost, i + 1, sk->nameid, conf->file, battle_config.max_hp);
}
+ }
+
+ return;
+ }
+
+ int hp_cost;
+
+ if (libconfig->setting_lookup_int(conf, "HPCost", &hp_cost) == CONFIG_TRUE) {
+ if (hp_cost >= 0 && hp_cost <= battle_config.max_hp)
+ skill->level_set_value(sk->hp, hp_cost);
+ else
+ ShowWarning("%s: Invalid HP cost %d specified for skill ID %d in %s! Minimum is 0, maximum is %d. Defaulting to 0...\n",
+ __func__, hp_cost, sk->nameid, conf->file, battle_config.max_hp);
+ }
+}
+
+/**
+ * Validates a skill's SP cost when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the SP cost should be set it.
+ *
+ **/
+static void skill_validate_sp_cost(struct config_setting_t *conf, struct s_skill_db *sk)
+{
+ nullpo_retv(conf);
+ nullpo_retv(sk);
+ skill->level_set_value(sk->sp, 0);
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "SPCost");
+
+ if (t != NULL && config_setting_is_group(t)) {
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++) {
+ char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL.
+ safesnprintf(lv, sizeof(lv), "Lv%d", i + 1);
+ int sp_cost;
+
+ if (libconfig->setting_lookup_int(t, lv, &sp_cost) == CONFIG_TRUE) {
+ if (sp_cost >= 0 && sp_cost <= battle_config.max_sp)
+ sk->sp[i] = sp_cost;
+ else
+ ShowWarning("%s: Invalid SP cost %d specified in level %d for skill ID %d in %s! Minimum is 0, maximum is %d. Defaulting to 0...\n",
+ __func__, sp_cost, i + 1, sk->nameid, conf->file, battle_config.max_sp);
+ }
}
- skill->level_set_value(delay?sk->delaynodex:sk->castnodex, tmpopt);
+
+ return;
+ }
+
+ int sp_cost;
+
+ if (libconfig->setting_lookup_int(conf, "SPCost", &sp_cost) == CONFIG_TRUE) {
+ if (sp_cost >= 0 && sp_cost <= battle_config.max_sp)
+ skill->level_set_value(sk->sp, sp_cost);
+ else
+ ShowWarning("%s: Invalid SP cost %d specified for skill ID %d in %s! Minimum is 0, maximum is %d. Defaulting to 0...\n",
+ __func__, sp_cost, sk->nameid, conf->file, battle_config.max_sp);
}
}
/**
- * Validates the "WeaponTypes" flag
- * when parsing skill_db.conf
- * @param *type const char, weapon type flag
- * @param on boolean, switch for the flag
- * @param *sk struct, pointer to s_skill_db
- * @return void
- */
+ * Validates a skill's HP rate cost when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the HP rate cost should be set it.
+ *
+ **/
+static void skill_validate_hp_rate_cost(struct config_setting_t *conf, struct s_skill_db *sk)
+{
+ nullpo_retv(conf);
+ nullpo_retv(sk);
+
+ skill->level_set_value(sk->hp_rate, 0);
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "HPRateCost");
+
+ if (t != NULL && config_setting_is_group(t)) {
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++) {
+ char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL.
+ safesnprintf(lv, sizeof(lv), "Lv%d", i + 1);
+ int hp_rate_cost;
+
+ if (libconfig->setting_lookup_int(t, lv, &hp_rate_cost) == CONFIG_TRUE) {
+ if (hp_rate_cost >= -100 && hp_rate_cost <= 100)
+ sk->hp_rate[i] = hp_rate_cost;
+ else
+ ShowWarning("%s: Invalid HP rate cost %d specified in level %d for skill ID %d in %s! Minimum is -100, maximum is 100. Defaulting to 0...\n",
+ __func__, hp_rate_cost, i + 1, sk->nameid, conf->file);
+ }
+ }
+
+ return;
+ }
+
+ int hp_rate_cost;
+
+ if (libconfig->setting_lookup_int(conf, "HPRateCost", &hp_rate_cost) == CONFIG_TRUE) {
+ if (hp_rate_cost >= -100 && hp_rate_cost <= 100)
+ skill->level_set_value(sk->hp_rate, hp_rate_cost);
+ else
+ ShowWarning("%s: Invalid HP rate cost %d specified for skill ID %d in %s! Minimum is -100, maximum is 100. Defaulting to 0...\n",
+ __func__, hp_rate_cost, sk->nameid, conf->file);
+ }
+}
+
+/**
+ * Validates a skill's SP rate cost when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the SP rate cost should be set it.
+ *
+ **/
+static void skill_validate_sp_rate_cost(struct config_setting_t *conf, struct s_skill_db *sk)
+{
+ nullpo_retv(conf);
+ nullpo_retv(sk);
+
+ skill->level_set_value(sk->sp_rate, 0);
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "SPRateCost");
+
+ if (t != NULL && config_setting_is_group(t)) {
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++) {
+ char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL.
+ safesnprintf(lv, sizeof(lv), "Lv%d", i + 1);
+ int sp_rate_cost;
+
+ if (libconfig->setting_lookup_int(t, lv, &sp_rate_cost) == CONFIG_TRUE) {
+ if (sp_rate_cost >= -100 && sp_rate_cost <= 100)
+ sk->sp_rate[i] = sp_rate_cost;
+ else
+ ShowWarning("%s: Invalid SP rate cost %d specified in level %d for skill ID %d in %s! Minimum is -100, maximum is 100. Defaulting to 0...\n",
+ __func__, sp_rate_cost, i + 1, sk->nameid, conf->file);
+ }
+ }
+
+ return;
+ }
+
+ int sp_rate_cost;
+
+ if (libconfig->setting_lookup_int(conf, "SPRateCost", &sp_rate_cost) == CONFIG_TRUE) {
+ if (sp_rate_cost >= -100 && sp_rate_cost <= 100)
+ skill->level_set_value(sk->sp_rate, sp_rate_cost);
+ else
+ ShowWarning("%s: Invalid SP rate cost %d specified for skill ID %d in %s! Minimum is -100, maximum is 100. Defaulting to 0...\n",
+ __func__, sp_rate_cost, sk->nameid, conf->file);
+ }
+}
+
+/**
+ * Validates a skill's maximum HP trigger when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the maximum HP trigger should be set it.
+ *
+ **/
+static void skill_validate_max_hp_trigger(struct config_setting_t *conf, struct s_skill_db *sk)
+{
+ nullpo_retv(conf);
+ nullpo_retv(sk);
+
+ skill->level_set_value(sk->mhp, 0);
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "MaxHPTrigger");
+
+ if (t != NULL && config_setting_is_group(t)) {
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++) {
+ char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL.
+ safesnprintf(lv, sizeof(lv), "Lv%d", i + 1);
+ int max_hp_trigger;
+
+ if (libconfig->setting_lookup_int(t, lv, &max_hp_trigger) == CONFIG_TRUE) {
+ if (max_hp_trigger >= 0 && max_hp_trigger <= 100)
+ sk->mhp[i] = max_hp_trigger;
+ else
+ ShowWarning("%s: Invalid maximum HP trigger %d specified in level %d for skill ID %d in %s! Minimum is 0, maximum is 100. Defaulting to 0...\n",
+ __func__, max_hp_trigger, i + 1, sk->nameid, conf->file);
+ }
+ }
+
+ return;
+ }
+
+ int max_hp_trigger;
+
+ if (libconfig->setting_lookup_int(conf, "MaxHPTrigger", &max_hp_trigger) == CONFIG_TRUE) {
+ if (max_hp_trigger >= 0 && max_hp_trigger <= 100)
+ skill->level_set_value(sk->mhp, max_hp_trigger);
+ else
+ ShowWarning("%s: Invalid maximum HP trigger %d specified for skill ID %d in %s! Minimum is 0, maximum is 100. Defaulting to 0...\n",
+ __func__, max_hp_trigger, sk->nameid, conf->file);
+ }
+}
+
+/**
+ * Validates a skill's maximum SP trigger when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the maximum SP trigger should be set it.
+ *
+ **/
+static void skill_validate_max_sp_trigger(struct config_setting_t *conf, struct s_skill_db *sk)
+{
+ nullpo_retv(conf);
+ nullpo_retv(sk);
+
+ skill->level_set_value(sk->msp, 0);
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "MaxSPTrigger");
+
+ if (t != NULL && config_setting_is_group(t)) {
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++) {
+ char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL.
+ safesnprintf(lv, sizeof(lv), "Lv%d", i + 1);
+ int max_sp_trigger;
+
+ if (libconfig->setting_lookup_int(t, lv, &max_sp_trigger) == CONFIG_TRUE) {
+ if (max_sp_trigger >= 0 && max_sp_trigger <= 100)
+ sk->msp[i] = max_sp_trigger;
+ else
+ ShowWarning("%s: Invalid maximum SP trigger %d specified in level %d for skill ID %d in %s! Minimum is 0, maximum is 100. Defaulting to 0...\n",
+ __func__, max_sp_trigger, i + 1, sk->nameid, conf->file);
+ }
+ }
+
+ return;
+ }
+
+ int max_sp_trigger;
+
+ if (libconfig->setting_lookup_int(conf, "MaxSPTrigger", &max_sp_trigger) == CONFIG_TRUE) {
+ if (max_sp_trigger >= 0 && max_sp_trigger <= 100)
+ skill->level_set_value(sk->msp, max_sp_trigger);
+ else
+ ShowWarning("%s: Invalid maximum SP trigger %d specified for skill ID %d in %s! Minimum is 0, maximum is 100. Defaulting to 0...\n",
+ __func__, max_sp_trigger, sk->nameid, conf->file);
+ }
+}
+
+/**
+ * Validates a skill's Zeny cost when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the Zeny cost should be set it.
+ *
+ **/
+static void skill_validate_zeny_cost(struct config_setting_t *conf, struct s_skill_db *sk)
+{
+ nullpo_retv(conf);
+ nullpo_retv(sk);
+
+ skill->level_set_value(sk->zeny, 0);
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "ZenyCost");
+
+ if (t != NULL && config_setting_is_group(t)) {
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++) {
+ char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL.
+ safesnprintf(lv, sizeof(lv), "Lv%d", i + 1);
+ int zeny_cost;
+
+ if (libconfig->setting_lookup_int(t, lv, &zeny_cost) == CONFIG_TRUE) {
+ if (zeny_cost >= 0 && zeny_cost <= MAX_ZENY)
+ sk->zeny[i] = zeny_cost;
+ else
+ ShowWarning("%s: Invalid Zeny cost %d specified in level %d for skill ID %d in %s! Minimum is 0, maximum is %d. Defaulting to 0...\n",
+ __func__, zeny_cost, i + 1, sk->nameid, conf->file, MAX_ZENY);
+ }
+ }
+
+ return;
+ }
+
+ int zeny_cost;
+
+ if (libconfig->setting_lookup_int(conf, "ZenyCost", &zeny_cost) == CONFIG_TRUE) {
+ if (zeny_cost >= 0 && zeny_cost <= MAX_ZENY)
+ skill->level_set_value(sk->zeny, zeny_cost);
+ else
+ ShowWarning("%s: Invalid Zeny cost %d specified for skill ID %d in %s! Minimum is 0, maximum is %d. Defaulting to 0...\n",
+ __func__, zeny_cost, sk->nameid, conf->file, MAX_ZENY);
+ }
+}
+
+/**
+ * Validates a single weapon type when reading the skill DB.
+ *
+ * @param type The weapon type to validate.
+ * @param on Whether the weapon type is required for the skill.
+ * @param sk The s_skill_db struct where the weapon type should be set it.
+ * @return 0 if the passed weapon type is valid, otherwise 1.
+ *
+ **/
static int skill_validate_weapontype_sub(const char *type, bool on, struct s_skill_db *sk)
{
- nullpo_ret(sk);
+ nullpo_retr(1, type);
+ nullpo_retr(1, sk);
+
if (strcmpi(type, "NoWeapon") == 0) {
- if (on) {
- sk->weapon |= 1<<W_FIST;
- } else {
- sk->weapon &= ~(1<<W_FIST);
- }
+ if (on)
+ sk->weapon |= (1 << W_FIST);
+ else
+ sk->weapon &= ~(1 << W_FIST);
} else if (strcmpi(type, "Daggers") == 0) {
- if (on) {
- sk->weapon |= 1<<W_DAGGER;
- } else {
- sk->weapon &= ~(1<<W_DAGGER);
- }
+ if (on)
+ sk->weapon |= (1 << W_DAGGER);
+ else
+ sk->weapon &= ~(1 << W_DAGGER);
} else if (strcmpi(type, "1HSwords") == 0) {
- if (on) {
- sk->weapon |= 1<<W_1HSWORD;
- } else {
- sk->weapon &= ~(1<<W_1HSWORD);
- }
+ if (on)
+ sk->weapon |= (1 << W_1HSWORD);
+ else
+ sk->weapon &= ~(1 << W_1HSWORD);
} else if (strcmpi(type, "2HSwords") == 0) {
- if (on) {
- sk->weapon |= 1<<W_2HSWORD;
- } else {
- sk->weapon &= ~(1<<W_2HSWORD);
- }
+ if (on)
+ sk->weapon |= (1 << W_2HSWORD);
+ else
+ sk->weapon &= ~(1 << W_2HSWORD);
} else if (strcmpi(type, "1HSpears") == 0) {
- if (on) {
- sk->weapon |= 1<<W_1HSPEAR;
- } else {
- sk->weapon &= ~(1<<W_1HSPEAR);
- }
+ if (on)
+ sk->weapon |= (1 << W_1HSPEAR);
+ else
+ sk->weapon &= ~(1 << W_1HSPEAR);
} else if (strcmpi(type, "2HSpears") == 0) {
- if (on) {
- sk->weapon |= 1<<W_2HSPEAR;
- } else {
- sk->weapon &= ~(1<<W_2HSPEAR);
- }
+ if (on)
+ sk->weapon |= (1 << W_2HSPEAR);
+ else
+ sk->weapon &= ~(1 << W_2HSPEAR);
} else if (strcmpi(type, "1HAxes") == 0) {
- if (on) {
- sk->weapon |= 1<<W_1HAXE;
- } else {
- sk->weapon &= ~(1<<W_1HAXE);
- }
+ if (on)
+ sk->weapon |= (1 << W_1HAXE);
+ else
+ sk->weapon &= ~(1 << W_1HAXE);
} else if (strcmpi(type, "2HAxes") == 0) {
- if (on) {
- sk->weapon |= 1<<W_2HAXE;
- } else {
- sk->weapon &= ~(1<<W_2HAXE);
- }
+ if (on)
+ sk->weapon |= (1 << W_2HAXE);
+ else
+ sk->weapon &= ~(1 << W_2HAXE);
} else if (strcmpi(type, "Maces") == 0) {
- if (on) {
- sk->weapon |= 1<<W_MACE;
- } else {
- sk->weapon &= ~(1<<W_MACE);
- }
+ if (on)
+ sk->weapon |= (1 << W_MACE);
+ else
+ sk->weapon &= ~(1 << W_MACE);
} else if (strcmpi(type, "2HMaces") == 0) {
- if (on) {
- sk->weapon |= 1<<W_2HMACE;
- } else {
- sk->weapon &= ~(1<<W_2HMACE);
- }
+ if (on)
+ sk->weapon |= (1 << W_2HMACE);
+ else
+ sk->weapon &= ~(1 << W_2HMACE);
} else if (strcmpi(type, "Staves") == 0) {
- if (on) {
- sk->weapon |= 1<<W_STAFF;
- } else {
- sk->weapon &= ~(1<<W_STAFF);
- }
+ if (on)
+ sk->weapon |= (1 << W_STAFF);
+ else
+ sk->weapon &= ~(1 << W_STAFF);
} else if (strcmpi(type, "Bows") == 0) {
- if (on) {
- sk->weapon |= 1<<W_BOW;
- } else {
- sk->weapon &= ~(1<<W_BOW);
- }
+ if (on)
+ sk->weapon |= (1 << W_BOW);
+ else
+ sk->weapon &= ~(1 << W_BOW);
} else if (strcmpi(type, "Knuckles") == 0) {
- if (on) {
- sk->weapon |= 1<<W_KNUCKLE;
- } else {
- sk->weapon &= ~(1<<W_KNUCKLE);
- }
+ if (on)
+ sk->weapon |= (1 << W_KNUCKLE);
+ else
+ sk->weapon &= ~(1 << W_KNUCKLE);
} else if (strcmpi(type, "Instruments") == 0) {
- if (on) {
- sk->weapon |= 1<<W_MUSICAL;
- } else {
- sk->weapon &= ~(1<<W_MUSICAL);
- }
+ if (on)
+ sk->weapon |= (1 << W_MUSICAL);
+ else
+ sk->weapon &= ~(1 << W_MUSICAL);
} else if (strcmpi(type, "Whips") == 0) {
- if (on) {
- sk->weapon |= 1<<W_WHIP;
- } else {
- sk->weapon &= ~(1<<W_WHIP);
- }
+ if (on)
+ sk->weapon |= (1 << W_WHIP);
+ else
+ sk->weapon &= ~(1 << W_WHIP);
} else if (strcmpi(type, "Books") == 0) {
- if (on) {
- sk->weapon |= 1<<W_BOOK;
- } else {
- sk->weapon &= ~(1<<W_BOOK);
- }
+ if (on)
+ sk->weapon |= (1 << W_BOOK);
+ else
+ sk->weapon &= ~(1 << W_BOOK);
} else if (strcmpi(type, "Katars") == 0) {
- if (on) {
- sk->weapon |= 1<<W_KATAR;
- } else {
- sk->weapon &= ~(1<<W_KATAR);
- }
+ if (on)
+ sk->weapon |= (1 << W_KATAR);
+ else
+ sk->weapon &= ~(1 << W_KATAR);
} else if (strcmpi(type, "Revolvers") == 0) {
- if (on) {
- sk->weapon |= 1<<W_REVOLVER;
- } else {
- sk->weapon &= ~(1<<W_REVOLVER);
- }
+ if (on)
+ sk->weapon |= (1 << W_REVOLVER);
+ else
+ sk->weapon &= ~(1 << W_REVOLVER);
} else if (strcmpi(type, "Rifles") == 0) {
- if (on) {
- sk->weapon |= 1<<W_RIFLE;
- } else {
- sk->weapon &= ~(1<<W_RIFLE);
- }
+ if (on)
+ sk->weapon |= (1 << W_RIFLE);
+ else
+ sk->weapon &= ~(1 << W_RIFLE);
} else if (strcmpi(type, "GatlingGuns") == 0) {
- if (on) {
- sk->weapon |= 1<<W_GATLING;
- } else {
- sk->weapon &= ~(1<<W_GATLING);
- }
+ if (on)
+ sk->weapon |= (1 << W_GATLING);
+ else
+ sk->weapon &= ~(1 << W_GATLING);
} else if (strcmpi(type, "Shotguns") == 0) {
- if (on) {
- sk->weapon |= 1<<W_SHOTGUN;
- } else {
- sk->weapon &= ~(1<<W_SHOTGUN);
- }
+ if (on)
+ sk->weapon |= (1 << W_SHOTGUN);
+ else
+ sk->weapon &= ~(1 << W_SHOTGUN);
} else if (strcmpi(type, "GrenadeLaunchers") == 0) {
- if (on) {
- sk->weapon |= 1<<W_GRENADE;
- } else {
- sk->weapon &= ~(1<<W_GRENADE);
- }
+ if (on)
+ sk->weapon |= (1 << W_GRENADE);
+ else
+ sk->weapon &= ~(1 << W_GRENADE);
} else if (strcmpi(type, "FuumaShurikens") == 0) {
- if (on) {
- sk->weapon |= 1<<W_HUUMA;
- } else {
- sk->weapon &= ~(1<<W_HUUMA);
- }
+ if (on)
+ sk->weapon |= (1 << W_HUUMA);
+ else
+ sk->weapon &= ~(1 << W_HUUMA);
} else if (strcmpi(type, "2HStaves") == 0) {
- if (on) {
- sk->weapon |= 1<<W_2HSTAFF;
- } else {
- sk->weapon &= ~(1<<W_2HSTAFF);
- }
- }
- /* MAX_SINGLE_WEAPON_TYPE excluded */
- else if (strcmpi(type, "DWDaggers") == 0) {
- if (on) {
- sk->weapon |= 1<<W_DOUBLE_DD;
- } else {
- sk->weapon &= ~(1<<W_DOUBLE_DD);
- }
+ if (on)
+ sk->weapon |= (1 << W_2HSTAFF);
+ else
+ sk->weapon &= ~(1 << W_2HSTAFF);
+ } else if (strcmpi(type, "DWDaggers") == 0) {
+ if (on)
+ sk->weapon |= (1 << W_DOUBLE_DD);
+ else
+ sk->weapon &= ~(1 << W_DOUBLE_DD);
} else if (strcmpi(type, "DWSwords") == 0) {
- if (on) {
- sk->weapon |= 1<<W_DOUBLE_SS;
- } else {
- sk->weapon &= ~(1<<W_DOUBLE_SS);
- }
+ if (on)
+ sk->weapon |= (1 << W_DOUBLE_SS);
+ else
+ sk->weapon &= ~(1 << W_DOUBLE_SS);
} else if (strcmpi(type, "DWAxes") == 0) {
- if (on) {
- sk->weapon |= 1<<W_DOUBLE_AA;
- } else {
- sk->weapon &= ~(1<<W_DOUBLE_AA);
- }
+ if (on)
+ sk->weapon |= (1 << W_DOUBLE_AA);
+ else
+ sk->weapon &= ~(1 << W_DOUBLE_AA);
} else if (strcmpi(type, "DWDaggerSword") == 0) {
- if (on) {
- sk->weapon |= 1<<W_DOUBLE_DS;
- } else {
- sk->weapon &= ~(1<<W_DOUBLE_DS);
- }
+ if (on)
+ sk->weapon |= (1 << W_DOUBLE_DS);
+ else
+ sk->weapon &= ~(1 << W_DOUBLE_DS);
} else if (strcmpi(type, "DWDaggerAxe") == 0) {
- if (on) {
- sk->weapon |= 1<<W_DOUBLE_DA;
- } else {
- sk->weapon &= ~(1<<W_DOUBLE_DA);
- }
+ if (on)
+ sk->weapon |= (1 << W_DOUBLE_DA);
+ else
+ sk->weapon &= ~(1 << W_DOUBLE_DA);
} else if (strcmpi(type, "DWSwordAxe") == 0) {
- if (on) {
- sk->weapon |= 1<<W_DOUBLE_SA;
- } else {
- sk->weapon &= ~(1<<W_DOUBLE_SA);
- }
+ if (on)
+ sk->weapon |= (1 << W_DOUBLE_SA);
+ else
+ sk->weapon &= ~(1 << W_DOUBLE_SA);
} else if (strcmpi(type, "All") == 0) {
sk->weapon = 0;
} else {
- ShowError("Item %d. Unknown weapon type %s\n", sk->nameid, type);
- return 1; // invalid type
+ return 1;
}
return 0;
}
/**
- * Validates "WeaponTypes"
- * when parsing skill_db.conf
- * @param conf struct, pointer to the skill configuration
- * @param sk struct, struct, pointer to s_skill_db
- * @return (void)
- */
+ * Validates a skill's required weapon types when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the required weapon types should be set it.
+ *
+ **/
static void skill_validate_weapontype(struct config_setting_t *conf, struct s_skill_db *sk)
{
- struct config_setting_t *tt = NULL;
- const char *type = NULL;
-
+ nullpo_retv(conf);
nullpo_retv(sk);
- if ((tt = libconfig->setting_get_member(conf, "WeaponTypes")) && config_setting_is_group(tt)) {
- int j = 0;
- struct config_setting_t *wpt = NULL;
- while ((wpt = libconfig->setting_get_elem(tt, j++)) != NULL) {
- if (skill->validate_weapontype_sub(config_setting_name(wpt), libconfig->setting_get_bool_real(wpt), sk))
- skilldb_invalid_error(config_setting_name(wpt), config_setting_name(tt), sk->nameid);
+
+ sk->weapon = 0;
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "WeaponTypes");
+
+ if (t != NULL && config_setting_is_group(t)) {
+ struct config_setting_t *tt;
+ int i = 0;
+
+ while ((tt = libconfig->setting_get_elem(t, i++)) != NULL) {
+ bool on = libconfig->setting_get_bool_real(tt);
+
+ if (skill->validate_weapontype_sub(config_setting_name(tt), on, sk) != 0)
+ ShowWarning("%s: Invalid required weapon type %s specified for skill ID %d in %s! Skipping type...\n",
+ __func__, config_setting_name(tt), sk->nameid, conf->file);
}
- } else if (libconfig->setting_lookup_string(conf, "WeaponTypes", &type)) {
- if (skill->validate_weapontype_sub(type, true, sk))
- skilldb_invalid_error(type, "WeaponTypes", sk->nameid);
+
+ return;
+ }
+
+ const char *weapon_type;
+
+ if (libconfig->setting_lookup_string(conf, "WeaponTypes", &weapon_type) == CONFIG_TRUE) {
+ if (skill->validate_weapontype_sub(weapon_type, true, sk) != 0)
+ ShowWarning("%s: Invalid required weapon type %s specified for skill ID %d in %s! Defaulting to All...\n",
+ __func__, weapon_type, sk->nameid, conf->file);
}
}
/**
- * Validates the "AmmoTypes" flag
- * when parsing skill_db.conf
- * @param type string, ammo type flag
- * @param on boolean, switch for the flag
- * @param sk struct, pointer to s_skill_db
- * @return void
- */
+ * Validates a single ammunition type when reading the skill DB.
+ *
+ * @param type The ammunition type to validate.
+ * @param on Whether the ammunition type is required for the skill.
+ * @param sk The s_skill_db struct where the ammunition type should be set it.
+ * @return 0 if the passed ammunition type is valid, otherwise 1.
+ *
+ **/
static int skill_validate_ammotype_sub(const char *type, bool on, struct s_skill_db *sk)
{
- nullpo_ret(sk);
+ nullpo_retr(1, type);
+ nullpo_retr(1, sk);
+
if (strcmpi(type, "A_ARROW") == 0) {
- if (on) {
- sk->ammo |= 1<<A_ARROW;
- } else {
- sk->ammo &= ~(1<<A_ARROW);
- }
+ if (on)
+ sk->ammo |= (1 << A_ARROW);
+ else
+ sk->ammo &= ~(1 << A_ARROW);
} else if (strcmpi(type, "A_DAGGER") == 0) {
- if (on) {
- sk->ammo |= 1<<A_DAGGER;
- } else {
- sk->ammo &= ~(1<<A_DAGGER);
- }
+ if (on)
+ sk->ammo |= (1 << A_DAGGER);
+ else
+ sk->ammo &= ~(1 << A_DAGGER);
} else if (strcmpi(type, "A_BULLET") == 0) {
- if (on) {
- sk->ammo |= 1<<A_BULLET;
- } else {
- sk->ammo &= ~(1<<A_BULLET);
- }
+ if (on)
+ sk->ammo |= (1 << A_BULLET);
+ else
+ sk->ammo &= ~(1 << A_BULLET);
} else if (strcmpi(type, "A_SHELL") == 0) {
- if (on) {
- sk->ammo |= 1<<A_SHELL;
- } else {
- sk->ammo &= ~(1<<A_SHELL);
- }
+ if (on)
+ sk->ammo |= (1 << A_SHELL);
+ else
+ sk->ammo &= ~(1 << A_SHELL);
} else if (strcmpi(type, "A_GRENADE") == 0) {
- if (on) {
- sk->ammo |= 1<<A_GRENADE;
- } else {
- sk->ammo &= ~(1<<A_GRENADE);
- }
+ if (on)
+ sk->ammo |= (1 << A_GRENADE);
+ else
+ sk->ammo &= ~(1 << A_GRENADE);
} else if (strcmpi(type, "A_SHURIKEN") == 0) {
- if (on) {
- sk->ammo |= 1<<A_SHURIKEN;
- } else {
- sk->ammo &= ~(1<<A_SHURIKEN);
- }
+ if (on)
+ sk->ammo |= (1 << A_SHURIKEN);
+ else
+ sk->ammo &= ~(1 << A_SHURIKEN);
} else if (strcmpi(type, "A_KUNAI") == 0) {
- if (on) {
- sk->ammo |= 1<<A_KUNAI;
- } else {
- sk->ammo &= ~(1<<A_KUNAI);
- }
+ if (on)
+ sk->ammo |= (1 << A_KUNAI);
+ else
+ sk->ammo &= ~(1 << A_KUNAI);
} else if (strcmpi(type, "A_CANNONBALL") == 0) {
- if (on) {
- sk->ammo |= 1<<A_CANNONBALL;
- } else {
- sk->ammo &= ~(1<<A_CANNONBALL);
- }
+ if (on)
+ sk->ammo |= (1 << A_CANNONBALL);
+ else
+ sk->ammo &= ~(1 << A_CANNONBALL);
} else if (strcmpi(type, "A_THROWWEAPON") == 0) {
- if (on) {
- sk->ammo |= 1<<A_THROWWEAPON;
- } else {
- sk->ammo &= ~(1<<A_THROWWEAPON);
- }
+ if (on)
+ sk->ammo |= (1 << A_THROWWEAPON);
+ else
+ sk->ammo &= ~(1 << A_THROWWEAPON);
} else if (strcmpi(type, "All") == 0) {
- if (on) {
+ if (on)
sk->ammo = 0xFFFFFFFF;
- } else {
+ else
sk->ammo = 0;
- }
} else {
- return 1; // Invalid Entry
+ return 1;
}
return 0;
}
/**
- * Validates the "AmmoTypes" flag
- * when parsing skill_db.conf
- * @param conf pointer to the skill configuration
- * @param sk struct, pointer to s_skill_db
- * @return void
- */
+ * Validates a skill's required ammunition types when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the required ammunition types should be set it.
+ *
+ **/
static void skill_validate_ammotype(struct config_setting_t *conf, struct s_skill_db *sk)
{
- struct config_setting_t *tt = NULL;
- const char *tstr = NULL;
+ nullpo_retv(conf);
+ nullpo_retv(sk);
+
+ sk->ammo = 0;
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "AmmoTypes");
+
+ if (t != NULL && config_setting_is_group(t)) {
+ struct config_setting_t *tt;
+ int i = 0;
+
+ while ((tt = libconfig->setting_get_elem(t, i++)) != NULL) {
+ bool on = libconfig->setting_get_bool_real(tt);
+ if (skill->validate_ammotype_sub(config_setting_name(tt), on, sk) != 0)
+ ShowWarning("%s: Invalid required ammunition type %s specified for skill ID %d in %s! Skipping type...\n",
+ __func__, config_setting_name(tt), sk->nameid, conf->file);
+ }
+ }
+
+ const char *ammo_type;
+
+ if (libconfig->setting_lookup_string(conf, "AmmoTypes", &ammo_type) == CONFIG_TRUE) {
+ if (skill->validate_ammotype_sub(ammo_type, true, sk) != 0)
+ ShowWarning("%s: Invalid required ammunition type %s specified for skill ID %d in %s! Defaulting to None...\n",
+ __func__, ammo_type, sk->nameid, conf->file);
+ }
+}
+
+/**
+ * Validates a skill's required ammunition amount when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the required ammunition amount should be set it.
+ *
+ **/
+static void skill_validate_ammo_amount(struct config_setting_t *conf, struct s_skill_db *sk)
+{
+ nullpo_retv(conf);
nullpo_retv(sk);
- if ((tt = libconfig->setting_get_member(conf, "AmmoTypes")) && config_setting_is_group(tt)) {
- int j = 0;
- struct config_setting_t *amt = { 0 };
- while ((amt = libconfig->setting_get_elem(tt, j++))) {
- if (skill->validate_ammotype_sub(config_setting_name(amt), libconfig->setting_get_bool_real(amt), sk))
- skilldb_invalid_error(config_setting_name(amt), config_setting_name(tt), sk->nameid);
+
+ skill->level_set_value(sk->ammo_qty, 0);
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "AmmoAmount");
+
+ if (t != NULL && config_setting_is_group(t)) {
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++) {
+ char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL.
+ safesnprintf(lv, sizeof(lv), "Lv%d", i + 1);
+ int ammo_amount;
+
+ if (libconfig->setting_lookup_int(t, lv, &ammo_amount) == CONFIG_TRUE) {
+ if (ammo_amount >= 0 && ammo_amount <= MAX_AMOUNT)
+ sk->ammo_qty[i] = ammo_amount;
+ else
+ ShowWarning("%s: Invalid required ammunition amount %d specified in level %d for skill ID %d in %s! Minimum is 0, maximum is %d. Defaulting to 0...\n",
+ __func__, ammo_amount, i + 1, sk->nameid, conf->file, MAX_AMOUNT);
+ }
}
- } else if( libconfig->setting_lookup_string(conf, "AmmoTypes", &tstr)) {
- if (skill->validate_ammotype_sub(tstr, true, sk))
- skilldb_invalid_error(tstr, "AmmoTypes", sk->nameid);
+
+ return;
+ }
+
+ int ammo_amount;
+
+ if (libconfig->setting_lookup_int(conf, "AmmoAmount", &ammo_amount) == CONFIG_TRUE) {
+ if (ammo_amount >= 0 && ammo_amount <= MAX_AMOUNT)
+ skill->level_set_value(sk->ammo_qty, ammo_amount);
+ else
+ ShowWarning("%s: Invalid required ammunition amount %d specified for skill ID %d in %s! Minimum is 0, maximum is %d. Defaulting to 0...\n",
+ __func__, ammo_amount, sk->nameid, conf->file, MAX_AMOUNT);
}
}
/**
- * Validates the "State" flag
- * when parsing skill_db.conf
- * @param conf struct, pointer to the skill configuration
- * @param sk struct, pointer to s_skill_db
- * @return void
- */
+ * Validates a single required state when reading the skill DB.
+ *
+ * @param state The required state to validate.
+ * @return A number greater than or equal to 0 if the passed required state is valid, otherwise -1.
+ *
+ **/
+static int skill_validate_state_sub(const char *state)
+{
+ nullpo_retr(-1, state);
+
+ int ret_val = ST_NONE;
+
+ if (strcmpi(state, "Hiding") == 0)
+ ret_val = ST_HIDING;
+ else if (strcmpi(state, "Cloaking") == 0)
+ ret_val = ST_CLOAKING;
+ else if (strcmpi(state, "Hidden") == 0)
+ ret_val = ST_HIDDEN;
+ else if (strcmpi(state, "Riding") == 0)
+ ret_val = ST_RIDING;
+ else if (strcmpi(state, "Falcon") == 0)
+ ret_val = ST_FALCON;
+ else if (strcmpi(state, "Cart") == 0)
+ ret_val = ST_CART;
+ else if (strcmpi(state, "Shield") == 0)
+ ret_val = ST_SHIELD;
+ else if (strcmpi(state, "Sight") == 0)
+ ret_val = ST_SIGHT;
+ else if (strcmpi(state, "ExplosionSpirits") == 0)
+ ret_val = ST_EXPLOSIONSPIRITS;
+ else if (strcmpi(state, "CartBoost") == 0)
+ ret_val = ST_CARTBOOST;
+ else if (strcmpi(state, "NotOverWeight") == 0)
+ ret_val = ST_RECOV_WEIGHT_RATE;
+ else if (strcmpi(state, "Moveable") == 0)
+ ret_val = ST_MOVE_ENABLE;
+ else if (strcmpi(state, "InWater") == 0)
+ ret_val = ST_WATER;
+ else if (strcmpi(state, "Dragon") == 0)
+ ret_val = ST_RIDINGDRAGON;
+ else if (strcmpi(state, "Warg") == 0)
+ ret_val = ST_WUG;
+ else if (strcmpi(state, "RidingWarg") == 0)
+ ret_val = ST_RIDINGWUG;
+ else if (strcmpi(state, "MadoGear") == 0)
+ ret_val = ST_MADO;
+ else if (strcmpi(state, "ElementalSpirit") == 0)
+ ret_val = ST_ELEMENTALSPIRIT;
+ else if (strcmpi(state, "PoisonWeapon") == 0)
+ ret_val = ST_POISONINGWEAPON;
+ else if (strcmpi(state, "RollingCutter") == 0)
+ ret_val = ST_ROLLINGCUTTER;
+ else if (strcmpi(state, "MH_Fighting") == 0)
+ ret_val = ST_MH_FIGHTING;
+ else if (strcmpi(state, "MH_Grappling") == 0)
+ ret_val = ST_MH_GRAPPLING;
+ else if (strcmpi(state, "Peco") == 0)
+ ret_val = ST_PECO;
+ else if (strcmpi(state, "None") != 0)
+ ret_val = -1;
+
+ return ret_val;
+}
+
+/**
+ * Validates a skill's required states when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the required states should be set it.
+ *
+ **/
static void skill_validate_state(struct config_setting_t *conf, struct s_skill_db *sk)
{
- const char *type = NULL;
+ nullpo_retv(conf);
+ nullpo_retv(sk);
+
+ skill->level_set_value(sk->state, ST_NONE);
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "State");
+
+ if (t != NULL && config_setting_is_group(t)) {
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++) {
+ char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL.
+ safesnprintf(lv, sizeof(lv), "Lv%d", i + 1);
+ const char *state;
+ if (libconfig->setting_lookup_string(t, lv, &state) == CONFIG_TRUE) {
+ int sta = skill->validate_state_sub(state);
+
+ if (sta > ST_NONE)
+ sk->state[i] = sta;
+ else if (sta == -1)
+ ShowWarning("%s: Invalid required state %s specified in level %d for skill ID %d in %s! Defaulting to None...\n",
+ __func__, state, i + 1, sk->nameid, conf->file);
+ }
+ }
+
+ return;
+ }
+
+ const char *state;
+
+ if (libconfig->setting_lookup_string(conf, "State", &state) == CONFIG_TRUE) {
+ int sta = skill->validate_state_sub(state);
+
+ if (sta > ST_NONE)
+ skill->level_set_value(sk->state, sta);
+ else if (sta == -1)
+ ShowWarning("%s: Invalid required state %s specified for skill ID %d in %s! Defaulting to None...\n",
+ __func__, state, sk->nameid, conf->file);
+ }
+}
+
+/**
+ * Validates a skill's Spirit Sphere cost when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the Spirit Sphere cost should be set it.
+ *
+ **/
+static void skill_validate_spirit_sphere_cost(struct config_setting_t *conf, struct s_skill_db *sk)
+{
+ nullpo_retv(conf);
nullpo_retv(sk);
- if (libconfig->setting_lookup_string(conf, "State", &type) && strcmpi(type,"None") != ST_NONE) {
- if ( strcmpi(type,"Hiding") == 0 ) sk->state = ST_HIDING;
- else if (strcmpi(type,"Cloaking") == 0 ) sk->state = ST_CLOAKING;
- else if (strcmpi(type,"Hidden") == 0 ) sk->state = ST_HIDDEN;
- else if (strcmpi(type,"Riding") == 0 ) sk->state = ST_RIDING;
- else if (strcmpi(type,"Falcon") == 0 ) sk->state = ST_FALCON;
- else if (strcmpi(type,"Cart") == 0 ) sk->state = ST_CART;
- else if (strcmpi(type,"Shield") == 0 ) sk->state = ST_SHIELD;
- else if (strcmpi(type,"Sight") == 0 ) sk->state = ST_SIGHT;
- else if (strcmpi(type,"ExplosionSpirits") == 0 ) sk->state = ST_EXPLOSIONSPIRITS;
- else if (strcmpi(type,"CartBoost") == 0 ) sk->state = ST_CARTBOOST;
- else if (strcmpi(type,"NotOverWeight") == 0 ) sk->state = ST_RECOV_WEIGHT_RATE;
- else if (strcmpi(type,"Moveable") == 0 ) sk->state = ST_MOVE_ENABLE;
- else if (strcmpi(type,"InWater") == 0 ) sk->state = ST_WATER;
- else if (strcmpi(type,"Dragon") == 0 ) sk->state = ST_RIDINGDRAGON;
- else if (strcmpi(type,"Warg") == 0 ) sk->state = ST_WUG;
- else if (strcmpi(type,"RidingWarg") == 0 ) sk->state = ST_RIDINGWUG;
- else if (strcmpi(type,"MadoGear") == 0 ) sk->state = ST_MADO;
- else if (strcmpi(type,"ElementalSpirit") == 0 ) sk->state = ST_ELEMENTALSPIRIT;
- else if (strcmpi(type,"PoisonWeapon") == 0 ) sk->state = ST_POISONINGWEAPON;
- else if (strcmpi(type,"RollingCutter") == 0 ) sk->state = ST_ROLLINGCUTTER;
- else if (strcmpi(type,"MH_Fighting") == 0 ) sk->state = ST_MH_FIGHTING;
- else if (strcmpi(type,"MH_Grappling") == 0 ) sk->state = ST_MH_GRAPPLING;
- else if (strcmpi(type,"Peco") == 0 ) sk->state = ST_PECO;
+
+ skill->level_set_value(sk->spiritball, 0);
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "SpiritSphereCost");
+
+ if (t != NULL && config_setting_is_group(t)) {
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++) {
+ char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL.
+ safesnprintf(lv, sizeof(lv), "Lv%d", i + 1);
+ int spirit_sphere_cost;
+
+ if (libconfig->setting_lookup_int(t, lv, &spirit_sphere_cost) == CONFIG_TRUE) {
+ if (spirit_sphere_cost >= 0 && spirit_sphere_cost <= MAX_SPIRITBALL)
+ sk->spiritball[i] = spirit_sphere_cost;
+ else
+ ShowWarning("%s: Invalid Spirit Sphere cost %d specified in level %d for skill ID %d in %s! Minimum is 0, maximum is %d. Defaulting to 0...\n",
+ __func__, spirit_sphere_cost, i + 1, sk->nameid, conf->file, MAX_SPIRITBALL);
+ }
+ }
+
+ return;
+ }
+
+ int spirit_sphere_cost;
+
+ if (libconfig->setting_lookup_int(conf, "SpiritSphereCost", &spirit_sphere_cost) == CONFIG_TRUE) {
+ if (spirit_sphere_cost >= 0 && spirit_sphere_cost <= MAX_SPIRITBALL)
+ skill->level_set_value(sk->spiritball, spirit_sphere_cost);
else
- skilldb_invalid_error(type, "State", sk->nameid);
+ ShowWarning("%s: Invalid Spirit Sphere cost %d specified for skill ID %d in %s! Minimum is 0, maximum is %d. Defaulting to 0...\n",
+ __func__, spirit_sphere_cost, sk->nameid, conf->file, MAX_SPIRITBALL);
}
}
/**
- * Validates the "Items" flag
- * when parsing skill_db.conf
- * @param conf struct, pointer to the skill configuration
- * @param sk struct, pointer to s_skill_db
- * @return void
- */
+ * Validates a skill's required items amounts when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the required items amounts should be set it.
+ *
+ **/
+static void skill_validate_item_requirements_sub_item_amount(struct config_setting_t *conf, struct s_skill_db *sk, int item_index)
+{
+ nullpo_retv(conf);
+ nullpo_retv(sk);
+
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++)
+ sk->req_items.item[item_index].amount[i] = 0;
+
+ if (config_setting_is_group(conf)) {
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++) {
+ char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL.
+ safesnprintf(lv, sizeof(lv), "Lv%d", i + 1);
+ int amount;
+
+ if (libconfig->setting_lookup_int(conf, lv, &amount) == CONFIG_TRUE) {
+ if (amount >= 0 && amount <= MAX_AMOUNT)
+ sk->req_items.item[item_index].amount[i] = amount;
+ else
+ ShowWarning("%s: Invalid required item amount %d specified in level %d for skill ID %d in %s! Minimum is 0, maximum is %d. Defaulting to 0...\n",
+ __func__, amount, i + 1, sk->nameid, conf->file, MAX_AMOUNT);
+ } else {
+ // Items is not required for this skill level. (Not even in inventory!)
+ sk->req_items.item[item_index].amount[i] = -1;
+ }
+ }
+
+ return;
+ }
+
+ int amount = libconfig->setting_get_int(conf);
+
+ if (amount >= 0 && amount <= MAX_AMOUNT) {
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++)
+ sk->req_items.item[item_index].amount[i] = amount;
+ } else {
+ ShowWarning("%s: Invalid required item amount %d specified for skill ID %d in %s! Minimum is 0, maximum is %d. Defaulting to 0...\n",
+ __func__, amount, sk->nameid, conf->file, MAX_AMOUNT);
+ }
+}
+
+/**
+ * Validates a skill's required items when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the required items should be set it.
+ *
+ **/
+static void skill_validate_item_requirements_sub_items(struct config_setting_t *conf, struct s_skill_db *sk)
+{
+ nullpo_retv(conf);
+ nullpo_retv(sk);
+
+ for (int i = 0; i < MAX_SKILL_ITEM_REQUIRE; i++) {
+ sk->req_items.item[i].id = 0;
+
+ for (int j = 0; j < MAX_SKILL_LEVEL; j++)
+ sk->req_items.item[i].amount[j] = 0;
+ }
+
+ int item_index = 0;
+ int count = libconfig->setting_length(conf);
+
+ for (int i = 0; i < count; i++) {
+ struct config_setting_t *t = libconfig->setting_get_elem(conf, i);
+
+ if (t != NULL && strcasecmp(config_setting_name(t), "Any") != 0) {
+ if (item_index >= MAX_SKILL_ITEM_REQUIRE) {
+ ShowWarning("%s: Too many required items specified for skill ID %d in %s! Skipping item %s...\n",
+ __func__, sk->nameid, conf->file, config_setting_name(t));
+ continue;
+ }
+
+ int item_id = skill->validate_requirements_item_name(config_setting_name(t));
+
+ if (item_id == 0) {
+ ShowWarning("%s: Invalid required item %s specified for skill ID %d in %s! Skipping item...\n",
+ __func__, config_setting_name(t), sk->nameid, conf->file);
+ continue;
+ }
+
+ int j;
+
+ ARR_FIND(0, MAX_SKILL_ITEM_REQUIRE, j, sk->req_items.item[j].id == item_id);
+
+ if (j < MAX_SKILL_ITEM_REQUIRE) {
+ ShowWarning("%s: Duplicate required item %s specified for skill ID %d in %s! Skipping item...\n",
+ __func__, config_setting_name(t), sk->nameid, conf->file);
+ continue;
+ }
+
+ sk->req_items.item[item_index].id = item_id;
+ skill->validate_item_requirements_sub_item_amount(t, sk, item_index);
+ item_index++;
+ }
+ }
+}
+
+/**
+ * Validates a skill's required items any-flag when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the required items any-flag should be set it.
+ *
+ **/
+static void skill_validate_item_requirements_sub_any_flag(struct config_setting_t *conf, struct s_skill_db *sk)
+{
+ nullpo_retv(conf);
+ nullpo_retv(sk);
+
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++)
+ sk->req_items.any[i] = false;
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "Any");
+
+ if (t != NULL && config_setting_is_group(t)) {
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++) {
+ char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL.
+ safesnprintf(lv, sizeof(lv), "Lv%d", i + 1);
+ int any_flag;
+
+ if (libconfig->setting_lookup_bool(t, lv, &any_flag) == CONFIG_TRUE)
+ sk->req_items.any[i] = (any_flag != 0);
+ }
+
+ return;
+ }
+
+ int any_flag;
+
+ if (libconfig->setting_lookup_bool(conf, "Any", &any_flag) == CONFIG_TRUE && any_flag != 0) {
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++)
+ sk->req_items.any[i] = true;
+ }
+}
+
+/**
+ * Validates a skill's required items when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the required items should be set it.
+ *
+ **/
static void skill_validate_item_requirements(struct config_setting_t *conf, struct s_skill_db *sk)
{
- struct config_setting_t *tt = NULL;
+ nullpo_retv(conf);
+ nullpo_retv(sk);
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "Items");
+ if (t != NULL && config_setting_is_group(t)) {
+ skill->validate_item_requirements_sub_any_flag(t, sk);
+ skill->validate_item_requirements_sub_items(t, sk);
+ }
+}
+
+/**
+ * Validates a skill's required equipment amounts when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the required equipment amounts should be set it.
+ *
+ **/
+static void skill_validate_equip_requirements_sub_item_amount(struct config_setting_t *conf, struct s_skill_db *sk, int item_index)
+{
+ nullpo_retv(conf);
nullpo_retv(sk);
- if ((tt=libconfig->setting_get_member(conf, "Items")) && config_setting_is_group(conf)) {
- int itx=-1;
- struct config_setting_t *it;
- while((it=libconfig->setting_get_elem(tt, ++itx)) && itx < MAX_SKILL_ITEM_REQUIRE) {
- const char *type = config_setting_name(it);
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++)
+ sk->req_equip.item[item_index].amount[i] = 0;
- if( type[0] == 'I' && type[1] == 'D' && itemdb->exists(atoi(type+2)) )
- sk->itemid[itx] = atoi(type+2);
- else if(!script->get_constant(type, &sk->itemid[itx])) {
- ShowWarning("skill_read_skilldb: Invalid required Item '%s' given for skill Id %d in '%s', skipping...\n",type, sk->nameid, DBPATH"skill_db.conf");
+ if (config_setting_is_group(conf)) {
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++) {
+ char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL.
+ safesnprintf(lv, sizeof(lv), "Lv%d", i + 1);
+ int amount;
+
+ if (libconfig->setting_lookup_int(conf, lv, &amount) == CONFIG_TRUE) {
+ if (amount > 0) {
+ sk->req_equip.item[item_index].amount[i] = amount;
+ } else {
+ ShowWarning("%s: Invalid required equipment amount %d specified in level %d for skill ID %d in %s! Must be greater than 0. Defaulting to 1...\n",
+ __func__, amount, i + 1, sk->nameid, conf->file);
+ sk->req_equip.item[item_index].amount[i] = 1;
+ }
+ }
+ }
+
+ return;
+ }
+
+ int amount = libconfig->setting_get_int(conf);
+
+ if (amount <= 0) {
+ ShowWarning("%s: Invalid required equipment amount %d specified for skill ID %d in %s! Must be greater than 0. Defaulting to 1...\n",
+ __func__, amount, sk->nameid, conf->file);
+ amount = 1;
+ }
+
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++)
+ sk->req_equip.item[item_index].amount[i] = amount;
+}
+
+/**
+ * Validates a skill's required equipment when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the required equipment should be set it.
+ *
+ **/
+static void skill_validate_equip_requirements_sub_items(struct config_setting_t *conf, struct s_skill_db *sk)
+{
+ nullpo_retv(conf);
+ nullpo_retv(sk);
+
+ for (int i = 0; i < MAX_SKILL_ITEM_REQUIRE; i++) {
+ sk->req_equip.item[i].id = 0;
+
+ for (int j = 0; j < MAX_SKILL_LEVEL; j++)
+ sk->req_equip.item[i].amount[j] = 0;
+ }
+
+ int item_index = 0;
+ int count = libconfig->setting_length(conf);
+
+ for (int i = 0; i < count; i++) {
+ struct config_setting_t *t = libconfig->setting_get_elem(conf, i);
+
+ if (t != NULL && strcasecmp(config_setting_name(t), "Any") != 0) {
+ if (item_index >= MAX_SKILL_ITEM_REQUIRE) {
+ ShowWarning("%s: Too many required equipment items specified for skill ID %d in %s! Skipping item %s...\n",
+ __func__, sk->nameid, conf->file, config_setting_name(t));
continue;
}
- if (config_setting_is_group(it)) {
- // TODO: Per-level item requirements are not implemented yet!
- // We just take the first level for the time being (old txt behavior)
- sk->amount[itx] = libconfig->setting_get_int_elem(it, 0);
- } else {
- sk->amount[itx] = libconfig->setting_get_int(it);
+ int item_id = skill->validate_requirements_item_name(config_setting_name(t));
+ struct item_data *it = itemdb->exists(item_id);
+
+ if (item_id == 0 || it == NULL) {
+ ShowWarning("%s: Invalid required equipment item %s specified for skill ID %d in %s! Skipping item...\n",
+ __func__, config_setting_name(t), sk->nameid, conf->file);
+ continue;
}
+
+ if (it->type != IT_WEAPON && it->type != IT_AMMO && it->type != IT_ARMOR && it->type != IT_CARD) {
+ ShowWarning("%s: Non-equipment item %s specified for skill ID %d in %s! Skipping item...\n",
+ __func__, config_setting_name(t), sk->nameid, conf->file);
+ continue;
+ }
+
+ int j;
+
+ ARR_FIND(0, MAX_SKILL_ITEM_REQUIRE, j, sk->req_equip.item[j].id == item_id);
+
+ if (j < MAX_SKILL_ITEM_REQUIRE) {
+ ShowWarning("%s: Duplicate required equipment item %s specified for skill ID %d in %s! Skipping item...\n",
+ __func__, config_setting_name(t), sk->nameid, conf->file);
+ continue;
+ }
+
+ sk->req_equip.item[item_index].id = item_id;
+ skill->validate_equip_requirements_sub_item_amount(t, sk, item_index);
+ item_index++;
}
}
}
/**
- * Validates the "Unit > Target" flag
- * when parsing skill_db.conf
- * @param conf struct, pointer to the skill configuration
- * @param sk struct, pointer to s_skill_db
- * @return void
- */
-static void skill_validate_unit_target(struct config_setting_t *conf, struct s_skill_db *sk)
+ * Validates a skill's required equipment any-flag when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the required equipment any-flag should be set it.
+ *
+ **/
+static void skill_validate_equip_requirements_sub_any_flag(struct config_setting_t *conf, struct s_skill_db *sk)
+{
+ nullpo_retv(conf);
+ nullpo_retv(sk);
+
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++)
+ sk->req_equip.any[i] = false;
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "Any");
+
+ if (t != NULL && config_setting_is_group(t)) {
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++) {
+ char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL.
+ safesnprintf(lv, sizeof(lv), "Lv%d", i + 1);
+ int any_flag;
+
+ if (libconfig->setting_lookup_bool(t, lv, &any_flag) == CONFIG_TRUE)
+ sk->req_equip.any[i] = (any_flag != 0);
+ }
+
+ return;
+ }
+
+ int any_flag;
+
+ if (libconfig->setting_lookup_bool(conf, "Any", &any_flag) == CONFIG_TRUE && any_flag != 0) {
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++)
+ sk->req_equip.any[i] = true;
+ }
+}
+
+/**
+ * Validates a skill's required equipment when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the required equipment should be set it.
+ *
+ **/
+static void skill_validate_equip_requirements(struct config_setting_t *conf, struct s_skill_db *sk)
+{
+ nullpo_retv(conf);
+ nullpo_retv(sk);
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "Equip");
+
+ if (t != NULL && config_setting_is_group(t)) {
+ skill->validate_equip_requirements_sub_any_flag(t, sk);
+ skill->validate_equip_requirements_sub_items(t, sk);
+ }
+}
+
+/**
+ * Validates a required item's config setting name when reading the skill DB.
+ *
+ * @param name The config setting name to validate.
+ * @return The corresponding item ID if the passed config setting name is valid, otherwise 0.
+ *
+ **/
+static int skill_validate_requirements_item_name(const char *name)
{
- const char *type = NULL;
+ nullpo_ret(name);
+
+ int item_id = 0;
+
+ if (strlen(name) > 2 && name[0] == 'I' && name[1] == 'D') {
+ if ((item_id = atoi(name + 2)) == 0)
+ return 0;
+ struct item_data *it = itemdb->exists(item_id);
+
+ if (it == NULL)
+ return 0;
+
+ return it->nameid;
+ }
+
+ if (!script->get_constant(name, &item_id))
+ return 0;
+
+ return item_id;
+}
+
+/**
+ * Validates a skill's requirements when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the requirements should be set it.
+ *
+ **/
+static void skill_validate_requirements(struct config_setting_t *conf, struct s_skill_db *sk)
+{
+ nullpo_retv(conf);
nullpo_retv(sk);
- if(libconfig->setting_lookup_string(conf, "Target", &type)) {
- if(!strcmpi(type,"NotEnemy")) sk->unit_target = BCT_NOENEMY;
- else if(!strcmpi(type,"NotParty")) sk->unit_target = BCT_NOPARTY;
- else if (!strcmpi(type,"NotGuild")) sk->unit_target = BCT_NOGUILD;
- else if(!strcmpi(type,"Friend")) sk->unit_target = BCT_NOENEMY;
- else if(!strcmpi(type,"Party")) sk->unit_target = BCT_PARTY;
- else if(!strcmpi(type,"Ally")) sk->unit_target = BCT_PARTY|BCT_GUILD;
- else if(!strcmpi(type,"Guild")) sk->unit_target = BCT_GUILD;
- else if(!strcmpi(type,"All")) sk->unit_target = BCT_ALL;
- else if(!strcmpi(type,"Enemy")) sk->unit_target = BCT_ENEMY;
- else if(!strcmpi(type,"Self")) sk->unit_target = BCT_SELF;
- else if(!strcmpi(type,"SameGuild")) sk->unit_target = BCT_GUILD|BCT_SAMEGUILD;
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "Requirements");
+
+ if (t != NULL && config_setting_is_group(t)) {
+ skill->validate_hp_cost(t, sk);
+ skill->validate_sp_cost(t, sk);
+ skill->validate_hp_rate_cost(t, sk);
+ skill->validate_sp_rate_cost(t, sk);
+ skill->validate_max_hp_trigger(t, sk);
+ skill->validate_max_sp_trigger(t, sk);
+ skill->validate_zeny_cost(t, sk);
+ skill->validate_weapontype(t, sk);
+ skill->validate_ammotype(t, sk);
+ skill->validate_ammo_amount(t, sk);
+ skill->validate_state(t, sk);
+ skill->validate_spirit_sphere_cost(t, sk);
+ skill->validate_item_requirements(t, sk);
+ skill->validate_equip_requirements(t, sk);
}
+}
+
+/**
+ * Validates a single unit ID when reading the skill DB.
+ *
+ * @param unit_id The unit ID to validate.
+ * @return A number greater than or equal to 0 if the passed unit ID is valid, otherwise -1.
+ *
+ **/
+static int skill_validate_unit_id_sub(int unit_id)
+{
+ if (unit_id == 0 || (unit_id >= UNT_SAFETYWALL && unit_id <= UNT_SV_ROOTTWIST))
+ return unit_id;
- if (sk->unit_flag & UF_DEFNOTENEMY && battle_config.defnotenemy)
- sk->unit_target = BCT_NOENEMY;
+ return -1;
+}
- //By default, target just characters.
- sk->unit_target |= BL_CHAR;
+/**
+ * Validates a skill's unit IDs if specified as single value when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's unit ID data.
+ * @param sk The s_skill_db struct where the unit IDs should be set it.
+ * @param index The array index to use. (-1 for whole array.)
+ * @param unit_id The unit ID to validate.
+ *
+ **/
+static void skill_validate_unit_id_value(struct config_setting_t *conf, struct s_skill_db *sk, int index, int unit_id)
+{
+ nullpo_retv(conf);
+ nullpo_retv(sk);
- if (sk->unit_flag & UF_NOPC)
- sk->unit_target &= ~BL_PC;
- if (sk->unit_flag & UF_NOMOB)
- sk->unit_target &= ~BL_MOB;
- if (sk->unit_flag & UF_SKILL)
- sk->unit_target |= BL_SKILL;
+ if (skill->validate_unit_id_sub(unit_id) == -1) {
+ char level_string[14]; // Big enough to contain "in level 999 " in case of custom MAX_SKILL_LEVEL.
+
+ if (index == -1)
+ *level_string = '\0';
+ else
+ safesnprintf(level_string, sizeof(level_string), "in level %d ", index + 1);
+
+ ShowWarning("%s: Invalid unit ID %d specified %sfor skill ID %d in %s! Must be greater than or equal to 0. Defaulting to 0...\n",
+ __func__, unit_id, level_string, sk->nameid, conf->file);
+
+ return;
+ }
+
+ if (index == -1) {
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++)
+ sk->unit_id[i][0] = unit_id;
+ } else {
+ sk->unit_id[index][0] = unit_id;
+ }
}
/**
- * Validates the "Unit > Flag" setting
- * when parsing skill_db.conf
- * @param type const char, name of the flag being parsed.
- * @param on boolean, switch for flag setting
- * @param sk struct, pointer to s_skill_db.
- * @return (void)
- */
+ * Validates a skill's unit IDs if specified as array when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's unit ID data.
+ * @param sk The s_skill_db struct where the unit IDs should be set it.
+ * @param index The array index to use. (-1 for whole array.)
+ *
+ **/
+static void skill_validate_unit_id_array(struct config_setting_t *conf, struct s_skill_db *sk, int index)
+{
+ nullpo_retv(conf);
+ nullpo_retv(sk);
+
+ char level_string[14]; // Big enough to contain "in level 999 " in case of custom MAX_SKILL_LEVEL.
+
+ if (index == -1)
+ *level_string = '\0';
+ else
+ safesnprintf(level_string, sizeof(level_string), "in level %d ", index + 1);
+
+ if (libconfig->setting_length(conf) == 0) {
+ ShowWarning("%s: No unit ID(s) specified %sfor skill ID %d in %s! Defaulting to 0...\n",
+ __func__, level_string, sk->nameid, conf->file);
+ return;
+ }
+
+ if (libconfig->setting_length(conf) > 2)
+ ShowWarning("%s: Specified more than two unit IDs %sfor skill ID %d in %s! Reading only the first two...\n",
+ __func__, level_string, sk->nameid, conf->file);
+
+ int unit_id1 = libconfig->setting_get_int_elem(conf, 0);
+
+ if (skill->validate_unit_id_sub(unit_id1) == -1) {
+ ShowWarning("%s: Invalid unit ID %d specified %sfor skill ID %d in %s! Must be greater than or equal to 0. Defaulting to 0...\n",
+ __func__, unit_id1, level_string, sk->nameid, conf->file);
+ unit_id1 = 0;
+ }
+
+ int unit_id2 = 0;
+
+ if (libconfig->setting_length(conf) > 1) {
+ unit_id2 = libconfig->setting_get_int_elem(conf, 1);
+
+ if (skill->validate_unit_id_sub(unit_id2) == -1) {
+ ShowWarning("%s: Invalid unit ID %d specified %sfor skill ID %d in %s! Must be greater than or equal to 0. Defaulting to 0...\n",
+ __func__, unit_id2, level_string, sk->nameid, conf->file);
+ unit_id2 = 0;
+ }
+ }
+
+ if (unit_id1 == 0 && unit_id2 == 0)
+ return;
+
+ if (index == -1) {
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++) {
+ sk->unit_id[i][0] = unit_id1;
+ sk->unit_id[i][1] = unit_id2;
+ }
+ } else {
+ sk->unit_id[index][0] = unit_id1;
+ sk->unit_id[index][1] = unit_id2;
+ }
+}
+
+/**
+ * Validates a skill's unit IDs if specified as group when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's unit ID data.
+ * @param sk The s_skill_db struct where the unit IDs should be set it.
+ *
+ **/
+static void skill_validate_unit_id_group(struct config_setting_t *conf, struct s_skill_db *sk)
+{
+ nullpo_retv(conf);
+ nullpo_retv(sk);
+
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++) {
+ struct config_setting_t *t;
+ char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL.
+ safesnprintf(lv, sizeof(lv), "Lv%d", i + 1);
+
+ if ((t = libconfig->setting_get_member(conf, lv)) != NULL && config_setting_is_array(t)) {
+ skill_validate_unit_id_array(t, sk, i);
+ continue;
+ }
+
+ int unit_id;
+
+ if (libconfig->setting_lookup_int(conf, lv, &unit_id) == CONFIG_TRUE)
+ skill_validate_unit_id_value(conf, sk, i, unit_id);
+ }
+}
+
+/**
+ * Validates a skill's unit IDs when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the unit IDs should be set it.
+ *
+ **/
+static void skill_validate_unit_id(struct config_setting_t *conf, struct s_skill_db *sk)
+{
+ nullpo_retv(conf);
+ nullpo_retv(sk);
+
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++) {
+ sk->unit_id[i][0] = 0;
+ sk->unit_id[i][1] = 0;
+ }
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "Id");
+
+ if (t != NULL && config_setting_is_group(t)) {
+ skill_validate_unit_id_group(t, sk);
+ return;
+ }
+
+ if (t != NULL && config_setting_is_array(t)) {
+ skill_validate_unit_id_array(t, sk, -1);
+ return;
+ }
+
+ int unit_id;
+
+ if (libconfig->setting_lookup_int(conf, "Id", &unit_id) == CONFIG_TRUE)
+ skill_validate_unit_id_value(conf, sk, -1, unit_id);
+}
+
+/**
+ * Validates a skill's unit layout when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the unit layout should be set it.
+ *
+ **/
+static void skill_validate_unit_layout(struct config_setting_t *conf, struct s_skill_db *sk)
+{
+ nullpo_retv(conf);
+ nullpo_retv(sk);
+
+ skill->level_set_value(sk->unit_layout_type, 0);
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "Layout");
+
+ if (t != NULL && config_setting_is_group(t)) {
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++) {
+ char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL.
+ safesnprintf(lv, sizeof(lv), "Lv%d", i + 1);
+ int unit_layout;
+
+ if (libconfig->setting_lookup_int(t, lv, &unit_layout) == CONFIG_TRUE) {
+ if (unit_layout >= -1 && unit_layout <= MAX_SKILL_UNIT_LAYOUT)
+ sk->unit_layout_type[i] = unit_layout;
+ else
+ ShowWarning("%s: Invalid unit layout %d specified in level %d for skill ID %d in %s! Minimum is -1, maximum is %d. Defaulting to 0...\n",
+ __func__, unit_layout, i + 1, sk->nameid, conf->file, MAX_SKILL_UNIT_LAYOUT);
+ }
+ }
+
+ return;
+ }
+
+ int unit_layout;
+
+ if (libconfig->setting_lookup_int(conf, "Layout", &unit_layout) == CONFIG_TRUE) {
+ if (unit_layout >= -1 && unit_layout <= MAX_SKILL_UNIT_LAYOUT)
+ skill->level_set_value(sk->unit_layout_type, unit_layout);
+ else
+ ShowWarning("%s: Invalid unit layout %d specified for skill ID %d in %s! Minimum is -1, maximum is %d. Defaulting to 0...\n",
+ __func__, unit_layout, sk->nameid, conf->file, MAX_SKILL_UNIT_LAYOUT);
+ }
+}
+
+/**
+ * Validates a skill's unit range when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the unit range should be set it.
+ *
+ **/
+static void skill_validate_unit_range(struct config_setting_t *conf, struct s_skill_db *sk)
+{
+ nullpo_retv(conf);
+ nullpo_retv(sk);
+
+ skill->level_set_value(sk->unit_range, 0);
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "Range");
+
+ if (t != NULL && config_setting_is_group(t)) {
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++) {
+ char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL.
+ safesnprintf(lv, sizeof(lv), "Lv%d", i + 1);
+ int unit_range;
+
+ if (libconfig->setting_lookup_int(t, lv, &unit_range) == CONFIG_TRUE) {
+ if (unit_range >= -1 && unit_range <= UCHAR_MAX)
+ sk->unit_range[i] = unit_range;
+ else
+ ShowWarning("%s: Invalid unit range %d specified in level %d for skill ID %d in %s! Minimum is -1, maximum is %d. Defaulting to 0...\n",
+ __func__, unit_range, i + 1, sk->nameid, conf->file, UCHAR_MAX);
+ }
+ }
+
+ return;
+ }
+
+ int unit_range;
+
+ if (libconfig->setting_lookup_int(conf, "Range", &unit_range) == CONFIG_TRUE) {
+ if (unit_range >= -1 && unit_range <= UCHAR_MAX)
+ skill->level_set_value(sk->unit_range, unit_range);
+ else
+ ShowWarning("%s: Invalid unit range %d specified for skill ID %d in %s! Minimum is -1, maximum is %d. Defaulting to 0...\n",
+ __func__, unit_range, sk->nameid, conf->file, UCHAR_MAX);
+ }
+}
+
+/**
+ * Validates a skill's unit interval when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the unit interval should be set it.
+ *
+ **/
+static void skill_validate_unit_interval(struct config_setting_t *conf, struct s_skill_db *sk)
+{
+ nullpo_retv(conf);
+ nullpo_retv(sk);
+
+ skill->level_set_value(sk->unit_interval, 0);
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "Interval");
+
+ if (t != NULL && config_setting_is_group(t)) {
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++) {
+ char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL.
+ safesnprintf(lv, sizeof(lv), "Lv%d", i + 1);
+ int unit_interval;
+
+ if (libconfig->setting_lookup_int(t, lv, &unit_interval) == CONFIG_TRUE) {
+ if (unit_interval >= INFINITE_DURATION)
+ sk->unit_interval[i] = unit_interval;
+ else
+ ShowWarning("%s: Invalid unit interval %d specified in level %d for skill ID %d in %s! Must be greater than or equal to %d. Defaulting to 0...\n",
+ __func__, unit_interval, i + 1, sk->nameid, conf->file, INFINITE_DURATION);
+ }
+ }
+
+ return;
+ }
+
+ int unit_interval;
+
+ if (libconfig->setting_lookup_int(conf, "Interval", &unit_interval) == CONFIG_TRUE) {
+ if (unit_interval >= INFINITE_DURATION)
+ skill->level_set_value(sk->unit_interval, unit_interval);
+ else
+ ShowWarning("%s: Invalid unit interval %d specified for skill ID %d in %s! Must be greater than or equal to %d. Defaulting to 0...\n",
+ __func__, unit_interval, sk->nameid, conf->file, INFINITE_DURATION);
+ }
+}
+
+/**
+ * Validates a single unit flag when reading the skill DB.
+ *
+ * @param type The unit flag to validate.
+ * @param on Whether the unit flag is set for the skill.
+ * @param sk The s_skill_db struct where the unit flag should be set it.
+ * @return 0 if the passed unit flag is valid, otherwise 1.
+ *
+ **/
static int skill_validate_unit_flag_sub(const char *type, bool on, struct s_skill_db *sk)
{
- nullpo_ret(type);
- nullpo_ret(sk);
+ nullpo_retr(1, type);
+ nullpo_retr(1, sk);
+
if (strcmpi(type, "UF_DEFNOTENEMY") == 0) {
- if (on) {
+ if (on)
sk->unit_flag |= UF_DEFNOTENEMY;
- } else {
+ else
sk->unit_flag &= ~UF_DEFNOTENEMY;
- }
} else if (strcmpi(type, "UF_NOREITERATION") == 0) {
- if (on) {
+ if (on)
sk->unit_flag |= UF_NOREITERATION;
- } else {
+ else
sk->unit_flag &= ~UF_NOREITERATION;
- }
} else if (strcmpi(type, "UF_NOFOOTSET") == 0) {
- if (on) {
+ if (on)
sk->unit_flag |= UF_NOFOOTSET;
- } else {
+ else
sk->unit_flag &= ~UF_NOFOOTSET;
- }
} else if (strcmpi(type, "UF_NOOVERLAP") == 0) {
- if (on) {
+ if (on)
sk->unit_flag |= UF_NOOVERLAP;
- } else {
+ else
sk->unit_flag &= ~UF_NOOVERLAP;
- }
} else if (strcmpi(type, "UF_PATHCHECK") == 0) {
- if (on) {
+ if (on)
sk->unit_flag |= UF_PATHCHECK;
- } else {
+ else
sk->unit_flag &= ~UF_PATHCHECK;
- }
} else if (strcmpi(type, "UF_NOPC") == 0) {
- if (on) {
+ if (on)
sk->unit_flag |= UF_NOPC;
- } else {
+ else
sk->unit_flag &= ~UF_NOPC;
- }
} else if (strcmpi(type, "UF_NOMOB") == 0) {
- if (on) {
+ if (on)
sk->unit_flag |= UF_NOMOB;
- } else {
+ else
sk->unit_flag &= ~UF_NOMOB;
- }
} else if (strcmpi(type, "UF_SKILL") == 0) {
- if (on) {
+ if (on)
sk->unit_flag |= UF_SKILL;
- } else {
+ else
sk->unit_flag &= ~UF_SKILL;
- }
} else if (strcmpi(type, "UF_DANCE") == 0) {
- if (on) {
+ if (on)
sk->unit_flag |= UF_DANCE;
- } else {
+ else
sk->unit_flag &= ~UF_DANCE;
- }
} else if (strcmpi(type, "UF_ENSEMBLE") == 0) {
- if (on) {
+ if (on)
sk->unit_flag |= UF_ENSEMBLE;
- } else {
+ else
sk->unit_flag &= ~UF_ENSEMBLE;
- }
} else if (strcmpi(type, "UF_SONG") == 0) {
- if (on) {
+ if (on)
sk->unit_flag |= UF_SONG;
- } else {
+ else
sk->unit_flag &= ~UF_SONG;
- }
} else if (strcmpi(type, "UF_DUALMODE") == 0) {
- if (on) {
+ if (on)
sk->unit_flag |= UF_DUALMODE;
- } else {
+ else
sk->unit_flag &= ~UF_DUALMODE;
- }
} else if (strcmpi(type, "UF_RANGEDSINGLEUNIT") == 0) {
- if (on) {
+ if (on)
sk->unit_flag |= UF_RANGEDSINGLEUNIT;
- } else {
+ else
sk->unit_flag &= ~UF_RANGEDSINGLEUNIT;
- }
} else {
- return 1; // Invalid Type
+ return 1;
}
return 0;
}
/**
- * Validate "Unit > Flag" setting
- * when parsing skill_db.conf
- * @param conf struct, pointer to the skill configuration
- * @param sk struct, struct, pointer to s_skill_db
- * @return (void)
- */
+ * Validates a skill's unit flags when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the unit flags should be set it.
+ *
+ **/
static void skill_validate_unit_flag(struct config_setting_t *conf, struct s_skill_db *sk)
{
- struct config_setting_t *t = NULL;
+ nullpo_retv(conf);
+ nullpo_retv(sk);
+
+ sk->unit_flag = 0;
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "Flag");
+
+ if (t != NULL && config_setting_is_group(t)) {
+ struct config_setting_t *tt;
+ int i = 0;
+
+ while ((tt = libconfig->setting_get_elem(t, i++)) != NULL) {
+ bool on = libconfig->setting_get_bool_real(tt);
+
+ if (skill->validate_unit_flag_sub(config_setting_name(tt), on, sk))
+ ShowWarning("%s: Invalid unit flag %s specified for skill ID %d in %s! Skipping flag...\n",
+ __func__, config_setting_name(tt), sk->nameid, conf->file);
+ }
+ }
+}
+
+/**
+ * Validates a single unit target when reading the skill DB.
+ *
+ * @param target The unit target to validate.
+ * @return A number greater than or equal to 0 if the passed unit target is valid, otherwise -1.
+ *
+ **/
+static int skill_validate_unit_target_sub(const char *target)
+{
+ nullpo_retr(-1, target);
+
+ int ret_val = BCT_NOONE;
+
+ if (strcmpi(target, "NotEnemy") == 0)
+ ret_val = BCT_NOENEMY;
+ else if (strcmpi(target, "NotParty") == 0)
+ ret_val = BCT_NOPARTY;
+ else if (strcmpi(target, "NotGuild") == 0)
+ ret_val = BCT_NOGUILD;
+ else if (strcmpi(target, "Friend") == 0)
+ ret_val = BCT_NOENEMY;
+ else if (strcmpi(target, "Party") == 0)
+ ret_val = BCT_PARTY;
+ else if (strcmpi(target, "Ally") == 0)
+ ret_val = BCT_PARTY|BCT_GUILD;
+ else if (strcmpi(target, "Guild") == 0)
+ ret_val = BCT_GUILD;
+ else if (strcmpi(target, "All") == 0)
+ ret_val = BCT_ALL;
+ else if (strcmpi(target, "Enemy") == 0)
+ ret_val = BCT_ENEMY;
+ else if (strcmpi(target, "Self") == 0)
+ ret_val = BCT_SELF;
+ else if (strcmpi(target, "SameGuild") == 0)
+ ret_val = BCT_SAMEGUILD;
+ else if (strcmpi(target, "GuildAlly") == 0)
+ ret_val = BCT_GUILDALLY;
+ else if (strcmpi(target, "Neutral") == 0)
+ ret_val = BCT_NEUTRAL;
+ else if (strcmpi(target, "None") != 0)
+ ret_val = -1;
+
+ return ret_val;
+}
+/**
+ * Validates a skill's unit targets when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the unit targets should be set it.
+ *
+ **/
+static void skill_validate_unit_target(struct config_setting_t *conf, struct s_skill_db *sk)
+{
+ nullpo_retv(conf);
nullpo_retv(sk);
- if ((t=libconfig->setting_get_member(conf, "Flag")) && config_setting_is_group(t)) {
- int j=0;
- struct config_setting_t *tt = NULL;
- while ((tt = libconfig->setting_get_elem(t, j++))) {
- const char *name = config_setting_name(tt);
- if (skill->validate_unit_flag_sub(name, libconfig->setting_get_bool_real(tt), sk))
- skilldb_invalid_error(name, config_setting_name(t), sk->nameid);
+ skill->level_set_value(sk->unit_target, BCT_NOONE);
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "Target");
+
+ if (t != NULL && config_setting_is_group(t)) {
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++) {
+ char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL.
+ safesnprintf(lv, sizeof(lv), "Lv%d", i + 1);
+ const char *unit_target;
+
+ if (libconfig->setting_lookup_string(t, lv, &unit_target) == CONFIG_TRUE) {
+ int target = skill->validate_unit_target_sub(unit_target);
+
+ if (target > BCT_NOONE)
+ sk->unit_target[i] = target;
+ else if (target == -1)
+ ShowWarning("%s: Invalid unit target %s specified in level %d for skill ID %d in %s! Defaulting to None...\n",
+ __func__, unit_target, i + 1, sk->nameid, conf->file);
+ }
+ }
+ } else {
+ const char *unit_target;
+
+ if (libconfig->setting_lookup_string(conf, "Target", &unit_target) == CONFIG_TRUE) {
+ int target = skill->validate_unit_target_sub(unit_target);
+
+ if (target > BCT_NOONE)
+ skill->level_set_value(sk->unit_target, target);
+ else if (target == -1)
+ ShowWarning("%s: Invalid unit target %s specified for skill ID %d in %s! Defaulting to None...\n",
+ __func__, unit_target, sk->nameid, conf->file);
}
}
+
+ for (int i = 0; i < MAX_SKILL_LEVEL; i++) {
+ if ((sk->unit_flag & UF_DEFNOTENEMY) != 0 && battle_config.defnotenemy != 0)
+ sk->unit_target[i] = BCT_NOENEMY;
+
+ // By default target just characters.
+ sk->unit_target[i] |= BL_CHAR;
+
+ if ((sk->unit_flag & UF_NOPC) != 0)
+ sk->unit_target[i] &= ~BL_PC;
+
+ if ((sk->unit_flag & UF_NOMOB) != 0)
+ sk->unit_target[i] &= ~BL_MOB;
+
+ if ((sk->unit_flag & UF_SKILL) != 0)
+ sk->unit_target[i] |= BL_SKILL;
+ }
}
+
+/**
+ * Validates a skill's unit data when reading the skill DB.
+ *
+ * @param conf The libconfig settings block which contains the skill's data.
+ * @param sk The s_skill_db struct where the unit data should be set it.
+ *
+ **/
+static void skill_validate_unit(struct config_setting_t *conf, struct s_skill_db *sk)
+{
+ nullpo_retv(conf);
+ nullpo_retv(sk);
+
+ struct config_setting_t *t = libconfig->setting_get_member(conf, "Unit");
+
+ if (t != NULL && config_setting_is_group(t)) {
+ skill->validate_unit_id(t, sk);
+ skill->validate_unit_layout(t, sk);
+ skill->validate_unit_range(t, sk);
+ skill->validate_unit_interval(t, sk);
+ skill->validate_unit_flag(t, sk);
+ skill->validate_unit_target(t, sk);
+ }
+}
+
/**
* Validate additional field settings via plugins
* when parsing skill_db.conf
@@ -21097,293 +23727,100 @@ static void skill_validate_additional_fields(struct config_setting_t *conf, stru
}
/**
- * Validates a skill entry and adds it to the database. [ Smokexyz/Hercules ]
- * @param sk contains skill data to be checked.
- * @param *source filepath constant.
- * @return boolean true on success.
- */
-static bool skill_validate_skilldb(struct s_skill_db *sk, const char *source)
+ * Reads a skill DB file from relative path.
+ *
+ * @param filename The skill DB's file name including the DB path.
+ * @return True on success, otherwise false.
+ *
+ **/
+static bool skill_read_skilldb(const char *filename)
{
- int idx;
+ nullpo_retr(false, filename);
- nullpo_retr(false, sk);
- idx = skill->get_index(sk->nameid);
- if (idx == 0) {
- ShowWarning("skill_validate_skilldb: Invalid skill Id %d provided in '%s'! ... skipping\n", sk->nameid, source);
- ShowInfo("It is possible that the skill Id is 0 or unavailable (interferes with guild/homun/mercenary skill mapping).\n");
- return false;
- } else if (sk->max <= 0) {
- ShowError("skill_validate_skilldb: Invalid Max Level %d specified for skill Id %d in '%s', skipping...\n", sk->max, sk->nameid, source);
- return false;
- }
+ char filepath[256];
- /* Direct assignment of temporary skill storage to skill db */
- skill->dbs->db[idx] = *sk;
- /* Put skill name in name2id DB */
- strdb_iput(skill->name2id_db, skill->dbs->db[idx].name, skill->dbs->db[idx].nameid);
- /* Set Name to Id script constants */
- script->set_constant2(skill->dbs->db[idx].name, (int)skill->dbs->db[idx].nameid, false, false);
+ libconfig->format_db_path(filename, filepath, sizeof(filepath));
- return true;
-}
+ if (!exists(filepath)) {
+ ShowError("%s: Can't find file %s! Abort reading skills...\n", __func__, filepath);
+ return false;
+ }
-/**
- * Reads skill_db.conf from relative filepath and processes [ Smokexyz/Hercules ]
- * entries into the skill database.
- * @param filename contains the file path and name.
- * @return boolean true on success
- */
-static bool skill_read_skilldb(const char *filename)
-{
struct config_t skilldb;
- struct config_setting_t *sk, *conf;
- char filepath[256];
- int count=0, index=0;
- bool duplicate[MAX_SKILL_DB] = {0};
-
- nullpo_retr(false, filename);
-
- libconfig->format_db_path(filename, filepath, sizeof(filepath));
- if (!libconfig->load_file(&skilldb, filepath)) {
+ if (libconfig->load_file(&skilldb, filepath) == 0)
return false; // Libconfig error report.
- }
- // Possible Syntax error.
- if ((sk=libconfig->setting_get_member(skilldb.root, "skill_db")) == NULL) {
- ShowError("skill_read_skilldb: Skill DB could not be loaded, please check '%s'.\n", filepath);
+ struct config_setting_t *sk = libconfig->setting_get_member(skilldb.root, "skill_db");
+
+ if (sk == NULL) {
+ ShowError("%s: Skill DB could not be loaded! Please check %s.\n", __func__, filepath);
libconfig->destroy(&skilldb);
return false;
}
- while ((conf = libconfig->setting_get_elem(sk,index++))) {
- int idx=0, skill_id=0, temp=0;
- struct config_setting_t *t = NULL, *tt = NULL;
- struct s_skill_db tmp_db = { 0 };
-
- /* Skill ID */
- if (!libconfig->setting_lookup_int(conf, "Id", &skill_id)) {
- ShowError("skill_read_skilldb: Skill Id not specified for entry %d in '%s', skipping...\n", index, filepath );
- continue;
- }
+ struct config_setting_t *conf;
+ int index = 0;
+ int count = 0;
- tmp_db.nameid = skill_id;
-
- if((idx = skill->get_index(skill_id)) == 0) {
- ShowError("skill_read_skilldb: Skill Id %d is out of range, or within a reserved range (for guild, homunculus, mercenary or elemental skills). skipping...\n", idx);
- continue;
- }
+ while ((conf = libconfig->setting_get_elem(sk, index++)) != NULL) {
+ struct s_skill_db tmp_db = {0};
- if (duplicate[idx]) {
- ShowWarning("skill_read_skilldb: Duplicate Skill Id %d in entry %d in '%s', skipping...\n", skill_id, index, filepath);
+ /** Validate mandatory fields. **/
+ skill->validate_id(conf, &tmp_db, index);
+ if (tmp_db.nameid == 0)
continue;
- }
- /* Skill Name Constant */
- if (!libconfig->setting_lookup_mutable_string(conf, "Name", tmp_db.name, sizeof(tmp_db.name))) {
- ShowError("skill_read_skilldb: Name not specified for skill Id %d in '%s', skipping...\n", skill_id, filepath);
+ skill->validate_name(conf, &tmp_db);
+ if (*tmp_db.name == '\0')
continue;
- }
-
- /* Skill Description */
- libconfig->setting_lookup_mutable_string(conf, "Description", tmp_db.desc, sizeof(tmp_db.desc));
- /* Max Level */
- if (!libconfig->setting_lookup_int(conf, "MaxLevel", &temp)) {
- ShowError("skill_read_skilldb: MaxLevel not specified for skill Id %d in '%s', skipping...\n", skill_id, filepath);
+ skill->validate_max_level(conf, &tmp_db);
+ if (tmp_db.max == 0)
continue;
- } else {
- tmp_db.max = temp;
- }
- /* Range */
- if ((t=libconfig->setting_get_member(conf, "Range")))
- skill->config_set_level(t, tmp_db.range);
-
- /* Hit Type */
+ /** Validate optional fields. **/
+ skill->validate_description(conf, &tmp_db);
+ skill->validate_range(conf, &tmp_db);
skill->validate_hittype(conf, &tmp_db);
-
- /* Skill Type */
skill->validate_skilltype(conf, &tmp_db);
-
- /* Skill Info */
skill->validate_skillinfo(conf, &tmp_db);
-
- /* Skill Attack Type */
skill->validate_attacktype(conf, &tmp_db);
-
- /* Skill Element */
skill->validate_element(conf, &tmp_db);
-
- /* Damage Type */
skill->validate_damagetype(conf, &tmp_db);
-
- /* Splash Range */
- if ((t = libconfig->setting_get_member(conf, "SplashRange")))
- skill->config_set_level(t, tmp_db.splash);
-
- /* Number of Hits */
- if ((t = libconfig->setting_get_member(conf, "NumberOfHits")) && config_setting_is_group(t))
- skill->config_set_level(t, tmp_db.num);
- else if ((libconfig->setting_lookup_int(conf, "NumberOfHits", &temp)))
- skill->level_set_value(tmp_db.num, temp);
- else
- skill->level_set_value(tmp_db.num, 1); // Default 1
-
- /* Interrupt Cast */
- if (libconfig->setting_lookup_bool(conf, "InterruptCast", &tmp_db.castcancel) == CONFIG_FALSE)
- tmp_db.castcancel = 0;
-
- /* Cast Defense Rate */
- libconfig->setting_lookup_int(conf, "CastDefRate", &tmp_db.cast_def_rate);
-
- /* Skill Instances */
- if ((t = libconfig->setting_get_member(conf, "SkillInstances")))
- skill->config_set_level(t, tmp_db.maxcount);
-
- /* Knock-Back Tiles */
- if ((t = libconfig->setting_get_member(conf, "KnockBackTiles")))
- skill->config_set_level(t, tmp_db.blewcount);
- /**
- * Skill Cast / Delay data handling
- */
- /* Cast Time */
- if ((t=libconfig->setting_get_member(conf, "CastTime")))
- skill->config_set_level(t, tmp_db.cast);
-
- /* After Cast Act Delay */
- if ((t=libconfig->setting_get_member(conf, "AfterCastActDelay")))
- skill->config_set_level(t, tmp_db.delay);
-
- /* After Cast Walk Delay */
- if ((t=libconfig->setting_get_member(conf, "AfterCastWalkDelay")))
- skill->config_set_level(t, tmp_db.walkdelay);
-
- /* Skill Data/Duration */
- if ((t=libconfig->setting_get_member(conf, "SkillData1")))
- skill->config_set_level(t, tmp_db.upkeep_time);
-
- /* Skill Data/Duration 2 */
- if ((t=libconfig->setting_get_member(conf, "SkillData2")))
- skill->config_set_level(t, tmp_db.upkeep_time2);
-
- /* Skill Cool Down */
- if ((t=libconfig->setting_get_member(conf, "CoolDown")))
- skill->config_set_level(t, tmp_db.cooldown);
-
-#ifdef RENEWAL_CAST
- /* Fixed Casting Time */
- if ((t=libconfig->setting_get_member(conf, "FixedCastTime")))
- skill->config_set_level(t, tmp_db.fixed_cast);
-#endif
- /* Cast Time Options */
+ skill->validate_splash_range(conf, &tmp_db);
+ skill->validate_number_of_hits(conf, &tmp_db);
+ skill->validate_interrupt_cast(conf, &tmp_db);
+ skill->validate_cast_def_rate(conf, &tmp_db);
+ skill->validate_number_of_instances(conf, &tmp_db);
+ skill->validate_knock_back_tiles(conf, &tmp_db);
+ skill->validate_cast_time(conf, &tmp_db);
+ skill->validate_act_delay(conf, &tmp_db);
+ skill->validate_walk_delay(conf, &tmp_db);
+ skill->validate_skill_data1(conf, &tmp_db);
+ skill->validate_skill_data2(conf, &tmp_db);
+ skill->validate_cooldown(conf, &tmp_db);
+ skill->validate_fixed_cast_time(conf, &tmp_db);
skill->validate_castnodex(conf, &tmp_db, false);
skill->validate_castnodex(conf, &tmp_db, true);
+ skill->validate_requirements(conf, &tmp_db);
+ skill->validate_unit(conf, &tmp_db);
- /**
- * Skill Requirements data handling
- */
- if ((t=libconfig->setting_get_member(conf, "Requirements")) && config_setting_is_group(t)) {
-
- /* HP Costs */
- if ((tt = libconfig->setting_get_member(t, "HPCost")))
- skill->config_set_level(tt, tmp_db.hp);
-
- /* Max HP Trigger */
- if ((tt = libconfig->setting_get_member(t, "MaxHPTrigger")))
- skill->config_set_level(tt, tmp_db.mhp);
-
- /* SP Cost */
- if ((tt = libconfig->setting_get_member(t, "SPCost")))
- skill->config_set_level(tt, tmp_db.sp);
-
- /* HP Rate */
- if ((tt = libconfig->setting_get_member(t, "HPRateCost")))
- skill->config_set_level(tt, tmp_db.hp_rate);
-
- /* SP Rate */
- if ((tt = libconfig->setting_get_member(t, "SPRateCost")))
- skill->config_set_level(tt, tmp_db.sp_rate);
-
- /* Zeny Cost */
- if ((tt = libconfig->setting_get_member(t, "ZenyCost")))
- skill->config_set_level(tt, tmp_db.zeny);
-
- /* Spirit Sphere Cost */
- if ((tt = libconfig->setting_get_member(t, "SpiritSphereCost")))
- skill->config_set_level(tt, tmp_db.spiritball);
-
- /* Weapon Types */
- skill->validate_weapontype(t, &tmp_db);
-
- /* Ammunition Types */
- skill->validate_ammotype(t, &tmp_db);
-
- /* Ammunition Amount */
- if ((tt = libconfig->setting_get_member(t, "AmmoAmount")))
- skill->config_set_level(tt, tmp_db.ammo_qty);
-
- /* State */
- skill->validate_state(t, &tmp_db);
-
- /* Spirit Sphere Cost */
- if ((tt = libconfig->setting_get_member(t, "SpiritSphereCost")))
- skill->config_set_level(tt, tmp_db.spiritball);
-
- /* Item Requirements and Amounts */
- skill->validate_item_requirements(t, &tmp_db);
- }
-
- /**
- * Skill Unit data handling
- */
- if ((t=libconfig->setting_get_member(conf, "Unit")) && config_setting_is_group(t)) {
-
- /* Unit IDs [1,2] */
- if ((tt=libconfig->setting_get_member(t, "Id")) && config_setting_is_array(tt)) {
- tmp_db.unit_id[0] = libconfig->setting_get_int_elem(tt, 0);
- tmp_db.unit_id[1] = libconfig->setting_get_int_elem(tt, 1);
- } else {
- libconfig->setting_lookup_int(t, "Id", &tmp_db.unit_id[0]);
- }
-
- /* Layout */
- if((tt=libconfig->setting_get_member(t, "Layout")))
- skill->config_set_level(tt, tmp_db.unit_layout_type);
-
- /* Range */
- if((tt=libconfig->setting_get_member(t, "Range")))
- skill->config_set_level(tt, tmp_db.unit_range);
-
- /* Interval */
- if(libconfig->setting_lookup_int(t, "Interval", &temp))
- tmp_db.unit_interval = temp;
-
- /* Flag */
- skill->validate_unit_flag(t, &tmp_db);
-
- /* Target */
- skill->validate_unit_target(t, &tmp_db);
- }
-
- /* Additional Fields for Plugins */
+ /** Validate additional fields for plugins. **/
skill->validate_additional_fields(conf, &tmp_db);
- // Validate the skill entry, add it to the duplicate array and increment count on success.
- if ((duplicate[idx] = skill->validate_skilldb(&tmp_db, filepath)))
- count++;
+ /** Add the skill. **/
+ skill->dbs->db[skill->get_index(tmp_db.nameid)] = tmp_db;
+ strdb_iput(skill->name2id_db, tmp_db.name, tmp_db.nameid);
+ script->set_constant2(tmp_db.name, tmp_db.nameid, false, false);
+ count++;
}
libconfig->destroy(&skilldb);
-
ShowStatus("Done reading '"CL_WHITE"%d"CL_RESET"' entries in '"CL_WHITE"%s"CL_RESET"'.\n", count, filepath);
-
return true;
}
-#undef skilldb_duplicate_warning
-#undef skilldb_invalid_error
-
/*===============================
* DB reading.
* produce_db.txt
@@ -21562,13 +23999,19 @@ void skill_defaults(void)
skill->get_splash = skill_get_splash;
skill->get_hp = skill_get_hp;
skill->get_mhp = skill_get_mhp;
+ skill->get_msp = skill_get_msp;
skill->get_sp = skill_get_sp;
skill->get_hp_rate = skill_get_hp_rate;
skill->get_sp_rate = skill_get_sp_rate;
skill->get_state = skill_get_state;
skill->get_spiritball = skill_get_spiritball;
+ skill->get_item_index = skill_get_item_index;
skill->get_itemid = skill_get_itemid;
skill->get_itemqty = skill_get_itemqty;
+ skill->get_item_any_flag = skill_get_item_any_flag;
+ skill->get_equip_id = skill_get_equip_id;
+ skill->get_equip_amount = skill_get_equip_amount;
+ skill->get_equip_any_flag = skill_get_equip_any_flag;
skill->get_zeny = skill_get_zeny;
skill->get_num = skill_get_num;
skill->get_cast = skill_get_cast;
@@ -21627,9 +24070,12 @@ void skill_defaults(void)
skill->cast_fix_sc = skill_castfix_sc;
skill->vf_cast_fix = skill_vfcastfix;
skill->delay_fix = skill_delay_fix;
- skill->is_item_skill = skill_is_item_skill;
+ skill->check_condition_required_equip = skill_check_condition_required_equip;
skill->check_condition_castbegin = skill_check_condition_castbegin;
+ skill->check_condition_required_items = skill_check_condition_required_items;
+ skill->items_required = skill_items_required;
skill->check_condition_castend = skill_check_condition_castend;
+ skill->get_any_item_index = skill_get_any_item_index;
skill->consume_requirement = skill_consume_requirement;
skill->get_requirement = skill_get_requirement;
skill->check_pc_partner = skill_check_pc_partner;
@@ -21653,6 +24099,7 @@ void skill_defaults(void)
skill->not_ok_hom = skillnotok_hom;
skill->not_ok_hom_unknown = skillnotok_hom_unknown;
skill->not_ok_mercenary = skillnotok_mercenary;
+ skill->validate_autocast_data = skill_validate_autocast_data;
skill->chastle_mob_changetarget = skill_chastle_mob_changetarget;
skill->can_produce_mix = skill_can_produce_mix;
skill->produce_mix = skill_produce_mix;
@@ -21713,24 +24160,68 @@ void skill_defaults(void)
skill->init_unit_layout = skill_init_unit_layout;
skill->init_unit_layout_unknown = skill_init_unit_layout_unknown;
/* Skill DB Libconfig */
+ skill->validate_id = skill_validate_id;
+ skill->name_contains_invalid_character = skill_name_contains_invalid_character;
+ skill->validate_name = skill_validate_name;
+ skill->validate_max_level = skill_validate_max_level;
+ skill->validate_description = skill_validate_description;
+ skill->validate_range = skill_validate_range;
skill->validate_hittype = skill_validate_hittype;
- skill->validate_attacktype = skill_validate_attacktype;
- skill->validate_element = skill_validate_element;
skill->validate_skilltype = skill_validate_skilltype;
skill->validate_skillinfo = skill_validate_skillinfo;
+ skill->validate_attacktype = skill_validate_attacktype;
+ skill->validate_element = skill_validate_element;
skill->validate_damagetype = skill_validate_damagetype;
+ skill->validate_splash_range = skill_validate_splash_range;
+ skill->validate_number_of_hits = skill_validate_number_of_hits;
+ skill->validate_interrupt_cast = skill_validate_interrupt_cast;
+ skill->validate_cast_def_rate = skill_validate_cast_def_rate;
+ skill->validate_number_of_instances = skill_validate_number_of_instances;
+ skill->validate_knock_back_tiles = skill_validate_knock_back_tiles;
+ skill->validate_cast_time = skill_validate_cast_time;
+ skill->validate_act_delay = skill_validate_act_delay;
+ skill->validate_walk_delay = skill_validate_walk_delay;
+ skill->validate_skill_data1 = skill_validate_skill_data1;
+ skill->validate_skill_data2 = skill_validate_skill_data2;
+ skill->validate_cooldown = skill_validate_cooldown;
+ skill->validate_fixed_cast_time = skill_validate_fixed_cast_time;
skill->validate_castnodex = skill_validate_castnodex;
+ skill->validate_hp_cost = skill_validate_hp_cost;
+ skill->validate_sp_cost = skill_validate_sp_cost;
+ skill->validate_hp_rate_cost = skill_validate_hp_rate_cost;
+ skill->validate_sp_rate_cost = skill_validate_sp_rate_cost;
+ skill->validate_max_hp_trigger = skill_validate_max_hp_trigger;
+ skill->validate_max_sp_trigger = skill_validate_max_sp_trigger;
+ skill->validate_zeny_cost = skill_validate_zeny_cost;
+ skill->validate_weapontype_sub = skill_validate_weapontype_sub;
skill->validate_weapontype = skill_validate_weapontype;
+ skill->validate_ammotype_sub = skill_validate_ammotype_sub;
skill->validate_ammotype = skill_validate_ammotype;
+ skill->validate_ammo_amount = skill_validate_ammo_amount;
+ skill->validate_state_sub = skill_validate_state_sub;
skill->validate_state = skill_validate_state;
+ skill->validate_spirit_sphere_cost = skill_validate_spirit_sphere_cost;
+ skill->validate_item_requirements_sub_item_amount = skill_validate_item_requirements_sub_item_amount;
+ skill->validate_item_requirements_sub_items = skill_validate_item_requirements_sub_items;
+ skill->validate_item_requirements_sub_any_flag = skill_validate_item_requirements_sub_any_flag;
skill->validate_item_requirements = skill_validate_item_requirements;
- skill->validate_unit_target = skill_validate_unit_target;
+ skill->validate_equip_requirements_sub_item_amount = skill_validate_equip_requirements_sub_item_amount;
+ skill->validate_equip_requirements_sub_items = skill_validate_equip_requirements_sub_items;
+ skill->validate_equip_requirements_sub_any_flag = skill_validate_equip_requirements_sub_any_flag;
+ skill->validate_equip_requirements = skill_validate_equip_requirements;
+ skill->validate_requirements_item_name = skill_validate_requirements_item_name;
+ skill->validate_requirements = skill_validate_requirements;
+ skill->validate_unit_id_sub = skill_validate_unit_id_sub;
+ skill->validate_unit_id = skill_validate_unit_id;
+ skill->validate_unit_layout = skill_validate_unit_layout;
+ skill->validate_unit_range = skill_validate_unit_range;
+ skill->validate_unit_interval = skill_validate_unit_interval;
+ skill->validate_unit_flag_sub = skill_validate_unit_flag_sub;
skill->validate_unit_flag = skill_validate_unit_flag;
+ skill->validate_unit_target_sub = skill_validate_unit_target_sub;
+ skill->validate_unit_target = skill_validate_unit_target;
+ skill->validate_unit = skill_validate_unit;
skill->validate_additional_fields = skill_validate_additional_fields;
- skill->validate_skilldb = skill_validate_skilldb;
- skill->validate_weapontype_sub = skill_validate_weapontype_sub;
- skill->validate_ammotype_sub = skill_validate_ammotype_sub;
- skill->validate_unit_flag_sub = skill_validate_unit_flag_sub;
skill->read_skilldb = skill_read_skilldb;
skill->config_set_level = skill_config_set_level;
skill->level_set_value = skill_level_set_value;
@@ -21793,4 +24284,5 @@ void skill_defaults(void)
skill->splash_target = skill_splash_target;
skill->check_npc_chaospanic = skill_check_npc_chaospanic;
skill->count_wos = skill_count_wos;
+ skill->get_linked_song_dance_id = skill_get_linked_song_dance_id;
}
diff --git a/src/map/skill.h b/src/map/skill.h
index eff9ed7fc..fdeaefe01 100644
--- a/src/map/skill.h
+++ b/src/map/skill.h
@@ -23,6 +23,7 @@
#include "map/map.h" // struct block_list
#include "map/status.h" // enum sc_type
+#include "map/unitdefines.h" // enum unit_dir
#include "common/hercules.h"
#include "common/db.h"
#include "common/mmo.h" // MAX_SKILL_DB, struct square
@@ -49,7 +50,7 @@ struct status_change_entry;
#define MAX_ARROW_RESOURCE 5
#define MAX_SKILL_ABRA_DB 210
#define MAX_SKILL_IMPROVISE_DB 30
-#define MAX_SKILL_LEVEL 10
+#define MAX_SKILL_LEVEL 20
#define MAX_SKILL_UNIT_LAYOUT 45
#define MAX_SQUARE_LAYOUT 5 // 11*11 Placement of a maximum unit
#define MAX_SKILL_UNIT_COUNT ((MAX_SQUARE_LAYOUT*2+1)*(MAX_SQUARE_LAYOUT*2+1))
@@ -59,6 +60,10 @@ struct status_change_entry;
#define MAX_SKILLUNITGROUPTICKSET 25
#define MAX_SKILL_NAME_LENGTH 32
+#ifndef MAX_SKILL_DESC_LENGTH
+ #define MAX_SKILL_DESC_LENGTH 50
+#endif
+
// Custom Skill Ranges is used in skill_get_index, to allocate indexes based on ID and gaps between 2 SkillID
#ifndef CUSTOM_SKILL_RANGES
#define CUSTOM_SKILL_RANGES
@@ -1723,41 +1728,83 @@ enum {
UNT_MAX = 0x190
};
+/** Constants to identify the auto-cast type. **/
+enum autocast_type {
+ AUTOCAST_NONE = 0,
+ AUTOCAST_TEMP, // Used when type is only required during the execution of the calling instance. (For example bAutoSpell* skills.)
+ AUTOCAST_ABRA, // Used for Abracadabra (Hocus pocus).
+ AUTOCAST_IMPROVISE, // Used for Improvised Song.
+ AUTOCAST_ITEM, // Used for itemskill() script command.
+};
+
+/** Constants for allowed skill use while interacting with NPC. **/
+enum skill_enabled_npc_flags {
+ SKILLENABLEDNPC_NONE = 0, //!< Don't allow using any skills while interacting with NPC.
+ SKILLENABLEDNPC_SELF = 1, //!< Allow using non-damaging self skills while interacting with NPC.
+ SKILLENABLEDNPC_ALL = 2, //!< Allow using all skills while interacting with NPC.
+};
+
/**
* Structures
**/
+/** A container holding all required items. **/
+struct skill_required_item_data {
+ struct {
+ int id;
+ int amount[MAX_SKILL_LEVEL];
+ } item[MAX_SKILL_ITEM_REQUIRE];
+ bool any[MAX_SKILL_LEVEL];
+};
+
struct skill_condition {
int weapon,ammo,ammo_qty,hp,sp,zeny,spiritball,mhp,state;
+ int msp;
int itemid[MAX_SKILL_ITEM_REQUIRE],amount[MAX_SKILL_ITEM_REQUIRE];
+ int equip_id[MAX_SKILL_ITEM_REQUIRE];
+ int equip_amount[MAX_SKILL_ITEM_REQUIRE];
};
// Database skills
struct s_skill_db {
int nameid;
- char name[MAX_SKILL_NAME_LENGTH];
- char desc[40];
- int range[MAX_SKILL_LEVEL],hit,inf,element[MAX_SKILL_LEVEL],nk,splash[MAX_SKILL_LEVEL],max;
+ char name[MAX_SKILL_NAME_LENGTH + 1];
+ char desc[MAX_SKILL_DESC_LENGTH + 1];
+ int range[MAX_SKILL_LEVEL];
+ int hit[MAX_SKILL_LEVEL];
+ int inf;
+ int element[MAX_SKILL_LEVEL];
+ int nk;
+ int splash[MAX_SKILL_LEVEL];
+ int max;
int num[MAX_SKILL_LEVEL];
int cast[MAX_SKILL_LEVEL],walkdelay[MAX_SKILL_LEVEL],delay[MAX_SKILL_LEVEL];
#ifdef RENEWAL_CAST
int fixed_cast[MAX_SKILL_LEVEL];
#endif
int upkeep_time[MAX_SKILL_LEVEL],upkeep_time2[MAX_SKILL_LEVEL],cooldown[MAX_SKILL_LEVEL];
- int castcancel,cast_def_rate;
- int inf2,maxcount[MAX_SKILL_LEVEL],skill_type;
+ int castcancel[MAX_SKILL_LEVEL];
+ int cast_def_rate[MAX_SKILL_LEVEL];
+ int inf2;
+ int maxcount[MAX_SKILL_LEVEL];
+ int skill_type[MAX_SKILL_LEVEL];
int blewcount[MAX_SKILL_LEVEL];
int hp[MAX_SKILL_LEVEL],sp[MAX_SKILL_LEVEL],mhp[MAX_SKILL_LEVEL],hp_rate[MAX_SKILL_LEVEL],sp_rate[MAX_SKILL_LEVEL],zeny[MAX_SKILL_LEVEL];
- int weapon,ammo,ammo_qty[MAX_SKILL_LEVEL],state,spiritball[MAX_SKILL_LEVEL];
- int itemid[MAX_SKILL_ITEM_REQUIRE],amount[MAX_SKILL_ITEM_REQUIRE];
+ int msp[MAX_SKILL_LEVEL];
+ int weapon;
+ int ammo;
+ int ammo_qty[MAX_SKILL_LEVEL];
+ int state[MAX_SKILL_LEVEL];
+ int spiritball[MAX_SKILL_LEVEL];
int castnodex[MAX_SKILL_LEVEL], delaynodex[MAX_SKILL_LEVEL];
- int nocast;
- int unit_id[2];
+ int unit_id[MAX_SKILL_LEVEL][2];
int unit_layout_type[MAX_SKILL_LEVEL];
int unit_range[MAX_SKILL_LEVEL];
- int unit_interval;
- int unit_target;
+ int unit_interval[MAX_SKILL_LEVEL];
+ int unit_target[MAX_SKILL_LEVEL];
int unit_flag;
+ struct skill_required_item_data req_items;
+ struct skill_required_item_data req_equip;
};
struct s_skill_unit_layout {
@@ -1943,8 +1990,8 @@ struct skill_interface {
int unit_group_newid;
/* accesssors */
int (*get_index) (int skill_id);
- int (*get_type) (int skill_id);
- int (*get_hit) (int skill_id);
+ int (*get_type) (int skill_id, int skill_lv);
+ int (*get_hit) (int skill_id, int skill_lv);
int (*get_inf) (int skill_id);
int (*get_ele) (int skill_id, int skill_lv);
int (*get_nk) (int skill_id);
@@ -1954,13 +2001,19 @@ struct skill_interface {
int (*get_splash) (int skill_id, int skill_lv);
int (*get_hp) (int skill_id, int skill_lv);
int (*get_mhp) (int skill_id, int skill_lv);
+ int (*get_msp) (int skill_id, int skill_lv);
int (*get_sp) (int skill_id, int skill_lv);
int (*get_hp_rate) (int skill_id, int skill_lv);
int (*get_sp_rate) (int skill_id, int skill_lv);
- int (*get_state) (int skill_id);
+ int (*get_state) (int skill_id, int skill_lv);
int (*get_spiritball) (int skill_id, int skill_lv);
+ int (*get_item_index) (int skill_id, int skill_lv);
int (*get_itemid) (int skill_id, int item_idx);
- int (*get_itemqty) (int skill_id, int item_idx);
+ int (*get_itemqty) (int skill_id, int item_idx, int skill_lv);
+ bool (*get_item_any_flag) (int skill_id, int skill_lv);
+ int (*get_equip_id) (int skill_id, int item_idx);
+ int (*get_equip_amount) (int skill_id, int item_idx, int skill_lv);
+ bool (*get_equip_any_flag) (int skill_id, int skill_lv);
int (*get_zeny) (int skill_id, int skill_lv);
int (*get_num) (int skill_id, int skill_lv);
int (*get_cast) (int skill_id, int skill_lv);
@@ -1970,19 +2023,19 @@ struct skill_interface {
int (*get_time2) (int skill_id, int skill_lv);
int (*get_castnodex) (int skill_id, int skill_lv);
int (*get_delaynodex) (int skill_id, int skill_lv);
- int (*get_castdef) (int skill_id);
+ int (*get_castdef) (int skill_id, int skill_lv);
int (*get_weapontype) (int skill_id);
int (*get_ammotype) (int skill_id);
int (*get_ammo_qty) (int skill_id, int skill_lv);
- int (*get_unit_id) (int skill_id, int flag);
+ int (*get_unit_id) (int skill_id, int skill_lv, int flag);
int (*get_inf2) (int skill_id);
- int (*get_castcancel) (int skill_id);
+ int (*get_castcancel) (int skill_id, int skill_lv);
int (*get_maxcount) (int skill_id, int skill_lv);
int (*get_blewcount) (int skill_id, int skill_lv);
int (*get_unit_flag) (int skill_id);
- int (*get_unit_target) (int skill_id);
- int (*get_unit_interval) (int skill_id);
- int (*get_unit_bl_target) (int skill_id);
+ int (*get_unit_target) (int skill_id, int skill_lv);
+ int (*get_unit_interval) (int skill_id, int skill_lv);
+ int (*get_unit_bl_target) (int skill_id, int skill_lv);
int (*get_unit_layout_type) (int skill_id, int skill_lv);
int (*get_unit_range) (int skill_id, int skill_lv);
int (*get_cooldown) (int skill_id, int skill_lv);
@@ -1994,7 +2047,7 @@ struct skill_interface {
int (*get_casttype2) (int index);
bool (*is_combo) (int skill_id);
int (*name2id) (const char* name);
- int (*isammotype) (struct map_session_data *sd, int skill_id);
+ int (*isammotype) (struct map_session_data *sd, int skill_id, int skill_lv);
int (*castend_id) (int tid, int64 tick, int id, intptr_t data);
int (*castend_pos) (int tid, int64 tick, int id, intptr_t data);
int (*castend_map) ( struct map_session_data *sd,uint16 skill_id, const char *mapname);
@@ -2002,7 +2055,7 @@ struct skill_interface {
int (*addtimerskill) (struct block_list *src, int64 tick, int target, int x, int y, uint16 skill_id, uint16 skill_lv, int type, int flag);
int (*additional_effect) (struct block_list* src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int attack_type, int dmg_lv, int64 tick);
int (*counter_additional_effect) (struct block_list* src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int attack_type, int64 tick);
- int (*blown) (struct block_list* src, struct block_list* target, int count, int8 dir, int flag);
+ int (*blown) (struct block_list* src, struct block_list* target, int count, enum unit_dir dir, int flag);
int (*break_equip) (struct block_list *bl, unsigned short where, int rate, int flag);
int (*strip_equip) (struct block_list *bl, unsigned short where, int rate, int lv, int time);
struct skill_unit_group* (*id2group) (int group_id);
@@ -2010,7 +2063,7 @@ struct skill_interface {
struct skill_unit *(*initunit) (struct skill_unit_group *group, int idx, int x, int y, int val1, int val2);
int (*delunit) (struct skill_unit *su);
struct skill_unit_group *(*init_unitgroup) (struct block_list* src, int count, uint16 skill_id, uint16 skill_lv, int unit_id, int limit, int interval);
- int (*del_unitgroup) (struct skill_unit_group *group, const char* file, int line, const char* func);
+ int (*del_unitgroup) (struct skill_unit_group *group);
int (*clear_unitgroup) (struct block_list *src);
int (*clear_group) (struct block_list *bl, int flag);
int (*unit_onplace) (struct skill_unit *src, struct block_list *bl, int64 tick);
@@ -2019,9 +2072,12 @@ struct skill_interface {
int (*cast_fix_sc) ( struct block_list *bl, int time);
int (*vf_cast_fix) ( struct block_list *bl, double time, uint16 skill_id, uint16 skill_lv);
int (*delay_fix) ( struct block_list *bl, uint16 skill_id, uint16 skill_lv);
- bool (*is_item_skill) (struct map_session_data *sd, int skill_id, int skill_lv);
+ int (*check_condition_required_equip) (struct map_session_data *sd, int skill_id, int skill_lv);
int (*check_condition_castbegin) (struct map_session_data *sd, uint16 skill_id, uint16 skill_lv);
+ int (*check_condition_required_items) (struct map_session_data *sd, int skill_id, int skill_lv);
+ bool (*items_required) (struct map_session_data *sd, int skill_id, int skill_lv);
int (*check_condition_castend) (struct map_session_data *sd, uint16 skill_id, uint16 skill_lv);
+ int (*get_any_item_index) (struct map_session_data *sd, int skill_id, int skill_lv);
int (*consume_requirement) (struct map_session_data *sd, uint16 skill_id, uint16 skill_lv, short type);
struct skill_condition (*get_requirement) (struct map_session_data *sd, uint16 skill_id, uint16 skill_lv);
int (*check_pc_partner) (struct map_session_data *sd, uint16 skill_id, uint16* skill_lv, int range, int cast_flag);
@@ -2045,6 +2101,7 @@ struct skill_interface {
int (*not_ok_hom) (uint16 skill_id, struct homun_data *hd);
int (*not_ok_hom_unknown) (uint16 skill_id, struct homun_data *hd);
int (*not_ok_mercenary) (uint16 skill_id, struct mercenary_data *md);
+ void (*validate_autocast_data) (struct map_session_data *sd, int skill_id, int skill_lv);
int (*chastle_mob_changetarget) (struct block_list *bl,va_list ap);
int (*can_produce_mix) ( struct map_session_data *sd, int nameid, int trigger, int qty);
int (*produce_mix) ( struct map_session_data *sd, uint16 skill_id, int nameid, int slot1, int slot2, int slot3, int qty );
@@ -2064,7 +2121,7 @@ struct skill_interface {
int (*check_unit_range_sub) (struct block_list *bl, va_list ap);
int (*check_unit_range2) (struct block_list *bl, int x, int y, uint16 skill_id, uint16 skill_lv);
int (*check_unit_range2_sub) (struct block_list *bl, va_list ap);
- void (*toggle_magicpower) (struct block_list *bl, uint16 skill_id);
+ void (*toggle_magicpower) (struct block_list *bl, uint16 skill_id, int skill_lv);
int (*magic_reflect) (struct block_list* src, struct block_list* bl, int type);
int (*onskillusage) (struct map_session_data *sd, struct block_list *bl, uint16 skill_id, int64 tick);
int (*cell_overlap) (struct block_list *bl, va_list ap);
@@ -2085,8 +2142,8 @@ struct skill_interface {
bool (*dance_switch) (struct skill_unit* su, int flag);
int (*check_condition_char_sub) (struct block_list *bl, va_list ap);
int (*check_condition_mob_master_sub) (struct block_list *bl, va_list ap);
- void (*brandishspear_first) (struct square *tc, uint8 dir, int16 x, int16 y);
- void (*brandishspear_dir) (struct square* tc, uint8 dir, int are);
+ void (*brandishspear_first) (struct square *tc, enum unit_dir dir, int16 x, int16 y);
+ void (*brandishspear_dir) (struct square* tc, enum unit_dir dir, int are);
int (*get_fixed_cast) (int skill_id, int skill_lv);
int (*sit_count) (struct block_list *bl, va_list ap);
int (*sit_in) (struct block_list *bl, va_list ap);
@@ -2105,24 +2162,68 @@ struct skill_interface {
int (*unit_timer_sub) (union DBKey key, struct DBData *data, va_list ap);
void (*init_unit_layout) (void);
void (*init_unit_layout_unknown) (int skill_idx, int pos);
+ void (*validate_id) (struct config_setting_t *conf, struct s_skill_db *sk, int conf_index);
+ bool (*name_contains_invalid_character) (const char *name);
+ void (*validate_name) (struct config_setting_t *conf, struct s_skill_db *sk);
+ void (*validate_max_level) (struct config_setting_t *conf, struct s_skill_db *sk);
+ void (*validate_description) (struct config_setting_t *conf, struct s_skill_db *sk);
+ void (*validate_range) (struct config_setting_t *conf, struct s_skill_db *sk);
void (*validate_hittype) (struct config_setting_t *conf, struct s_skill_db *sk);
void (*validate_skilltype) (struct config_setting_t *conf, struct s_skill_db *sk);
+ void (*validate_skillinfo) (struct config_setting_t *conf, struct s_skill_db *sk);
void (*validate_attacktype) (struct config_setting_t *conf, struct s_skill_db *sk);
void (*validate_element) (struct config_setting_t *conf, struct s_skill_db *sk);
- void (*validate_skillinfo) (struct config_setting_t *conf, struct s_skill_db *sk);
void (*validate_damagetype) (struct config_setting_t *conf, struct s_skill_db *sk);
+ void (*validate_splash_range) (struct config_setting_t *conf, struct s_skill_db *sk);
+ void (*validate_number_of_hits) (struct config_setting_t *conf, struct s_skill_db *sk);
+ void (*validate_interrupt_cast) (struct config_setting_t *conf, struct s_skill_db *sk);
+ void (*validate_cast_def_rate) (struct config_setting_t *conf, struct s_skill_db *sk);
+ void (*validate_number_of_instances) (struct config_setting_t *conf, struct s_skill_db *sk);
+ void (*validate_knock_back_tiles) (struct config_setting_t *conf, struct s_skill_db *sk);
+ void (*validate_cast_time) (struct config_setting_t *conf, struct s_skill_db *sk);
+ void (*validate_act_delay) (struct config_setting_t *conf, struct s_skill_db *sk);
+ void (*validate_walk_delay) (struct config_setting_t *conf, struct s_skill_db *sk);
+ void (*validate_skill_data1) (struct config_setting_t *conf, struct s_skill_db *sk);
+ void (*validate_skill_data2) (struct config_setting_t *conf, struct s_skill_db *sk);
+ void (*validate_cooldown) (struct config_setting_t *conf, struct s_skill_db *sk);
+ void (*validate_fixed_cast_time) (struct config_setting_t *conf, struct s_skill_db *sk);
void (*validate_castnodex) (struct config_setting_t *conf, struct s_skill_db *sk, bool delay);
+ void (*validate_hp_cost) (struct config_setting_t *conf, struct s_skill_db *sk);
+ void (*validate_sp_cost) (struct config_setting_t *conf, struct s_skill_db *sk);
+ void (*validate_hp_rate_cost) (struct config_setting_t *conf, struct s_skill_db *sk);
+ void (*validate_sp_rate_cost) (struct config_setting_t *conf, struct s_skill_db *sk);
+ void (*validate_max_hp_trigger) (struct config_setting_t *conf, struct s_skill_db *sk);
+ void (*validate_max_sp_trigger) (struct config_setting_t *conf, struct s_skill_db *sk);
+ void (*validate_zeny_cost) (struct config_setting_t *conf, struct s_skill_db *sk);
+ int (*validate_weapontype_sub) (const char *type, bool on, struct s_skill_db *sk);
void (*validate_weapontype) (struct config_setting_t *conf, struct s_skill_db *sk);
+ int (*validate_ammotype_sub) (const char *type, bool on, struct s_skill_db *sk);
void (*validate_ammotype) (struct config_setting_t *conf, struct s_skill_db *sk);
+ void (*validate_ammo_amount) (struct config_setting_t *conf, struct s_skill_db *sk);
+ int (*validate_state_sub) (const char *state);
void (*validate_state) (struct config_setting_t *conf, struct s_skill_db *sk);
+ void (*validate_spirit_sphere_cost) (struct config_setting_t *conf, struct s_skill_db *sk);
+ void (*validate_item_requirements_sub_item_amount) (struct config_setting_t *conf, struct s_skill_db *sk, int item_index);
+ void (*validate_item_requirements_sub_items) (struct config_setting_t *conf, struct s_skill_db *sk);
+ void (*validate_item_requirements_sub_any_flag) (struct config_setting_t *conf, struct s_skill_db *sk);
void (*validate_item_requirements) (struct config_setting_t *conf, struct s_skill_db *sk);
- void (*validate_unit_target) (struct config_setting_t *conf, struct s_skill_db *sk);
+ void (*validate_equip_requirements_sub_item_amount) (struct config_setting_t *conf, struct s_skill_db *sk, int item_index);
+ void (*validate_equip_requirements_sub_items) (struct config_setting_t *conf, struct s_skill_db *sk);
+ void (*validate_equip_requirements_sub_any_flag) (struct config_setting_t *conf, struct s_skill_db *sk);
+ void (*validate_equip_requirements) (struct config_setting_t *conf, struct s_skill_db *sk);
+ int (*validate_requirements_item_name) (const char *name);
+ void (*validate_requirements) (struct config_setting_t *conf, struct s_skill_db *sk);
+ int (*validate_unit_id_sub) (int unit_id);
+ void (*validate_unit_id) (struct config_setting_t *conf, struct s_skill_db *sk);
+ void (*validate_unit_layout) (struct config_setting_t *conf, struct s_skill_db *sk);
+ void (*validate_unit_range) (struct config_setting_t *conf, struct s_skill_db *sk);
+ void (*validate_unit_interval) (struct config_setting_t *conf, struct s_skill_db *sk);
+ int (*validate_unit_flag_sub) (const char *type, bool on, struct s_skill_db *sk);
void (*validate_unit_flag) (struct config_setting_t *conf, struct s_skill_db *sk);
+ int (*validate_unit_target_sub) (const char *target);
+ void (*validate_unit_target) (struct config_setting_t *conf, struct s_skill_db *sk);
+ void (*validate_unit) (struct config_setting_t *conf, struct s_skill_db *sk);
void (*validate_additional_fields) (struct config_setting_t *conf, struct s_skill_db *sk);
- bool (*validate_skilldb) (struct s_skill_db *skt, const char *source);
- int (*validate_weapontype_sub) (const char *type, bool on, struct s_skill_db *sk);
- int (*validate_ammotype_sub) (const char *type, bool on, struct s_skill_db *sk);
- int (*validate_unit_flag_sub) (const char *type, bool on, struct s_skill_db *sk);
bool (*read_skilldb) (const char *filename);
void (*config_set_level) (struct config_setting_t *conf, int *arr);
void (*level_set_value) (int *arr, int value);
@@ -2163,7 +2264,7 @@ struct skill_interface {
void (*attack_display_unknown) (int *attack_type, struct block_list* src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, int *type, struct Damage *dmg, int64 *damage);
int (*attack_copy_unknown) (int *attack_type, struct block_list* src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag);
int (*attack_dir_unknown) (int *attack_type, struct block_list* src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag);
- void (*attack_blow_unknown) (int *attack_type, struct block_list* src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, int *type, struct Damage *dmg, int64 *damage, int8 *dir);
+ void (*attack_blow_unknown) (int *attack_type, struct block_list* src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, int *type, struct Damage *dmg, int64 *damage, enum unit_dir *dir);
void (*attack_post_unknown) (int *attack_type, struct block_list* src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag);
bool (*timerskill_dead_unknown) (struct block_list *src, struct unit_data *ud, struct skill_timerskill *skl);
void (*timerskill_target_unknown) (int tid, int64 tick, struct block_list *src, struct block_list *target, struct unit_data *ud, struct skill_timerskill *skl);
@@ -2190,6 +2291,7 @@ struct skill_interface {
int (*splash_target) (struct block_list* bl);
int (*check_npc_chaospanic) (struct block_list *bl, va_list args);
int (*count_wos) (struct block_list *bl, va_list ap);
+ int (*get_linked_song_dance_id) (int skill_id);
};
#ifdef HERCULES_CORE
diff --git a/src/map/status.c b/src/map/status.c
index 1f0f31119..589acff5c 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -696,6 +696,7 @@ static void initChangeTables(void)
status->set_sc( WM_BEYOND_OF_WARCRY , SC_BEYOND_OF_WARCRY , SCB_STR|SCB_CRI|SCB_MAXHP );
status->set_sc( WM_UNLIMITED_HUMMING_VOICE, SC_UNLIMITED_HUMMING_VOICE, SCB_NONE );
status->set_sc( WM_FRIGG_SONG , SC_FRIGG_SONG , SCB_MAXHP );
+ status->set_sc( WM_SEVERE_RAINSTORM , SC_NO_SWITCH_EQUIP , SCB_NONE );
/**
* Sorcerer
@@ -801,21 +802,21 @@ static void initChangeTables(void)
set_sc_with_vfx( GN_ILLUSIONDOPING , SC_ILLUSIONDOPING , SCB_HIT );
// Storing the target job rather than simply SC_SOULLINK simplifies code later on.
- status->dbs->Skill2SCTable[SL_ALCHEMIST] = (sc_type)MAPID_ALCHEMIST,
- status->dbs->Skill2SCTable[SL_MONK] = (sc_type)MAPID_MONK,
- status->dbs->Skill2SCTable[SL_STAR] = (sc_type)MAPID_STAR_GLADIATOR,
- status->dbs->Skill2SCTable[SL_SAGE] = (sc_type)MAPID_SAGE,
- status->dbs->Skill2SCTable[SL_CRUSADER] = (sc_type)MAPID_CRUSADER,
- status->dbs->Skill2SCTable[SL_SUPERNOVICE] = (sc_type)MAPID_SUPER_NOVICE,
- status->dbs->Skill2SCTable[SL_KNIGHT] = (sc_type)MAPID_KNIGHT,
- status->dbs->Skill2SCTable[SL_WIZARD] = (sc_type)MAPID_WIZARD,
- status->dbs->Skill2SCTable[SL_PRIEST] = (sc_type)MAPID_PRIEST,
- status->dbs->Skill2SCTable[SL_BARDDANCER] = (sc_type)MAPID_BARDDANCER,
- status->dbs->Skill2SCTable[SL_ROGUE] = (sc_type)MAPID_ROGUE,
- status->dbs->Skill2SCTable[SL_ASSASIN] = (sc_type)MAPID_ASSASSIN,
- status->dbs->Skill2SCTable[SL_BLACKSMITH] = (sc_type)MAPID_BLACKSMITH,
- status->dbs->Skill2SCTable[SL_HUNTER] = (sc_type)MAPID_HUNTER,
- status->dbs->Skill2SCTable[SL_SOULLINKER] = (sc_type)MAPID_SOUL_LINKER,
+ status->dbs->Skill2SCTable[skill->get_index(SL_ALCHEMIST)] = (sc_type)MAPID_ALCHEMIST,
+ status->dbs->Skill2SCTable[skill->get_index(SL_MONK)] = (sc_type)MAPID_MONK,
+ status->dbs->Skill2SCTable[skill->get_index(SL_STAR)] = (sc_type)MAPID_STAR_GLADIATOR,
+ status->dbs->Skill2SCTable[skill->get_index(SL_SAGE)] = (sc_type)MAPID_SAGE,
+ status->dbs->Skill2SCTable[skill->get_index(SL_CRUSADER)] = (sc_type)MAPID_CRUSADER,
+ status->dbs->Skill2SCTable[skill->get_index(SL_SUPERNOVICE)] = (sc_type)MAPID_SUPER_NOVICE,
+ status->dbs->Skill2SCTable[skill->get_index(SL_KNIGHT)] = (sc_type)MAPID_KNIGHT,
+ status->dbs->Skill2SCTable[skill->get_index(SL_WIZARD)] = (sc_type)MAPID_WIZARD,
+ status->dbs->Skill2SCTable[skill->get_index(SL_PRIEST)] = (sc_type)MAPID_PRIEST,
+ status->dbs->Skill2SCTable[skill->get_index(SL_BARDDANCER)] = (sc_type)MAPID_BARDDANCER,
+ status->dbs->Skill2SCTable[skill->get_index(SL_ROGUE)] = (sc_type)MAPID_ROGUE,
+ status->dbs->Skill2SCTable[skill->get_index(SL_ASSASIN)] = (sc_type)MAPID_ASSASSIN,
+ status->dbs->Skill2SCTable[skill->get_index(SL_BLACKSMITH)] = (sc_type)MAPID_BLACKSMITH,
+ status->dbs->Skill2SCTable[skill->get_index(SL_HUNTER)] = (sc_type)MAPID_HUNTER,
+ status->dbs->Skill2SCTable[skill->get_index(SL_SOULLINKER)] = (sc_type)MAPID_SOUL_LINKER,
// Other SC which are not necessarily associated to skills.
status->dbs->ChangeFlagTable[SC_ATTHASTE_POTION1] |= SCB_ASPD;
@@ -865,6 +866,10 @@ static void initChangeTables(void)
status->dbs->ChangeFlagTable[SC_WEDDING] |= SCB_SPEED;
status->dbs->ChangeFlagTable[SC_ARMORPROPERTY] |= SCB_ALL;
status->dbs->ChangeFlagTable[SC_ARMOR_RESIST] |= SCB_ALL;
+ status->dbs->ChangeFlagTable[SC_RESIST_PROPERTY_WATER] |= SCB_ALL;
+ status->dbs->ChangeFlagTable[SC_RESIST_PROPERTY_GROUND] |= SCB_ALL;
+ status->dbs->ChangeFlagTable[SC_RESIST_PROPERTY_FIRE] |= SCB_ALL;
+ status->dbs->ChangeFlagTable[SC_RESIST_PROPERTY_WIND] |= SCB_ALL;
status->dbs->ChangeFlagTable[SC_ATKER_BLOOD] |= SCB_ALL;
status->dbs->ChangeFlagTable[SC_WALKSPEED] |= SCB_SPEED;
status->dbs->ChangeFlagTable[SC_TARGET_BLOOD] |= SCB_ALL;
@@ -884,6 +889,13 @@ static void initChangeTables(void)
status->dbs->ChangeFlagTable[SC_PHI_DEMON] |= SCB_ALL;
status->dbs->ChangeFlagTable[SC_MAGIC_CANDY] |= SCB_MATK | SCB_ALL;
status->dbs->ChangeFlagTable[SC_MYSTICPOWDER] |= SCB_FLEE | SCB_LUK;
+ status->dbs->ChangeFlagTable[SC_POPECOOKIE] |= SCB_BASE | SCB_BATK | SCB_MATK;
+ status->dbs->ChangeFlagTable[SC_VITALIZE_POTION] |= SCB_BATK | SCB_MATK;
+ status->dbs->ChangeFlagTable[SC_SKF_MATK] |= SCB_MATK;
+ status->dbs->ChangeFlagTable[SC_SKF_ATK] |= SCB_BATK;
+ status->dbs->ChangeFlagTable[SC_SKF_ASPD] |= SCB_ASPD;
+ status->dbs->ChangeFlagTable[SC_SKF_CAST] |= SCB_NONE;
+ status->dbs->ChangeFlagTable[SC_ALMIGHTY] |= SCB_BATK | SCB_MATK;
// Cash Items
status->dbs->ChangeFlagTable[SC_FOOD_STR_CASH] |= SCB_STR;
@@ -1189,7 +1201,7 @@ static int status_damage(struct block_list *src, struct block_list *target, int6
if ((sce=sc->data[SC_GRAVITATION]) && sce->val3 == BCT_SELF) {
struct skill_unit_group* sg = skill->id2group(sce->val4);
if (sg) {
- skill->del_unitgroup(sg, ALC_MARK);
+ skill->del_unitgroup(sg);
sce->val4 = 0;
status_change_end(target, SC_GRAVITATION, INVALID_TIMER);
}
@@ -1584,7 +1596,7 @@ static int status_check_skilluse(struct block_list *src, struct block_list *targ
}
if( skill_id ) {
- if (src != NULL && (sd == NULL || sd->skillitem == 0)) {
+ if (src != NULL && (sd == NULL || sd->auto_cast_current.type != AUTOCAST_ITEM)) {
// Items that cast skills using 'itemskill' will not be handled by map_zone_db.
int i;
@@ -1628,7 +1640,7 @@ static int status_check_skilluse(struct block_list *src, struct block_list *targ
if (src != NULL
&& map->getcell(src->m, src, src->x, src->y, CELL_CHKLANDPROTECTOR)
&& !(st->mode&MD_BOSS)
- && (src->type != BL_PC || sd->skillitem != skill_id))
+ && (src->type != BL_PC || sd->auto_cast_current.type != AUTOCAST_ITEM))
return 0;
break;
default:
@@ -1707,7 +1719,7 @@ static int status_check_skilluse(struct block_list *src, struct block_list *targ
return 0; //Can't amp out of Wand of Hermode :/ [Skotlex]
}
- if (skill_id != 0 /* Do not block item-casted skills.*/ && (src->type != BL_PC || sd->skillitem != skill_id)) {
+ if (skill_id != 0 /* Do not block item-casted skills.*/ && (src->type != BL_PC || sd->auto_cast_current.type != AUTOCAST_ITEM)) {
//Skills blocked through status changes...
if (!flag && ( //Blocked only from using the skill (stuff like autospell may still go through
sc->data[SC_SILENCE] ||
@@ -1725,6 +1737,7 @@ static int status_check_skilluse(struct block_list *src, struct block_list *targ
(sc->data[SC_MARIONETTE] && skill_id == CG_MARIONETTE) || //Cannot use marionette if you are being buffed by another
(sc->data[SC_STASIS] && skill->block_check(src, SC_STASIS, skill_id)) ||
(sc->data[SC_KG_KAGEHUMI] && skill->block_check(src, SC_KG_KAGEHUMI, skill_id))
+ || sc->data[SC_ALL_RIDING] != NULL // New mounts can't attack nor use skills in the client; this check makes it cheat-safe. [Ind]
))
return 0;
@@ -1773,8 +1786,6 @@ static int status_check_skilluse(struct block_list *src, struct block_list *targ
} else if ( skill_id != ST_CHASEWALK )
return 0;
}
- if( sc->data[SC_ALL_RIDING] )
- return 0;//New mounts can't attack nor use skills in the client; this check makes it cheat-safe [Ind]
}
if (target == NULL || target == src) //No further checking needed.
@@ -2572,12 +2583,16 @@ static int status_calc_pc_(struct map_session_data *sd, enum e_status_calc_opt o
status->calc_pc_additional(sd, opt);
- if( sd->pd ) { // Pet Bonus
+ if (sd->pd != NULL) { // Pet bonus.
struct pet_data *pd = sd->pd;
- if( pd && pd->petDB && pd->petDB->equip_script && pd->pet.intimate >= battle_config.pet_equip_min_friendly )
- script->run(pd->petDB->equip_script,0,sd->bl.id,0);
- if( pd && pd->pet.intimate > 0 && (!battle_config.pet_equip_required || pd->pet.equip > 0) && pd->state.skillbonus == 1 && pd->bonus )
- pc->bonus(sd,pd->bonus->type, pd->bonus->val);
+
+ if (pd->petDB != NULL && pd->petDB->equip_script != NULL)
+ script->run(pd->petDB->equip_script, 0, sd->bl.id, 0);
+
+ if (pd->pet.intimate > PET_INTIMACY_NONE && pd->state.skillbonus == 1 && pd->bonus != NULL
+ && (battle_config.pet_equip_required == 0 || pd->pet.equip > 0)) {
+ pc->bonus(sd, pd->bonus->type, pd->bonus->val);
+ }
}
//param_bonus now holds card bonuses.
@@ -3018,6 +3033,22 @@ static int status_calc_pc_(struct map_session_data *sd, enum e_status_calc_opt o
sd->subele[ELE_FIRE] += sc->data[SC_ARMOR_RESIST]->val3;
sd->subele[ELE_WIND] += sc->data[SC_ARMOR_RESIST]->val4;
}
+ if (sc->data[SC_RESIST_PROPERTY_WATER] != NULL) { // Coldproof Potion
+ sd->subele[ELE_WATER] += sc->data[SC_RESIST_PROPERTY_WATER]->val1;
+ sd->subele[ELE_WIND] += sc->data[SC_RESIST_PROPERTY_WATER]->val2;
+ }
+ if (sc->data[SC_RESIST_PROPERTY_GROUND] != NULL) { // Earthproof Potion
+ sd->subele[ELE_EARTH] += sc->data[SC_RESIST_PROPERTY_GROUND]->val1;
+ sd->subele[ELE_FIRE] += sc->data[SC_RESIST_PROPERTY_GROUND]->val2;
+ }
+ if (sc->data[SC_RESIST_PROPERTY_FIRE] != NULL) { // Fireproof Potion
+ sd->subele[ELE_FIRE] += sc->data[SC_RESIST_PROPERTY_FIRE]->val1;
+ sd->subele[ELE_WATER] += sc->data[SC_RESIST_PROPERTY_FIRE]->val2;
+ }
+ if (sc->data[SC_RESIST_PROPERTY_WIND] != NULL) { // Thunderproof Potion
+ sd->subele[ELE_WIND] += sc->data[SC_RESIST_PROPERTY_WIND]->val1;
+ sd->subele[ELE_EARTH] += sc->data[SC_RESIST_PROPERTY_WIND]->val2;
+ }
if (sc->data[SC_FIRE_CLOAK_OPTION]) {
i = sc->data[SC_FIRE_CLOAK_OPTION]->val2;
sd->subele[ELE_FIRE] += i;
@@ -3038,6 +3069,18 @@ static int status_calc_pc_(struct map_session_data *sd, enum e_status_calc_opt o
sd->subele[ELE_EARTH] += i;
sd->subele[ELE_FIRE] -= i;
}
+ if (sc->data[SC_POPECOOKIE] != NULL) {
+ i = sc->data[SC_POPECOOKIE]->val3;
+ sd->subele[ELE_WATER] += i;
+ sd->subele[ELE_EARTH] += i;
+ sd->subele[ELE_FIRE] += i;
+ sd->subele[ELE_WIND] += i;
+ sd->subele[ELE_POISON] += i;
+ sd->subele[ELE_HOLY] += i;
+ sd->subele[ELE_DARK] += i;
+ sd->subele[ELE_GHOST] += i;
+ sd->subele[ELE_UNDEAD] += i;
+ }
if (sc->data[SC_MTF_MLEATKED])
sd->subele[ELE_NEUTRAL] += sc->data[SC_MTF_MLEATKED]->val1;
if (sc->data[SC_FIRE_INSIGNIA] && sc->data[SC_FIRE_INSIGNIA]->val1 == 3)
@@ -4801,6 +4844,10 @@ static int status_calc_batk(struct block_list *bl, struct status_change *sc, int
/* some statuses that are hidden in the status window */
if(sc->data[SC_PLUSATTACKPOWER])
batk += sc->data[SC_PLUSATTACKPOWER]->val1;
+ if (sc->data[SC_POPECOOKIE] != NULL)
+ batk += batk * sc->data[SC_POPECOOKIE]->val1 / 100;
+ if (sc->data[SC_VITALIZE_POTION] != NULL)
+ batk += batk * sc->data[SC_VITALIZE_POTION]->val1 / 100;
return cap_value(batk, battle_config.batk_min, battle_config.batk_max);
}
#ifndef RENEWAL
@@ -4880,6 +4927,10 @@ static int status_calc_batk(struct block_list *bl, struct status_change *sc, int
batk += batk * sc->data[SC_2011RWC]->val2 / 100;
if (sc->data[SC_STEAMPACK])
batk += sc->data[SC_STEAMPACK]->val1;
+ if (sc->data[SC_SKF_ATK] != NULL)
+ batk += sc->data[SC_SKF_ATK]->val1;
+ if (sc->data[SC_ALMIGHTY] != NULL)
+ batk += sc->data[SC_ALMIGHTY]->val1;
if (sc->data[SC_SHRIMP])
batk += batk * sc->data[SC_SHRIMP]->val2 / 100;
@@ -5020,6 +5071,10 @@ static int status_calc_matk(struct block_list *bl, struct status_change *sc, int
/* some statuses that are hidden in the status window */
if (sc->data[SC_MINDBREAKER])
matk += matk * sc->data[SC_MINDBREAKER]->val2 / 100;
+ if (sc->data[SC_POPECOOKIE] != NULL)
+ matk += matk * sc->data[SC_POPECOOKIE]->val2 / 100;
+ if (sc->data[SC_VITALIZE_POTION] != NULL)
+ matk += matk * sc->data[SC_VITALIZE_POTION]->val2 / 100;
return cap_value(matk, battle_config.matk_min, battle_config.matk_max);
}
@@ -5077,6 +5132,10 @@ static int status_calc_matk(struct block_list *bl, struct status_change *sc, int
matk += matk * sc->data[SC_2011RWC]->val2 / 100;
if (sc->data[SC_MAGIC_CANDY])
matk += sc->data[SC_MAGIC_CANDY]->val1;
+ if (sc->data[SC_SKF_MATK] != NULL)
+ matk += sc->data[SC_SKF_MATK]->val1;
+ if (sc->data[SC_ALMIGHTY] != NULL)
+ matk += sc->data[SC_ALMIGHTY]->val2;
return cap_value(matk, battle_config.matk_min, battle_config.matk_max);
}
@@ -5901,6 +5960,8 @@ static short status_calc_aspd(struct block_list *bl, struct status_change *sc, s
bonus += sc->data[SC_BATTLESCROLL]->val1;
if (sc->data[SC_STEAMPACK])
bonus += sc->data[SC_STEAMPACK]->val2;
+ if (sc->data[SC_SKF_ASPD] != NULL)
+ bonus += sc->data[SC_SKF_ASPD]->val1;
}
return (bonus + pots);
@@ -6068,6 +6129,8 @@ static short status_calc_aspd_rate(struct block_list *bl, struct status_change *
aspd_rate += sc->data[SC_BATTLESCROLL]->val1 * 10;
if (sc->data[SC_STEAMPACK])
aspd_rate += sc->data[SC_STEAMPACK]->val2 * 10;
+ if (sc->data[SC_SKF_ASPD] != NULL)
+ aspd_rate -= sc->data[SC_SKF_ASPD]->val1 * 10;
return (short)cap_value(aspd_rate,0,SHRT_MAX);
}
@@ -6344,13 +6407,24 @@ static int status_get_class(const struct block_list *bl)
{
nullpo_ret(bl);
switch (bl->type) {
- case BL_PC: return BL_UCCAST(BL_PC, bl)->status.class;
- case BL_MOB: return BL_UCCAST(BL_MOB, bl)->vd->class; //Class used on all code should be the view class of the mob.
- case BL_PET: return BL_UCCAST(BL_PET, bl)->pet.class_;
- case BL_HOM: return BL_UCCAST(BL_HOM, bl)->homunculus.class_;
- case BL_MER: return BL_UCCAST(BL_MER, bl)->mercenary.class_;
- case BL_NPC: return BL_UCCAST(BL_NPC, bl)->class_;
- case BL_ELEM: return BL_UCCAST(BL_ELEM, bl)->elemental.class_;
+ case BL_PC:
+ return BL_UCCAST(BL_PC, bl)->status.class;
+ case BL_MOB:
+ {
+ const struct view_data *const vd = BL_UCCAST(BL_MOB, bl)->vd;
+ nullpo_ret(vd);
+ return vd->class; //Class used on all code should be the view class of the mob.
+ }
+ case BL_PET:
+ return BL_UCCAST(BL_PET, bl)->pet.class_;
+ case BL_HOM:
+ return BL_UCCAST(BL_HOM, bl)->homunculus.class_;
+ case BL_MER:
+ return BL_UCCAST(BL_MER, bl)->mercenary.class_;
+ case BL_NPC:
+ return BL_UCCAST(BL_NPC, bl)->class_;
+ case BL_ELEM:
+ return BL_UCCAST(BL_ELEM, bl)->elemental.class_;
}
return 0;
}
@@ -6440,7 +6514,7 @@ static defType status_get_def(struct block_list *bl)
int def = st ? st->def : 0;
ud = unit->bl2ud(bl);
if (ud && ud->skilltimer != INVALID_TIMER)
- def -= def * skill->get_castdef(ud->skill_id)/100;
+ def -= def * skill->get_castdef(ud->skill_id, ud->skill_lv) / 100;
return cap_value(def, DEFTYPE_MIN, DEFTYPE_MAX);
}
@@ -7710,6 +7784,10 @@ static int status_change_start_sub(struct block_list *src, struct block_list *bl
case SC_ENCHANTARMS:
case SC_ARMORPROPERTY:
case SC_ARMOR_RESIST:
+ case SC_RESIST_PROPERTY_WATER:
+ case SC_RESIST_PROPERTY_GROUND:
+ case SC_RESIST_PROPERTY_FIRE:
+ case SC_RESIST_PROPERTY_WIND:
break;
case SC_GOSPEL:
//Must not override a casting gospel char.
@@ -7765,6 +7843,9 @@ static int status_change_start_sub(struct block_list *src, struct block_list *bl
calc_flag = status->dbs->ChangeFlagTable[type];
if(!(flag&SCFLAG_LOADED)) { // Do not parse val settings when loading SCs
switch(type) {
+ case SC_AUTOTRADE:
+ case SC_KSPROTECTED:
+ break; // Prevent calling status_change_start_unknown_sc().
case SC_ADORAMUS:
sc_start(src,bl,SC_BLIND,100,val1,skill->get_time(status->sc2skill(type),val1));
// Fall through to SC_INC_AGI
@@ -8009,7 +8090,6 @@ static int status_change_start_sub(struct block_list *src, struct block_list *bl
// This is done this way because the message that the client displays is hardcoded, and only
// shows how many minutes are remaining. [Panikon]
total_tick = 60000;
- val1 = battle_config.manner_system; //Mute filters.
if (sd)
{
clif->changestatus(sd,SP_MANNER,sd->status.manner);
@@ -8656,6 +8736,210 @@ static int status_change_start_sub(struct block_list *src, struct block_list *bl
//associated, and yet are not wrong/unknown. [Skotlex]
//break;
}
+ case SC_ARMOR_RESIST: {
+ struct status_change_entry *sce_water = sc->data[SC_RESIST_PROPERTY_WATER];
+ struct status_change_entry *sce_ground = sc->data[SC_RESIST_PROPERTY_GROUND];
+ struct status_change_entry *sce_fire = sc->data[SC_RESIST_PROPERTY_FIRE];
+ struct status_change_entry *sce_wind = sc->data[SC_RESIST_PROPERTY_WIND];
+
+ // Water
+ int sum_water = val1 + ((sce_fire != NULL) ? sce_fire->val2 : 0);
+ bool show_icon = true;
+ if (sce_water != NULL && sce_water->timer != INVALID_TIMER) {
+ const struct TimerData *td = timer->get(sce_water->timer);
+ if (td != NULL) {
+ sum_water += sce_water->val1;
+ int left = (int)DIFF_TICK(td->tick, timer->gettick());
+ if (left > total_tick && sum_water - val1 > 0)
+ show_icon = false;
+ }
+ }
+ if (val1 > 0 && sum_water > 0 && show_icon) {
+ int sc_icn = status->get_sc_icon(SC_RESIST_PROPERTY_WATER);
+ int sc_typ = status->get_sc_relevant_bl_types(SC_RESIST_PROPERTY_WATER);
+ clif->status_change(bl, sc_icn, sc_typ, 1, total_tick, 0, 0, 0);
+ } else if (sum_water <= 0) {
+ clif->sc_end(bl, bl->id, AREA, status->get_sc_icon(SC_RESIST_PROPERTY_WATER));
+ }
+
+ // Ground
+ int sum_ground = val2 + ((sce_wind != NULL) ? sce_wind->val2 : 0);
+ show_icon = true;
+ if (sce_ground != NULL && sce_ground->timer != INVALID_TIMER) {
+ const struct TimerData *td = timer->get(sce_ground->timer);
+ if (td != NULL) {
+ sum_ground += sce_ground->val1;
+ int left = (int)DIFF_TICK(td->tick, timer->gettick());
+ if (left > total_tick && sum_ground - val2 > 0)
+ show_icon = false;
+ }
+ }
+ if (val2 > 0 && sum_ground > 0 && show_icon) {
+ int sc_icn = status->get_sc_icon(SC_RESIST_PROPERTY_GROUND);
+ int sc_typ = status->get_sc_relevant_bl_types(SC_RESIST_PROPERTY_GROUND);
+ clif->status_change(bl, sc_icn, sc_typ, 1, total_tick, 0, 0, 0);
+ } else if (sum_ground <= 0) {
+ clif->sc_end(bl, bl->id, AREA, status->get_sc_icon(SC_RESIST_PROPERTY_GROUND));
+ }
+
+ // Fire
+ int sum_fire = val3 + ((sce_ground != NULL) ? sce_ground->val2 : 0);
+ show_icon = true;
+ if (sce_fire != NULL && sce_fire->timer != INVALID_TIMER) {
+ const struct TimerData *td = timer->get(sce_fire->timer);
+ if (td != NULL) {
+ sum_fire += sce_fire->val1;
+ int left = (int)DIFF_TICK(td->tick, timer->gettick());
+ if (left > total_tick && sum_fire - val3 > 0)
+ show_icon = false;
+ }
+ }
+ if (val3 > 0 && sum_fire > 0 && show_icon) {
+ int sc_icn = status->get_sc_icon(SC_RESIST_PROPERTY_FIRE);
+ int sc_typ = status->get_sc_relevant_bl_types(SC_RESIST_PROPERTY_FIRE);
+ clif->status_change(bl, sc_icn, sc_typ, 1, total_tick, 0, 0, 0);
+ } else if (sum_fire <= 0) {
+ clif->sc_end(bl, bl->id, AREA, status->get_sc_icon(SC_RESIST_PROPERTY_FIRE));
+ }
+
+ // Wind
+ int sum_wind = val4 + ((sce_water != NULL) ? sce_water->val2 : 0);
+ show_icon = true;
+ if (sce_wind != NULL && sce_wind->timer != INVALID_TIMER) {
+ const struct TimerData *td = timer->get(sce_wind->timer);
+ if (td != NULL) {
+ sum_wind += sce_wind->val1;
+ int left = (int)DIFF_TICK(td->tick, timer->gettick());
+ if (left > total_tick && sum_wind - val4 > 0)
+ show_icon = false;
+ }
+ }
+ if (val4 > 0 && sum_wind > 0 && show_icon) {
+ int sc_icn = status->get_sc_icon(SC_RESIST_PROPERTY_WIND);
+ int sc_typ = status->get_sc_relevant_bl_types(SC_RESIST_PROPERTY_WIND);
+ clif->status_change(bl, sc_icn, sc_typ, 1, total_tick, 0, 0, 0);
+ } else if (sum_wind <= 0) {
+ clif->sc_end(bl, bl->id, AREA, status->get_sc_icon(SC_RESIST_PROPERTY_WIND));
+ }
+
+ break;
+ }
+ case SC_RESIST_PROPERTY_WATER: {
+ struct status_change_entry *sce_all = sc->data[SC_ARMOR_RESIST];
+ struct status_change_entry *sce_fire = sc->data[SC_RESIST_PROPERTY_FIRE];
+ struct status_change_entry *sce_wind = sc->data[SC_RESIST_PROPERTY_WIND];
+
+ // Water
+ int sum_water = val1 + ((sce_fire != NULL) ? sce_fire->val2 : 0);
+ if (sce_all != NULL && sce_all->timer != INVALID_TIMER) {
+ const struct TimerData *td = timer->get(sce_all->timer);
+ if (td != NULL) {
+ sum_water += sce_all->val1;
+ int left = (int)DIFF_TICK(td->tick, timer->gettick());
+ if (left > total_tick && sum_water - val1 > 0)
+ flag |= SCFLAG_NOICON;
+ }
+ }
+ if (sum_water <= 0) {
+ clif->sc_end(bl, bl->id, AREA, status->get_sc_icon(SC_RESIST_PROPERTY_WATER));
+ flag |= SCFLAG_NOICON;
+ }
+
+ // Wind
+ int sum_wind = val2 + ((sce_wind != NULL) ? sce_wind->val1 : 0);
+ sum_wind += (sce_all != NULL) ? sce_all->val4 : 0;
+ if (sum_wind <= 0)
+ clif->sc_end(bl, bl->id, AREA, status->get_sc_icon(SC_RESIST_PROPERTY_WIND));
+
+ break;
+ }
+ case SC_RESIST_PROPERTY_GROUND: {
+ struct status_change_entry *sce_all = sc->data[SC_ARMOR_RESIST];
+ struct status_change_entry *sce_wind = sc->data[SC_RESIST_PROPERTY_WIND];
+ struct status_change_entry *sce_fire = sc->data[SC_RESIST_PROPERTY_FIRE];
+
+ // Ground
+ int sum_ground = val1 + ((sce_wind != NULL) ? sce_wind->val2 : 0);
+ if (sce_all != NULL && sce_all->timer != INVALID_TIMER) {
+ const struct TimerData *td = timer->get(sce_all->timer);
+ if (td != NULL) {
+ sum_ground += sce_all->val2;
+ int left = (int)DIFF_TICK(td->tick, timer->gettick());
+ if (left > total_tick && sum_ground - val1 > 0)
+ flag |= SCFLAG_NOICON;
+ }
+ }
+ if (sum_ground <= 0) {
+ clif->sc_end(bl, bl->id, AREA, status->get_sc_icon(SC_RESIST_PROPERTY_GROUND));
+ flag |= SCFLAG_NOICON;
+ }
+
+ // Fire
+ int sum_fire = val2 + ((sce_fire != NULL) ? sce_fire->val1 : 0);
+ sum_fire += (sce_all != NULL) ? sce_all->val3 : 0;
+ if (sum_fire <= 0)
+ clif->sc_end(bl, bl->id, AREA, status->get_sc_icon(SC_RESIST_PROPERTY_FIRE));
+
+ break;
+ }
+ case SC_RESIST_PROPERTY_FIRE: {
+ struct status_change_entry *sce_all = sc->data[SC_ARMOR_RESIST];
+ struct status_change_entry *sce_ground = sc->data[SC_RESIST_PROPERTY_GROUND];
+ struct status_change_entry *sce_water = sc->data[SC_RESIST_PROPERTY_WATER];
+
+ // Fire
+ int sum_fire = val1 + ((sce_ground != NULL) ? sce_ground->val2 : 0);
+ if (sce_all != NULL && sce_all->timer != INVALID_TIMER) {
+ const struct TimerData *td = timer->get(sce_all->timer);
+ if (td != NULL) {
+ sum_fire += sce_all->val3;
+ int left = (int)DIFF_TICK(td->tick, timer->gettick());
+ if (left > total_tick && sum_fire - val1 > 0)
+ flag |= SCFLAG_NOICON;
+ }
+ }
+ if (sum_fire <= 0) {
+ clif->sc_end(bl, bl->id, AREA, status->get_sc_icon(SC_RESIST_PROPERTY_FIRE));
+ flag |= SCFLAG_NOICON;
+ }
+
+ // Water
+ int sum_water = val2 + ((sce_water != NULL) ? sce_water->val1 : 0);
+ sum_water += (sce_all != NULL) ? sce_all->val1 : 0;
+ if (sum_water <= 0)
+ clif->sc_end(bl, bl->id, AREA, status->get_sc_icon(SC_RESIST_PROPERTY_WATER));
+
+ break;
+ }
+ case SC_RESIST_PROPERTY_WIND: {
+ struct status_change_entry *sce_all = sc->data[SC_ARMOR_RESIST];
+ struct status_change_entry *sce_water = sc->data[SC_RESIST_PROPERTY_WATER];
+ struct status_change_entry *sce_ground = sc->data[SC_RESIST_PROPERTY_GROUND];
+
+ // Wind
+ int sum_wind = val1 + ((sce_water != NULL) ? sce_water->val2 : 0);
+ if (sce_all != NULL && sce_all->timer != INVALID_TIMER) {
+ const struct TimerData *td = timer->get(sce_all->timer);
+ if (td != NULL) {
+ sum_wind += sce_all->val4;
+ int left = (int)DIFF_TICK(td->tick, timer->gettick());
+ if (left > total_tick && sum_wind - val1 > 0)
+ flag |= SCFLAG_NOICON;
+ }
+ }
+ if (sum_wind <= 0) {
+ clif->sc_end(bl, bl->id, AREA, status->get_sc_icon(SC_RESIST_PROPERTY_WIND));
+ flag |= SCFLAG_NOICON;
+ }
+
+ // Ground
+ int sum_ground = val2 + ((sce_ground != NULL) ? sce_ground->val1 : 0);
+ sum_ground += (sce_all != NULL) ? sce_all->val2 : 0;
+ if (sum_ground <= 0)
+ clif->sc_end(bl, bl->id, AREA, status->get_sc_icon(SC_RESIST_PROPERTY_GROUND));
+
+ break;
+ }
case SC_MER_FLEE:
case SC_MER_ATK:
case SC_MER_HIT:
@@ -10514,7 +10798,7 @@ static int status_change_clear(struct block_list *bl, int type)
/*==========================================
* Special condition we want to effectuate, check before ending a status.
*------------------------------------------*/
-static int status_change_end_(struct block_list *bl, enum sc_type type, int tid, const char *file, int line)
+static int status_change_end_(struct block_list *bl, enum sc_type type, int tid)
{
struct map_session_data *sd;
struct status_change *sc;
@@ -10582,6 +10866,9 @@ static int status_change_end_(struct block_list *bl, enum sc_type type, int tid,
vd = status->get_viewdata(bl);
calc_flag = status->dbs->ChangeFlagTable[type];
+
+ bool remove_icon = true;
+
switch(type) {
case SC_GRANITIC_ARMOR:
{
@@ -10681,23 +10968,9 @@ static int status_change_end_(struct block_list *bl, enum sc_type type, int tid,
break;
case SC_DANCING:
{
- const char* prevfile = "<unknown>";
- int prevline = 0;
struct map_session_data *dsd;
struct status_change_entry *dsc;
- if (sd) {
- if (sd->delunit_prevfile) {
- // initially this is NULL, when a character logs in
- prevfile = sd->delunit_prevfile;
- prevline = sd->delunit_prevline;
- } else {
- prevfile = "<none>";
- }
- sd->delunit_prevfile = file;
- sd->delunit_prevline = line;
- }
-
if (sce->val4 && sce->val4 != BCT_SELF && (dsd=map->id2sd(sce->val4)) != NULL) {
// end status on partner as well
dsc = dsd->sc.data[SC_DANCING];
@@ -10713,19 +10986,10 @@ static int status_change_end_(struct block_list *bl, enum sc_type type, int tid,
// erase associated land skill
struct skill_unit_group *group = skill->id2group(sce->val2);
- if (group == NULL) {
- ShowDebug("status_change_end: SC_DANCING is missing skill unit group (val1=%d, val2=%d, val3=%d, val4=%d, timer=%d, tid=%d, char_id=%d, map=%s, x=%d, y=%d, prev=%s:%d, from=%s:%d). Please report this! (#3504)\n",
- sce->val1, sce->val2, sce->val3, sce->val4, sce->timer, tid,
- sd ? sd->status.char_id : 0,
- mapindex_id2name(map_id2index(bl->m)), bl->x, bl->y,
- prevfile, prevline,
- file, line);
- }
-
sce->val2 = 0;
if( group )
- skill->del_unitgroup(group,ALC_MARK);
+ skill->del_unitgroup(group);
}
if ((sce->val1&0xFFFF) == CG_MOONLIT)
@@ -10829,7 +11093,7 @@ static int status_change_end_(struct block_list *bl, enum sc_type type, int tid,
struct skill_unit_group* group = skill->id2group(sce->val3);
sce->val3 = 0;
if( group )
- skill->del_unitgroup(group,ALC_MARK);
+ skill->del_unitgroup(group);
}
break;
case SC_HERMODE:
@@ -10848,7 +11112,7 @@ static int status_change_end_(struct block_list *bl, enum sc_type type, int tid,
struct skill_unit_group* group = skill->id2group(sce->val4);
sce->val4 = 0;
if( group ) /* might have been cleared before status ended, e.g. land protector */
- skill->del_unitgroup(group,ALC_MARK);
+ skill->del_unitgroup(group);
}
break;
case SC_KAAHI:
@@ -10946,7 +11210,7 @@ static int status_change_end_(struct block_list *bl, enum sc_type type, int tid,
struct skill_unit_group* group = skill->id2group(sce->val2);
sce->val2 = 0;
if (group) /* might have been cleared before status ended, e.g. land protector */
- skill->del_unitgroup(group,ALC_MARK);
+ skill->del_unitgroup(group);
}
break;
case SC_BANDING:
@@ -10954,7 +11218,7 @@ static int status_change_end_(struct block_list *bl, enum sc_type type, int tid,
struct skill_unit_group *group = skill->id2group(sce->val4);
sce->val4 = 0;
if( group ) /* might have been cleared before status ended, e.g. land protector */
- skill->del_unitgroup(group,ALC_MARK);
+ skill->del_unitgroup(group);
}
break;
case SC_CURSEDCIRCLE_ATKER:
@@ -11013,6 +11277,202 @@ static int status_change_end_(struct block_list *bl, enum sc_type type, int tid,
break;
}
break;
+ case SC_ARMOR_RESIST: {
+ struct status_change_entry *sce_water = sc->data[SC_RESIST_PROPERTY_WATER];
+ struct status_change_entry *sce_ground = sc->data[SC_RESIST_PROPERTY_GROUND];
+ struct status_change_entry *sce_fire = sc->data[SC_RESIST_PROPERTY_FIRE];
+ struct status_change_entry *sce_wind = sc->data[SC_RESIST_PROPERTY_WIND];
+
+ // Water
+ clif->sc_end(bl, bl->id, AREA, status->get_sc_icon(SC_RESIST_PROPERTY_WATER));
+ if (sce_water != NULL && sce_water->timer != INVALID_TIMER) {
+ int sum_water = sce_water->val1 + ((sce_fire != NULL) ? sce_fire->val2 : 0);
+ const struct TimerData *td = timer->get(sce_water->timer);
+ if (td != NULL && sce_water->val1 > 0 && sum_water > 0) {
+ int sc_icn = status->get_sc_icon(SC_RESIST_PROPERTY_WATER);
+ int sc_typ = status->get_sc_relevant_bl_types(SC_RESIST_PROPERTY_WATER);
+ int sc_tck = (int)DIFF_TICK(td->tick, timer->gettick());
+ int sc_ttl = sce_water->total_tick;
+ clif->status_change_sub(bl, sc_icn, sc_typ, 1, sc_tck, sc_ttl, 0, 0, 0);
+ }
+ }
+
+ // Ground
+ clif->sc_end(bl, bl->id, AREA, status->get_sc_icon(SC_RESIST_PROPERTY_GROUND));
+ if (sce_ground != NULL && sce_ground->timer != INVALID_TIMER) {
+ int sum_ground = sce_ground->val1 + ((sce_wind != NULL) ? sce_wind->val2 : 0);
+ const struct TimerData *td = timer->get(sce_ground->timer);
+ if (td != NULL && sce_ground->val1 > 0 && sum_ground > 0) {
+ int sc_icn = status->get_sc_icon(SC_RESIST_PROPERTY_GROUND);
+ int sc_typ = status->get_sc_relevant_bl_types(SC_RESIST_PROPERTY_GROUND);
+ int sc_tck = (int)DIFF_TICK(td->tick, timer->gettick());
+ int sc_ttl = sce_ground->total_tick;
+ clif->status_change_sub(bl, sc_icn, sc_typ, 1, sc_tck, sc_ttl, 0, 0, 0);
+ }
+ }
+
+ // Fire
+ clif->sc_end(bl, bl->id, AREA, status->get_sc_icon(SC_RESIST_PROPERTY_FIRE));
+ if (sce_fire != NULL && sce_fire->timer != INVALID_TIMER) {
+ int sum_fire = sce_fire->val1 + ((sce_ground != NULL) ? sce_ground->val2 : 0);
+ const struct TimerData *td = timer->get(sce_fire->timer);
+ if (td != NULL && sce_fire->val1 > 0 && sum_fire > 0) {
+ int sc_icn = status->get_sc_icon(SC_RESIST_PROPERTY_FIRE);
+ int sc_typ = status->get_sc_relevant_bl_types(SC_RESIST_PROPERTY_FIRE);
+ int sc_tck = (int)DIFF_TICK(td->tick, timer->gettick());
+ int sc_ttl = sce_fire->total_tick;
+ clif->status_change_sub(bl, sc_icn, sc_typ, 1, sc_tck, sc_ttl, 0, 0, 0);
+ }
+ }
+
+ // Wind
+ clif->sc_end(bl, bl->id, AREA, status->get_sc_icon(SC_RESIST_PROPERTY_WIND));
+ if (sce_wind != NULL && sce_wind->timer != INVALID_TIMER) {
+ int sum_wind = sce_wind->val1 + ((sce_water != NULL) ? sce_water->val2 : 0);
+ const struct TimerData *td = timer->get(sce_wind->timer);
+ if (td != NULL && sce_wind->val1 > 0 && sum_wind > 0) {
+ int sc_icn = status->get_sc_icon(SC_RESIST_PROPERTY_WIND);
+ int sc_typ = status->get_sc_relevant_bl_types(SC_RESIST_PROPERTY_WIND);
+ int sc_tck = (int)DIFF_TICK(td->tick, timer->gettick());
+ int sc_ttl = sce_wind->total_tick;
+ clif->status_change_sub(bl, sc_icn, sc_typ, 1, sc_tck, sc_ttl, 0, 0, 0);
+ }
+ }
+
+ break;
+ }
+ case SC_RESIST_PROPERTY_WATER:
+ if (sc->data[SC_ARMOR_RESIST] != NULL && sc->data[SC_ARMOR_RESIST]->timer != INVALID_TIMER) {
+ const struct TimerData *td = timer->get(sc->data[SC_ARMOR_RESIST]->timer);
+ if (td == NULL)
+ break;
+
+ // Water
+ int sum_water = sc->data[SC_ARMOR_RESIST]->val1;
+ if (sc->data[SC_RESIST_PROPERTY_FIRE] != NULL)
+ sum_water += sc->data[SC_RESIST_PROPERTY_FIRE]->val2;
+ if (sc->data[SC_ARMOR_RESIST]->val1 > 0 && sum_water > 0) {
+ int sc_icn = status->get_sc_icon(SC_RESIST_PROPERTY_WATER);
+ int sc_typ = status->get_sc_relevant_bl_types(SC_RESIST_PROPERTY_WATER);
+ int sc_tck = (int)DIFF_TICK(td->tick, timer->gettick());
+ int sc_ttl = sc->data[SC_ARMOR_RESIST]->total_tick;
+ clif->status_change_sub(bl, sc_icn, sc_typ, 1, sc_tck, sc_ttl, 0, 0, 0);
+ remove_icon = false;
+ }
+
+ // Wind
+ int sum_wind = sc->data[SC_ARMOR_RESIST]->val4;
+ if (sc->data[SC_RESIST_PROPERTY_WIND] != NULL)
+ sum_wind += sc->data[SC_RESIST_PROPERTY_WIND]->val1;
+ if (sc->data[SC_ARMOR_RESIST]->val4 > 0 && sum_wind > 0) {
+ int sc_icn = status->get_sc_icon(SC_RESIST_PROPERTY_WIND);
+ int sc_typ = status->get_sc_relevant_bl_types(SC_RESIST_PROPERTY_WIND);
+ int sc_tck = (int)DIFF_TICK(td->tick, timer->gettick());
+ int sc_ttl = sc->data[SC_ARMOR_RESIST]->total_tick;
+ clif->status_change_sub(bl, sc_icn, sc_typ, 1, sc_tck, sc_ttl, 0, 0, 0);
+ }
+ }
+
+ break;
+ case SC_RESIST_PROPERTY_GROUND:
+ if (sc->data[SC_ARMOR_RESIST] != NULL && sc->data[SC_ARMOR_RESIST]->timer != INVALID_TIMER) {
+ const struct TimerData *td = timer->get(sc->data[SC_ARMOR_RESIST]->timer);
+ if (td == NULL)
+ break;
+
+ // Ground
+ int sum_ground = sc->data[SC_ARMOR_RESIST]->val2;
+ if (sc->data[SC_RESIST_PROPERTY_WIND] != NULL)
+ sum_ground += sc->data[SC_RESIST_PROPERTY_WIND]->val2;
+ if (sc->data[SC_ARMOR_RESIST]->val2 > 0 && sum_ground > 0) {
+ int sc_icn = status->get_sc_icon(SC_RESIST_PROPERTY_GROUND);
+ int sc_typ = status->get_sc_relevant_bl_types(SC_RESIST_PROPERTY_GROUND);
+ int sc_tck = (int)DIFF_TICK(td->tick, timer->gettick());
+ int sc_ttl = sc->data[SC_ARMOR_RESIST]->total_tick;
+ clif->status_change_sub(bl, sc_icn, sc_typ, 1, sc_tck, sc_ttl, 0, 0, 0);
+ remove_icon = false;
+ }
+
+ // Fire
+ int sum_fire = sc->data[SC_ARMOR_RESIST]->val3;
+ if (sc->data[SC_RESIST_PROPERTY_FIRE] != NULL)
+ sum_fire += sc->data[SC_RESIST_PROPERTY_FIRE]->val1;
+ if (sc->data[SC_ARMOR_RESIST]->val3 > 0 && sum_fire > 0) {
+ int sc_icn = status->get_sc_icon(SC_RESIST_PROPERTY_FIRE);
+ int sc_typ = status->get_sc_relevant_bl_types(SC_RESIST_PROPERTY_FIRE);
+ int sc_tck = (int)DIFF_TICK(td->tick, timer->gettick());
+ int sc_ttl = sc->data[SC_ARMOR_RESIST]->total_tick;
+ clif->status_change_sub(bl, sc_icn, sc_typ, 1, sc_tck, sc_ttl, 0, 0, 0);
+ }
+ }
+
+ break;
+ case SC_RESIST_PROPERTY_FIRE:
+ if (sc->data[SC_ARMOR_RESIST] != NULL && sc->data[SC_ARMOR_RESIST]->timer != INVALID_TIMER) {
+ const struct TimerData *td = timer->get(sc->data[SC_ARMOR_RESIST]->timer);
+ if (td == NULL)
+ break;
+
+ // Fire
+ int sum_fire = sc->data[SC_ARMOR_RESIST]->val3;
+ if (sc->data[SC_RESIST_PROPERTY_GROUND] != NULL)
+ sum_fire += sc->data[SC_RESIST_PROPERTY_GROUND]->val2;
+ if (sc->data[SC_ARMOR_RESIST]->val3 > 0 && sum_fire > 0) {
+ int sc_icn = status->get_sc_icon(SC_RESIST_PROPERTY_FIRE);
+ int sc_typ = status->get_sc_relevant_bl_types(SC_RESIST_PROPERTY_FIRE);
+ int sc_tck = (int)DIFF_TICK(td->tick, timer->gettick());
+ int sc_ttl = sc->data[SC_ARMOR_RESIST]->total_tick;
+ clif->status_change_sub(bl, sc_icn, sc_typ, 1, sc_tck, sc_ttl, 0, 0, 0);
+ remove_icon = false;
+ }
+
+ // Water
+ int sum_water = sc->data[SC_ARMOR_RESIST]->val1;
+ if (sc->data[SC_RESIST_PROPERTY_WATER] != NULL)
+ sum_water += sc->data[SC_RESIST_PROPERTY_WATER]->val1;
+ if (sc->data[SC_ARMOR_RESIST]->val1 > 0 && sum_water > 0) {
+ int sc_icn = status->get_sc_icon(SC_RESIST_PROPERTY_WATER);
+ int sc_typ = status->get_sc_relevant_bl_types(SC_RESIST_PROPERTY_WATER);
+ int sc_tck = (int)DIFF_TICK(td->tick, timer->gettick());
+ int sc_ttl = sc->data[SC_ARMOR_RESIST]->total_tick;
+ clif->status_change_sub(bl, sc_icn, sc_typ, 1, sc_tck, sc_ttl, 0, 0, 0);
+ }
+ }
+
+ break;
+ case SC_RESIST_PROPERTY_WIND:
+ if (sc->data[SC_ARMOR_RESIST] != NULL && sc->data[SC_ARMOR_RESIST]->timer != INVALID_TIMER) {
+ const struct TimerData *td = timer->get(sc->data[SC_ARMOR_RESIST]->timer);
+ if (td == NULL)
+ break;
+
+ // Wind
+ int sum_wind = sc->data[SC_ARMOR_RESIST]->val4;
+ if (sc->data[SC_RESIST_PROPERTY_WATER] != NULL)
+ sum_wind += sc->data[SC_RESIST_PROPERTY_WATER]->val2;
+ if (sc->data[SC_ARMOR_RESIST]->val4 > 0 && sum_wind > 0) {
+ int sc_icn = status->get_sc_icon(SC_RESIST_PROPERTY_WIND);
+ int sc_typ = status->get_sc_relevant_bl_types(SC_RESIST_PROPERTY_WIND);
+ int sc_tck = (int)DIFF_TICK(td->tick, timer->gettick());
+ int sc_ttl = sc->data[SC_ARMOR_RESIST]->total_tick;
+ clif->status_change_sub(bl, sc_icn, sc_typ, 1, sc_tck, sc_ttl, 0, 0, 0);
+ remove_icon = false;
+ }
+
+ // Ground
+ int sum_ground = sc->data[SC_ARMOR_RESIST]->val2;
+ if (sc->data[SC_RESIST_PROPERTY_GROUND] != NULL)
+ sum_ground += sc->data[SC_RESIST_PROPERTY_GROUND]->val1;
+ if (sc->data[SC_ARMOR_RESIST]->val2 > 0 && sum_ground > 0) {
+ int sc_icn = status->get_sc_icon(SC_RESIST_PROPERTY_GROUND);
+ int sc_typ = status->get_sc_relevant_bl_types(SC_RESIST_PROPERTY_GROUND);
+ int sc_tck = (int)DIFF_TICK(td->tick, timer->gettick());
+ int sc_ttl = sc->data[SC_ARMOR_RESIST]->total_tick;
+ clif->status_change_sub(bl, sc_icn, sc_typ, 1, sc_tck, sc_ttl, 0, 0, 0);
+ }
+ }
+
+ break;
}
opt_flag = 1;
@@ -11226,7 +11686,8 @@ static int status_change_end_(struct block_list *bl, enum sc_type type, int tid,
#endif
//On Aegis, when turning off a status change, first goes the sc packet, then the option packet.
- clif->sc_end(bl, bl->id, AREA, status->get_sc_icon(type));
+ if (remove_icon)
+ clif->sc_end(bl, bl->id, AREA, status->get_sc_icon(type));
if( opt_flag&8 ) //bugreport:681
clif->changeoption2(bl);
diff --git a/src/map/status.h b/src/map/status.h
index ada18bc0a..43cfd6931 100644
--- a/src/map/status.h
+++ b/src/map/status.h
@@ -854,6 +854,13 @@ typedef enum sc_type {
SC_RESIST_PROPERTY_WIND,
SC_CLIENT_ONLY_EQUIP_ARROW,
SC_MADOGEAR,
+ SC_POPECOOKIE,
+ SC_VITALIZE_POTION,
+ SC_SKF_MATK,
+ SC_SKF_ATK,
+ SC_SKF_ASPD,
+ SC_SKF_CAST,
+ SC_ALMIGHTY,
#ifndef SC_MAX
SC_MAX, //Automatically updated max, used in for's to check we are within bounds.
#endif
@@ -1207,7 +1214,7 @@ struct status_change {
#define sc_start2(src, bl, type, rate, val1, val2, tick) (status->change_start((src),(bl),(type),100*(rate),(val1),(val2),0,0,(tick),SCFLAG_NONE))
#define sc_start4(src, bl, type, rate, val1, val2, val3, val4, tick) (status->change_start((src),(bl),(type),100*(rate),(val1),(val2),(val3),(val4),(tick),SCFLAG_NONE))
-#define status_change_end(bl,type,tid) (status->change_end_((bl),(type),(tid),__FILE__,__LINE__))
+#define status_change_end(bl,type,tid) (status->change_end_((bl),(type),(tid)))
#define status_calc_bl(bl, flag) (status->calc_bl_((bl), (enum scb_flag)(flag), SCO_NONE))
#define status_calc_mob(md, opt) (status->calc_bl_(&(md)->bl, SCB_ALL, (opt)))
@@ -1301,7 +1308,7 @@ struct status_interface {
int (*get_sc_def) (struct block_list *src, struct block_list *bl, enum sc_type type, int rate, int tick, int flag);
int (*change_start) (struct block_list *src, struct block_list *bl, enum sc_type type, int rate, int val1, int val2, int val3, int val4, int tick, int flag);
int (*change_start_sub) (struct block_list *src, struct block_list *bl, enum sc_type type, int rate, int val1, int val2, int val3, int val4, int tick, int total_tick, int flag);
- int (*change_end_) (struct block_list* bl, enum sc_type type, int tid, const char* file, int line);
+ int (*change_end_) (struct block_list* bl, enum sc_type type, int tid);
bool (*is_immune_to_status) (struct status_change* sc, enum sc_type type);
bool (*is_boss_resist_sc) (enum sc_type type);
bool (*end_sc_before_start) (struct block_list *bl, struct status_data *st, struct status_change* sc, enum sc_type type, int undead_flag, int val1, int val2, int val3, int val4);
diff --git a/src/map/trade.c b/src/map/trade.c
index e727c3c70..31970fbf9 100644
--- a/src/map/trade.c
+++ b/src/map/trade.c
@@ -63,7 +63,7 @@ static void trade_traderequest(struct map_session_data *sd, struct map_session_d
return;
}
- if (target_sd->npc_id) {
+ if (target_sd->npc_id != 0 && target_sd->state.using_megaphone == 0) {
//Trade fails if you are using an NPC.
clif->tradestart(sd, 2);
return;
@@ -166,9 +166,10 @@ static void trade_tradeack(struct map_session_data *sd, int type)
}
//Check if you can start trade.
- if (sd->npc_id || sd->state.vending || sd->state.prevend || sd->state.buyingstore || sd->state.storage_flag != STORAGE_FLAG_CLOSED
- || tsd->npc_id || tsd->state.vending || tsd->state.prevend || tsd->state.buyingstore || tsd->state.storage_flag != STORAGE_FLAG_CLOSED
- ) {
+ if ((sd->npc_id != 0 && sd->state.using_megaphone == 0) || sd->state.vending != 0 || sd->state.prevend != 0
+ || sd->state.buyingstore != 0 || sd->state.storage_flag != STORAGE_FLAG_CLOSED
+ || (tsd->npc_id != 0 && tsd->state.using_megaphone == 0) || tsd->state.vending != 0 || tsd->state.prevend != 0
+ || tsd->state.buyingstore != 0 || tsd->state.storage_flag != STORAGE_FLAG_CLOSED) {
//Fail
clif->tradestart(sd, 2);
clif->tradestart(tsd, 2);
diff --git a/src/map/unit.c b/src/map/unit.c
index 29a01aea7..fb6d992ae 100644
--- a/src/map/unit.c
+++ b/src/map/unit.c
@@ -57,6 +57,7 @@
#include "common/showmsg.h"
#include "common/socket.h"
#include "common/timer.h"
+#include "common/utils.h"
#include <stdio.h>
#include <stdlib.h>
@@ -71,20 +72,69 @@ struct unit_interface *unit;
/**
* Returns the unit_data for the given block_list. If the object is using
* shared unit_data (i.e. in case of BL_NPC), it returns the shared data.
- * @param bl block_list to process
+ *
+ * __Warning:__ if bl->type is not known or NULL,
+ * an assertion will be triggered and NULL returned.
+ * @param bl block_list to process, it is expected to be not NULL.
* @return a pointer to the given object's unit_data
**/
static struct unit_data *unit_bl2ud(struct block_list *bl)
{
- if (bl == NULL) return NULL;
- if (bl->type == BL_PC) return &BL_UCAST(BL_PC, bl)->ud;
- if (bl->type == BL_MOB) return &BL_UCAST(BL_MOB, bl)->ud;
- if (bl->type == BL_PET) return &BL_UCAST(BL_PET, bl)->ud;
- if (bl->type == BL_NPC) return BL_UCAST(BL_NPC, bl)->ud;
- if (bl->type == BL_HOM) return &BL_UCAST(BL_HOM, bl)->ud;
- if (bl->type == BL_MER) return &BL_UCAST(BL_MER, bl)->ud;
- if (bl->type == BL_ELEM) return &BL_UCAST(BL_ELEM, bl)->ud;
- return NULL;
+ Assert_retr(NULL, bl != NULL);
+ switch (bl->type) {
+ case BL_PC:
+ return &BL_UCAST(BL_PC, bl)->ud;
+ case BL_MOB:
+ return &BL_UCAST(BL_MOB, bl)->ud;
+ case BL_PET:
+ return &BL_UCAST(BL_PET, bl)->ud;
+ case BL_NPC:
+ return BL_UCAST(BL_NPC, bl)->ud;
+ case BL_HOM:
+ return &BL_UCAST(BL_HOM, bl)->ud;
+ case BL_MER:
+ return &BL_UCAST(BL_MER, bl)->ud;
+ case BL_ELEM:
+ return &BL_UCAST(BL_ELEM, bl)->ud;
+ case BL_SKILL: // No assertion to not spam the server console when attacking a skill type unit such as Ice Wall.
+ return NULL;
+ default:
+ Assert_retr(NULL, false);
+ }
+}
+
+/**
+ * Returns the const unit_data for the given const block_list. If the object is using
+ * shared unit_data (i.e. in case of BL_NPC), it returns the shared data.
+ *
+ * __Warning:__ if bl->type is not known or NULL,
+ * an assertion will be triggered and NULL returned.
+ * @param bl block_list to process, it is expected to be not NULL.
+ * @return a pointer to the given object's unit_data
+ **/
+static const struct unit_data *unit_cbl2ud(const struct block_list *bl)
+{
+ Assert_retr(NULL, bl != NULL);
+ switch (bl->type) {
+ case BL_PC:
+ return &BL_UCCAST(BL_PC, bl)->ud;
+ case BL_MOB:
+ return &BL_UCCAST(BL_MOB, bl)->ud;
+ case BL_PET:
+ return &BL_UCCAST(BL_PET, bl)->ud;
+ case BL_NPC:
+ return BL_UCCAST(BL_NPC, bl)->ud;
+ case BL_HOM:
+ return &BL_UCCAST(BL_HOM, bl)->ud;
+ case BL_MER:
+ return &BL_UCCAST(BL_MER, bl)->ud;
+ case BL_ELEM:
+ return &BL_UCCAST(BL_ELEM, bl)->ud;
+ case BL_SKILL: // No assertion to not spam the server console when attacking a skill type unit such as Ice Wall.
+ return NULL;
+ default:
+ Assert_retr(NULL, false);
+ }
}
/**
@@ -105,42 +155,46 @@ static struct unit_data *unit_bl2ud2(struct block_list *bl)
return unit->bl2ud(bl);
}
-static int unit_walktoxy_sub(struct block_list *bl)
+/**
+ * TODO: understand purpose of this function
+ * @param bl block_list to process
+ * @return 0: success, 1: fail, 2: nullpointer
+ */
+static int unit_walk_toxy_sub(struct block_list *bl)
{
- int i;
- struct walkpath_data wpd;
- struct unit_data *ud = NULL;
-
- nullpo_retr(1, bl);
- ud = unit->bl2ud(bl);
- if(ud == NULL) return 0;
+ nullpo_retr(2, bl);
+ struct unit_data *ud = unit->bl2ud(bl);
+ if (ud == NULL)
+ return 2;
- memset(&wpd, 0, sizeof(wpd));
+ struct walkpath_data wpd = {0};
- if( !path->search(&wpd,bl,bl->m,bl->x,bl->y,ud->to_x,ud->to_y,ud->state.walk_easy,CELL_CHKNOPASS) )
- return 0;
+ if (!path->search(&wpd, bl, bl->m, bl->x, bl->y, ud->to_x, ud->to_y, ud->state.walk_easy, CELL_CHKNOPASS))
+ return 1;
#ifdef OFFICIAL_WALKPATH
- if( !path->search_long(NULL, bl, bl->m, bl->x, bl->y, ud->to_x, ud->to_y, CELL_CHKNOPASS) // Check if there is an obstacle between
- && wpd.path_len > 14 // Official number of walkable cells is 14 if and only if there is an obstacle between. [malufett]
- && (bl->type != BL_NPC) ) // If type is a NPC, please disregard.
- return 0;
+ if (bl->type != BL_NPC // If type is an NPC, disregard.
+ && !path->search_long(NULL, bl, bl->m, bl->x, bl->y, ud->to_x, ud->to_y, CELL_CHKNOPASS) // Check if there is an obstacle between
+ && wpd.path_len > 14) { // Official number of walkable cells is 14 if and only if there is an obstacle between. [malufett]
+ return 1;
+ }
#endif
- memcpy(&ud->walkpath,&wpd,sizeof(wpd));
+ ud->walkpath = wpd;
- if (ud->target_to && ud->chaserange>1) {
- //Generally speaking, the walk path is already to an adjacent tile
- //so we only need to shorten the path if the range is greater than 1.
+ if (ud->target_to != 0 && ud->chaserange > 1) {
+ // Generally speaking, the walk path is already to an adjacent tile
+ // so we only need to shorten the path if the range is greater than 1.
- //Trim the last part of the path to account for range,
- //but always move at least one cell when requested to move.
- for (i = (ud->chaserange*10)-10; i > 0 && ud->walkpath.path_len>1;) {
- uint8 dir;
+ // Trim the last part of the path to account for range,
+ // but always move at least one cell when requested to move.
+ for (int i = ud->chaserange * 10 - 10; i > 0 && ud->walkpath.path_len > 1;) {
+ enum unit_dir dir;
ud->walkpath.path_len--;
dir = ud->walkpath.path[ud->walkpath.path_len];
- if (dir&1)
- i -= MOVE_COST*20; //When chasing, units will target a diamond-shaped area in range [Playtester]
+ Assert_retr(1, dir >= UNIT_DIR_FIRST && dir < UNIT_DIR_MAX);
+ if (unit_is_diagonal_dir(dir))
+ i -= MOVE_COST * 20; // When chasing, units will target a diamond-shaped area in range [Playtester]
else
i -= MOVE_COST;
ud->to_x -= dirx[dir];
@@ -148,7 +202,7 @@ static int unit_walktoxy_sub(struct block_list *bl)
}
}
- ud->state.change_walk_target=0;
+ ud->state.change_walk_target = 0;
if (bl->type == BL_PC) {
struct map_session_data *sd = BL_UCAST(BL_PC, bl);
@@ -157,15 +211,17 @@ static int unit_walktoxy_sub(struct block_list *bl)
}
clif->move(ud);
- if(ud->walkpath.path_pos>=ud->walkpath.path_len)
- i = -1;
- else if(ud->walkpath.path[ud->walkpath.path_pos]&1)
- i = status->get_speed(bl)*MOVE_DIAGONAL_COST/MOVE_COST;
+ int timer_delay;
+ if (ud->walkpath.path_pos >= ud->walkpath.path_len)
+ timer_delay = -1;
+ else if ((ud->walkpath.path[ud->walkpath.path_pos] & 1) != 0)
+ timer_delay = status->get_speed(bl) * MOVE_DIAGONAL_COST / MOVE_COST;
else
- i = status->get_speed(bl);
- if( i > 0)
- ud->walktimer = timer->add(timer->gettick()+i,unit->walktoxy_timer,bl->id,i);
- return 1;
+ timer_delay = status->get_speed(bl);
+
+ if (timer_delay > 0)
+ ud->walktimer = timer->add(timer->gettick() + timer_delay, unit->walk_toxy_timer, bl->id, 0); //TODO: check if unit->walk_toxy_timer uses any intptr data
+ return 0;
}
/**
@@ -173,289 +229,281 @@ static int unit_walktoxy_sub(struct block_list *bl)
* @param tid: Timer ID
* @param tick: Unused
* @param id: ID of bl to do the action
- * @param data: Not used
- * @return 1: Success 0: Fail (No valid bl)
+ * @param data: Unused
+ * @return 0: success, 1: fail, 2: nullpointer
*/
-static int unit_step_timer(int tid, int64 tick, int id, intptr_t data)
+static int unit_steptimer(int tid, int64 tick, int id, intptr_t data)
{
- struct block_list *bl;
- struct unit_data *ud;
- int target_id;
-
- bl = map->id2bl(id);
-
- if (!bl || bl->prev == NULL)
- return 0;
-
- ud = unit->bl2ud(bl);
-
- if(!ud)
- return 0;
+ struct block_list *bl = map->id2bl(id);
+ if (bl == NULL || bl->prev == NULL)
+ return 2;
+ struct unit_data *ud = unit->bl2ud(bl);
+ if (ud == NULL)
+ return 2;
- if(ud->steptimer != tid) {
- ShowError("unit_step_timer mismatch %d != %d\n",ud->steptimer,tid);
- return 0;
+ if (ud->steptimer != tid) {
+ ShowError("unit_steptimer mismatch %d != %d\n", ud->steptimer, tid);
+ return 1;
}
ud->steptimer = INVALID_TIMER;
- if(!ud->stepaction)
- return 0;
+ if (!ud->stepaction)
+ return 1;
- //Set to false here because if an error occurs, it should not be executed again
+ // Set to false here because if an error occurs, it should not be executed again
ud->stepaction = false;
- if(!ud->target_to)
- return 0;
+ if (ud->target_to == 0)
+ return 1;
- //Flush target_to as it might contain map coordinates which should not be used by other functions
- target_id = ud->target_to;
+ // Flush target_to as it might contain map coordinates which should not be used by other functions
+ int target_id = ud->target_to;
ud->target_to = 0;
- //If stepaction is set then we remembered a client request that should be executed on the next step
- //Execute request now if target is in attack range
- if(ud->stepskill_id && skill->get_inf(ud->stepskill_id) & INF_GROUND_SKILL) {
- //Execute ground skill
+ // If stepaction is set then we remembered a client request that should be executed on the next step
+ // Execute request now if target is in attack range
+ if (ud->stepskill_id != 0 && (skill->get_inf(ud->stepskill_id) & INF_GROUND_SKILL) != 0) {
+ // Execute ground skill
struct map_data *md = &map->list[bl->m];
- unit->skilluse_pos(bl, target_id%md->xs, target_id/md->xs, ud->stepskill_id, ud->stepskill_lv);
+ unit->skilluse_pos(bl, target_id % md->xs, target_id / md->xs, ud->stepskill_id, ud->stepskill_lv);
} else {
- //If a player has target_id set and target is in range, attempt attack
+ // If a player has target_id set and target is in range, attempt attack
struct block_list *tbl = map->id2bl(target_id);
- if (!tbl || !status->check_visibility(bl, tbl)) {
- return 0;
- }
- if(ud->stepskill_id == 0) {
- //Execute normal attack
- unit->attack(bl, tbl->id, (ud->state.attack_continue) + 2);
- } else {
- //Execute non-ground skill
- unit->skilluse_id(bl, tbl->id, ud->stepskill_id, ud->stepskill_lv);
- }
+ if (tbl == NULL || status->check_visibility(bl, tbl) == 0)
+ return 1; // Target does not exist (player offline, monster died, etc.) or target is not visible to source.
+ if (ud->stepskill_id == 0)
+ unit->attack(bl, tbl->id, ud->state.attack_continue + 2); // Execute normal attack
+ else
+ unit->skilluse_id(bl, tbl->id, ud->stepskill_id, ud->stepskill_lv); // Execute non-ground skill
}
- return 1;
+ return 0;
}
-static int unit_walktoxy_timer(int tid, int64 tick, int id, intptr_t data)
+/**
+ * Warps homunculus or mercenary towards his master in case he's too far away for 3 seconds.
+ * @param master_bl: block_list of master
+ * @param slave_bl: block_list of homunculus/mercenary master owns
+ * @return 0: success, 1: fail
+ */
+static int unit_warpto_master(struct block_list *master_bl, struct block_list *slave_bl)
{
- int i;
- int x,y,dx,dy;
- unsigned char icewall_walk_block;
- uint8 dir;
- struct block_list *bl;
- struct map_session_data *sd;
- struct mob_data *md;
- struct unit_data *ud;
- struct mercenary_data *mrd;
+ nullpo_retr(1, master_bl);
+ nullpo_retr(1, slave_bl);
+ int64 *masterteleport_timer;
+ struct homun_data *hd = BL_CAST(BL_HOM, slave_bl);
+ struct mercenary_data *md = BL_CAST(BL_MER, slave_bl);
+
+ bool check = true;
+ if (hd != NULL) {
+ masterteleport_timer = &hd->masterteleport_timer;
+ check = homun_alive(hd);
+ } else if (md != NULL) {
+ masterteleport_timer = &md->masterteleport_timer;
+ } else {
+ return 1;
+ }
- bl = map->id2bl(id);
- if(bl == NULL)
- return 0;
- sd = BL_CAST(BL_PC, bl);
- md = BL_CAST(BL_MOB, bl);
- mrd = BL_CAST(BL_MER, bl);
- ud = unit->bl2ud(bl);
+ if (check && !check_distance_bl(master_bl, slave_bl, MAX_MER_DISTANCE)) {
+ if (*masterteleport_timer == 0) {
+ *masterteleport_timer = timer->gettick();
+ return 0;
+ } else if (DIFF_TICK(timer->gettick(), *masterteleport_timer) > 3000) {
+ unit->warp(slave_bl, master_bl->m, master_bl->x, master_bl->y, CLR_TELEPORT);
+ }
+ }
+ *masterteleport_timer = 0; // resets tick in case he isn't far anymore.
- if(ud == NULL) return 0;
+ return 0;
+}
+
+/**
+ * Timer for walking to target coordinates or object.
+ * @param tid: timer id
+ * @param tick: tick
+ * @param id: id of bl to do the action
+ * @param data: unused
+ * @return 0: success, 1: fail
+ */
+static int unit_walk_toxy_timer(int tid, int64 tick, int id, intptr_t data)
+{
+ struct block_list *bl = map->id2bl(id);
+ if (bl == NULL)
+ return 1;
+ struct unit_data *ud = unit->bl2ud(bl);
+ if (ud == NULL)
+ return 1;
- if(ud->walktimer != tid){
+ if (ud->walktimer != tid) {
ShowError("unit_walk_timer mismatch %d != %d\n",ud->walktimer,tid);
- return 0;
+ return 1;
}
+
ud->walktimer = INVALID_TIMER;
- if (bl->prev == NULL) return 0; // Stop moved because it is missing from the block_list
- if(ud->walkpath.path_pos>=ud->walkpath.path_len)
- return 0;
+ if (bl->prev == NULL) // Stop moved because it is missing from the block_list.
+ return 1;
- if(ud->walkpath.path[ud->walkpath.path_pos]>=8)
+ if (ud->walkpath.path_pos >= ud->walkpath.path_len)
return 1;
- x = bl->x;
- y = bl->y;
- dir = ud->walkpath.path[ud->walkpath.path_pos];
+ enum unit_dir dir = ud->walkpath.path[ud->walkpath.path_pos];
+ Assert_retr(1, dir >= UNIT_DIR_FIRST && dir < UNIT_DIR_MAX);
+ int x = bl->x;
+ int y = bl->y;
+
ud->dir = dir;
- dx = dirx[(int)dir];
- dy = diry[(int)dir];
+ int dx = dirx[dir];
+ int dy = diry[dir];
- //Get icewall walk block depending on boss mode (players can't be trapped)
- if(md && md->status.mode&MD_BOSS)
- icewall_walk_block = battle_config.boss_icewall_walk_block;
- else if(md)
- icewall_walk_block = battle_config.mob_icewall_walk_block;
- else
- icewall_walk_block = 0;
+ // Get icewall walk block depending on boss mode (players can't be trapped)
+ unsigned char icewall_walk_block = 0;
+ struct mob_data *md = BL_CAST(BL_MOB, bl);
+ if (md != NULL) {
+ if ((md->status.mode & MD_BOSS) != 0)
+ icewall_walk_block = battle_config.boss_icewall_walk_block;
+ else
+ icewall_walk_block = battle_config.mob_icewall_walk_block;
+ }
- //Monsters will walk into an icewall from the west and south if they already started walking
+ // Monsters will walk into an icewall from the west and south if they already started walking
if (map->getcell(bl->m, bl, x + dx, y + dy, CELL_CHKNOPASS)
&& (icewall_walk_block == 0 || !map->getcell(bl->m, bl, x + dx, y + dy, CELL_CHKICEWALL) || dx < 0 || dy < 0))
- return unit->walktoxy_sub(bl);
+ return unit->walk_toxy_sub(bl);
- //Monsters can only leave icewalls to the west and south
- //But if movement fails more than icewall_walk_block times, they can ignore this rule
- if (md && md->walktoxy_fail_count < icewall_walk_block && map->getcell(bl->m, bl, x, y, CELL_CHKICEWALL) && (dx > 0 || dy > 0)) {
- //Needs to be done here so that rudeattack skills are invoked
+ // Monsters can only leave icewalls to the west and south
+ // But if movement fails more than icewall_walk_block times, they can ignore this rule
+ if (md != NULL && md->walktoxy_fail_count < icewall_walk_block && map->getcell(bl->m, bl, x, y, CELL_CHKICEWALL) != 0 && (dx > 0 || dy > 0)) {
+ // Needs to be done here so that rudeattack skills are invoked
md->walktoxy_fail_count++;
clif->fixpos(bl);
- //Monsters in this situation first use a chase skill, then unlock target and then use an idle skill
- if (!(++ud->walk_count%WALK_SKILL_INTERVAL))
+ // Monsters in this situation first use a chase skill, then unlock target and then use an idle skill
+ if ((++ud->walk_count % WALK_SKILL_INTERVAL) == 0)
mob->skill_use(md, tick, -1);
mob->unlocktarget(md, tick);
- if (!(++ud->walk_count%WALK_SKILL_INTERVAL))
+ if ((++ud->walk_count % WALK_SKILL_INTERVAL) != 0)
mob->skill_use(md, tick, -1);
- return 0;
+ return 1;
}
+ struct map_session_data *sd = BL_CAST(BL_PC, bl);
//Refresh view for all those we lose sight
- map->foreachinmovearea(clif->outsight, bl, AREA_SIZE, dx, dy, sd?BL_ALL:BL_PC, bl);
+ map->foreachinmovearea(clif->outsight, bl, AREA_SIZE, dx, dy, (sd != NULL ? BL_ALL : BL_PC), bl);
x += dx;
y += dy;
map->moveblock(bl, x, y, tick);
- ud->walk_count++; //walked cell counter, to be used for walk-triggered skills. [Skotlex]
+ ud->walk_count++; // walked cell counter, to be used for walk-triggered skills. [Skotlex]
status_change_end(bl, SC_ROLLINGCUTTER, INVALID_TIMER); //If you move, you lose your counters. [malufett]
if (bl->x != x || bl->y != y || ud->walktimer != INVALID_TIMER)
- return 0; //map->moveblock has altered the object beyond what we expected (moved/warped it)
+ return 1; // map->moveblock has altered the object beyond what we expected (moved/warped it)
ud->walktimer = -2; // arbitrary non-INVALID_TIMER value to make the clif code send walking packets
- map->foreachinmovearea(clif->insight, bl, AREA_SIZE, -dx, -dy, sd?BL_ALL:BL_PC, bl);
+ map->foreachinmovearea(clif->insight, bl, AREA_SIZE, -dx, -dy, (sd != NULL ? BL_ALL : BL_PC), bl);
ud->walktimer = INVALID_TIMER;
- if(sd) {
- if( sd->touching_id )
- npc->touchnext_areanpc(sd,false);
+ struct mercenary_data *mrd = BL_CAST(BL_MER, bl);
+ if (sd != NULL) {
+ if (sd->touching_id != 0)
+ npc->touchnext_areanpc(sd, false);
if (map->getcell(bl->m, bl, x, y, CELL_CHKNPC)) {
- npc->touch_areanpc(sd,bl->m,x,y);
+ npc->touch_areanpc(sd, bl->m, x, y);
if (bl->prev == NULL) //Script could have warped char, abort remaining of the function.
return 0;
- } else
+ } else {
npc->untouch_areanpc(sd, bl->m, x, y);
-
- if( sd->md ) { // mercenary should be warped after being 3 seconds too far from the master [greenbox]
- if( !check_distance_bl(&sd->bl, &sd->md->bl, MAX_MER_DISTANCE) ) {
- if (sd->md->masterteleport_timer == 0)
- sd->md->masterteleport_timer = timer->gettick();
- else if (DIFF_TICK(timer->gettick(), sd->md->masterteleport_timer) > 3000) {
- sd->md->masterteleport_timer = 0;
- unit->warp( &sd->md->bl, sd->bl.m, sd->bl.x, sd->bl.y, CLR_TELEPORT );
- }
- } else // reset the tick, he is not far anymore
- sd->md->masterteleport_timer = 0;
- }
- if( sd->hd ) {
- if( homun_alive(sd->hd) && !check_distance_bl(&sd->bl, &sd->hd->bl, MAX_MER_DISTANCE) ) {
- if (sd->hd->masterteleport_timer == 0)
- sd->hd->masterteleport_timer = timer->gettick();
- else if (DIFF_TICK(timer->gettick(), sd->hd->masterteleport_timer) > 3000) {
- sd->hd->masterteleport_timer = 0;
- unit->warp( &sd->hd->bl, sd->bl.m, sd->bl.x, sd->bl.y, CLR_TELEPORT );
- }
- } else
- sd->hd->masterteleport_timer = 0;
}
+
+ if (sd->md != NULL) // mercenary should be warped after being 3 seconds too far from the master [greenbox]
+ unit->warpto_master(bl, &sd->md->bl);
+ if (sd->hd != NULL)
+ unit->warpto_master(bl, &sd->hd->bl);
} else if (md) {
- //Movement was successful, reset walktoxy_fail_count
+ // Movement was successful, reset walktoxy_fail_count
md->walktoxy_fail_count = 0;
- if (map->getcell(bl->m, bl, x, y, CELL_CHKNPC)) {
- if( npc->touch_areanpc2(md) ) return 0; // Warped
- } else
+
+ if (map->getcell(bl->m, bl, x, y, CELL_CHKNPC) != 0 && npc->touch_areanpc2(md))
+ return 0; // Warped
+ else
md->areanpc_id = 0;
- if (md->min_chase > md->db->range3) md->min_chase--;
- //Walk skills are triggered regardless of target due to the idle-walk mob state.
- //But avoid triggering on stop-walk calls.
- if (tid != INVALID_TIMER
- && !(ud->walk_count%WALK_SKILL_INTERVAL)
- && map->list[bl->m].users > 0
- && mob->skill_use(md, tick, -1)
- ) {
+
+ if (md->min_chase > md->db->range3)
+ md->min_chase--;
+ // Walk skills are triggered regardless of target due to the idle-walk mob state.
+ // But avoid triggering on stop-walk calls.
+ if (tid != INVALID_TIMER && (ud->walk_count % WALK_SKILL_INTERVAL) == 0
+ && map->list[bl->m].users > 0 && mob->skill_use(md, tick, -1) == 0) {
+ // Walk skills are supposed to be used while walking
if (!(ud->skill_id == NPC_SELFDESTRUCTION && ud->skilltimer != INVALID_TIMER)
- && md->state.skillstate != MSS_WALK //Walk skills are supposed to be used while walking
- ) {
- //Skill used, abort walking
- clif->fixpos(bl); //Fix position as walk has been canceled.
- return 0;
+ && md->state.skillstate != MSS_WALK) {
+ // Skill used, abort walking
+ clif->fixpos(bl); // Fix position as walk has been canceled.
+ return 1;
}
- //Resend walk packet for proper Self Destruction display.
+ // Resend walk packet for proper Self Destruction display.
clif->move(ud);
}
- }
- else if( mrd && mrd->master )
- {
- if (!check_distance_bl(&mrd->master->bl, bl, MAX_MER_DISTANCE))
- {
- // mercenary should be warped after being 3 seconds too far from the master [greenbox]
- if (mrd->masterteleport_timer == 0)
- {
- mrd->masterteleport_timer = timer->gettick();
- }
- else if (DIFF_TICK(timer->gettick(), mrd->masterteleport_timer) > 3000)
- {
- mrd->masterteleport_timer = 0;
- unit->warp( bl, mrd->master->bl.m, mrd->master->bl.x, mrd->master->bl.y, CLR_TELEPORT );
- }
- }
- else
- {
- mrd->masterteleport_timer = 0;
- }
+ } else if (mrd != NULL && mrd->master != NULL) {
+ unit->warpto_master(&mrd->master->bl, bl);
}
- if(tid == INVALID_TIMER) //A directly invoked timer is from battle_stop_walking, therefore the rest is irrelevant.
+ if(tid == INVALID_TIMER) // A directly invoked timer is from battle_stop_walking, therefore the rest is irrelevant.
return 0;
- //If stepaction is set then we remembered a client request that should be executed on the next step
- if (ud->stepaction && ud->target_to) {
- //Delete old stepaction even if not executed yet, the latest command is what counts
- if(ud->steptimer != INVALID_TIMER) {
- timer->delete(ud->steptimer, unit->step_timer);
+ // If stepaction is set then we remembered a client request that should be executed on the next step
+ if (ud->stepaction && ud->target_to != 0) {
+ // Delete old stepaction even if not executed yet, the latest command is what counts
+ if (ud->steptimer != INVALID_TIMER) {
+ timer->delete(ud->steptimer, unit->steptimer);
ud->steptimer = INVALID_TIMER;
}
- //Delay stepactions by half a step (so they are executed at full step)
- if(ud->walkpath.path[ud->walkpath.path_pos]&1)
- i = status->get_speed(bl)*14/20;
+ // Delay stepactions by half a step (so they are executed at full step)
+ int timer_delay;
+ if ((ud->walkpath.path[ud->walkpath.path_pos] & 1) != 0)
+ timer_delay = status->get_speed(bl) * 14 / 20;
else
- i = status->get_speed(bl)/2;
- ud->steptimer = timer->add(tick+i, unit->step_timer, bl->id, 0);
+ timer_delay = status->get_speed(bl) / 2;
+ ud->steptimer = timer->add(tick + timer_delay, unit->steptimer, bl->id, 0);
}
- if(ud->state.change_walk_target) {
- if(unit->walktoxy_sub(bl)) {
- return 1;
- } else {
- clif->fixpos(bl);
+ if (ud->state.change_walk_target) {
+ if (unit->walk_toxy_sub(bl) == 0)
return 0;
- }
+ clif->fixpos(bl);
+ return 1;
}
+ int timer_delay;
ud->walkpath.path_pos++;
if(ud->walkpath.path_pos>=ud->walkpath.path_len)
- i = -1;
- else if(ud->walkpath.path[ud->walkpath.path_pos]&1)
- i = status->get_speed(bl)*14/10;
+ timer_delay = -1;
+ else if ((ud->walkpath.path[ud->walkpath.path_pos] & 1) != 0)
+ timer_delay = status->get_speed(bl) * 14 / 10;
else
- i = status->get_speed(bl);
+ timer_delay = status->get_speed(bl);
- if(i > 0) {
- ud->walktimer = timer->add(tick+i,unit->walktoxy_timer,id,i);
- if( md && DIFF_TICK(tick,md->dmgtick) < 3000 )//not required not damaged recently
+ if (timer_delay > 0) {
+ ud->walktimer = timer->add(tick + timer_delay, unit->walk_toxy_timer, id, 0);
+ if (md != NULL && DIFF_TICK(tick, md->dmgtick) < 3000) // not required not damaged recently
clif->move(ud);
- } else if(ud->state.running) {
- //Keep trying to run.
- if ( !(unit->run(bl, NULL, SC_RUN) || unit->run(bl, sd, SC_WUGDASH)) )
+ } else if (ud->state.running != 0) {
+ // Keep trying to run.
+ if (!(unit->run(bl, NULL, SC_RUN) || unit->run(bl, sd, SC_WUGDASH)))
ud->state.running = 0;
- } else if (!ud->stepaction && ud->target_to) {
- //Update target trajectory.
+ } else if (!ud->stepaction && ud->target_to != 0) {
+ // Update target trajectory.
struct block_list *tbl = map->id2bl(ud->target_to);
- if (!tbl || !status->check_visibility(bl, tbl)) {
- //Cancel chase.
+ if (tbl == NULL || status->check_visibility(bl, tbl) == 0) { // not visible
+ // Cancel chase.
ud->to_x = bl->x;
ud->to_y = bl->y;
- if (tbl && bl->type == BL_MOB && mob->warpchase(BL_UCAST(BL_MOB, bl), tbl))
+ if (tbl != NULL && bl->type == BL_MOB && mob->warpchase(BL_UCAST(BL_MOB, bl), tbl) != 0)
return 0;
ud->target_to = 0;
- return 0;
+ return 1;
}
if (tbl->m == bl->m && check_distance_bl(bl, tbl, ud->chaserange)) {
//Reached destination.
@@ -466,81 +514,106 @@ static int unit_walktoxy_timer(int tid, int64 tick, int id, intptr_t data)
clif->fixpos(bl);
unit->attack(bl, tbl->id, ud->state.attack_continue);
}
- } else { //Update chase-path
- unit->walktobl(bl, tbl, ud->chaserange, ud->state.walk_easy|(ud->state.attack_continue? 1 : 0));
+ } else { // Update chase-path
+ unit->walktobl(bl, tbl, ud->chaserange, ud->state.walk_easy | ud->state.attack_continue);
return 0;
}
} else {
- //Stopped walking. Update to_x and to_y to current location [Skotlex]
+ // Stopped walking. Update to_x and to_y to current location [Skotlex]
ud->to_x = bl->x;
ud->to_y = bl->y;
- if (battle_config.official_cell_stack_limit && map->count_oncell(bl->m, x, y, BL_CHAR|BL_NPC, 0x1 | 0x2) > battle_config.official_cell_stack_limit) {
- //Walked on occupied cell, call unit_walktoxy again
- if(ud->steptimer != INVALID_TIMER) {
- //Execute step timer on next step instead
- timer->delete(ud->steptimer, unit->step_timer);
+ if (battle_config.official_cell_stack_limit != 0 && map->count_oncell(bl->m, x, y, BL_CHAR | BL_NPC, 0x1 | 0x2) > battle_config.official_cell_stack_limit) {
+ // Walked on occupied cell, call unit->walk_toxy again
+ if (ud->steptimer != INVALID_TIMER) {
+ // Execute step timer on next step instead
+ timer->delete(ud->steptimer, unit->steptimer);
ud->steptimer = INVALID_TIMER;
}
- return unit->walktoxy(bl, x, y, 8);
+ return unit->walk_toxy(bl, x, y, 8);
}
}
return 0;
}
-static int unit_delay_walktoxy_timer(int tid, int64 tick, int id, intptr_t data)
+/**
+ * Timer for delayed execution of unit->walk_toxy once triggered
+ * @param tid: Timer ID, unused
+ * @param tick: Tick, unused
+ * @param id: ID of block_list to execute the action
+ * @param data: uint32 data cast to intptr_t with x-coord in lowest 16 bits and y-coord in highest 16 bits
+ * @return 0: success, 1: failure
+ */
+static int unit_delay_walk_toxy_timer(int tid, int64 tick, int id, intptr_t data)
{
struct block_list *bl = map->id2bl(id);
-
- if (!bl || bl->prev == NULL)
- return 0;
- unit->walktoxy(bl, (short)((data>>16)&0xffff), (short)(data&0xffff), 0);
- return 1;
+ if (bl == NULL || bl->prev == NULL)
+ return 1;
+ short x = (short)GetWord((uint32)data, 0);
+ short y = (short)GetWord((uint32)data, 1);
+ unit->walk_toxy(bl, x, y, 0);
+ return 0;
}
-//flag parameter:
-//&1 -> 1/0 = easy/hard
-//&2 -> force walking
-//&4 -> Delay walking if the reason you can't walk is the canwalk delay
-//&8 -> Search for an unoccupied cell and cancel if none available
-static int unit_walktoxy(struct block_list *bl, short x, short y, int flag)
+/**
+ * Makes a unit walk to (x, y) coordinates
+ * @param bl: block_list of unit to move
+ * @param x: x-coordinate
+ * @param y: y-coordinate
+ * @param flag: flag paramater with following options:
+ * - `& 1` -> 1/0 = easy / hard
+ * - `& 2` -> Force walking
+ * - `& 4` -> Delay walking, if the reason you can't walk is the `canwalk delay`
+ * - `& 8` -> Search for an unoccupied cell and cancel if none available
+ * .
+ * @return 0: success, 1: failure
+ */
+static int unit_walk_toxy(struct block_list *bl, short x, short y, int flag)
{
+ // TODO: change flag to enum? [skyleo]
struct unit_data* ud = NULL;
struct status_change* sc = NULL;
struct walkpath_data wpd;
- nullpo_ret(bl);
+ nullpo_retr(1, bl);
ud = unit->bl2ud(bl);
- if( ud == NULL) return 0;
+ if (ud == NULL)
+ return 1;
- if (battle_config.check_occupied_cells && (flag&8) && !map->closest_freecell(bl->m, bl, &x, &y, BL_CHAR|BL_NPC, 1)) //This might change x and y
- return 0;
+ if ((flag & 8) != 0 && battle_config.check_occupied_cells != 0) {
+ if (!map->closest_freecell(bl->m, bl, &x, &y, BL_CHAR | BL_NPC, 1)) // This might change x and y
+ return 1;
+ }
- if (!path->search(&wpd, bl, bl->m, bl->x, bl->y, x, y, flag&1, CELL_CHKNOPASS)) // Count walk path cells
- return 0;
+ if (!path->search(&wpd, bl, bl->m, bl->x, bl->y, x, y, flag & 1, CELL_CHKNOPASS)) // Count walk path cells
+ return 1;
+ if (bl->type != BL_NPC) {
#ifdef OFFICIAL_WALKPATH
- if( !path->search_long(NULL, bl, bl->m, bl->x, bl->y, x, y, CELL_CHKNOPASS) // Check if there is an obstacle between
- && (wpd.path_len > (battle_config.max_walk_path/17)*14) // Official number of walkable cells is 14 if and only if there is an obstacle between. [malufett]
- && (bl->type != BL_NPC) ) // If type is a NPC, please disregard.
- return 0;
+ // Check if there is an obstacle between
+ // Official number of walkable cells is 14 if and only if there is an obstacle between. [malufett]
+ if (!path->search_long(NULL, bl, bl->m, bl->x, bl->y, x, y, CELL_CHKNOPASS)
+ && (wpd.path_len > (battle_config.max_walk_path / 17) * 14))
+ return 1;
#endif
- if ((wpd.path_len > battle_config.max_walk_path) && (bl->type != BL_NPC))
- return 0;
+ if (wpd.path_len > battle_config.max_walk_path)
+ return 1;
+ }
- if (flag&4 && DIFF_TICK(ud->canmove_tick, timer->gettick()) > 0 &&
- DIFF_TICK(ud->canmove_tick, timer->gettick()) < 2000) {
+ if ((flag & 4) != 0 && DIFF_TICK(ud->canmove_tick, timer->gettick()) > 0
+ && DIFF_TICK(ud->canmove_tick, timer->gettick()) < 2000) {
// Delay walking command. [Skotlex]
- timer->add(ud->canmove_tick+1, unit->delay_walktoxy_timer, bl->id, (x<<16)|(y&0xFFFF));
- return 1;
+ timer->add(ud->canmove_tick + 1, unit->delay_walk_toxy_timer, bl->id,
+ (intptr_t)MakeDWord((uint16)x, (uint16)y));
+ return 0;
}
- if(!(flag&2) && (!(status_get_mode(bl)&MD_CANMOVE) || !unit->can_move(bl)))
- return 0;
+ if ((flag & 2) == 0 && ((status_get_mode(bl) & MD_CANMOVE) == 0 || unit->can_move(bl) == 0))
+ return 1;
- ud->state.walk_easy = flag&1;
+ ud->state.walk_easy = flag & 1;
ud->to_x = x;
ud->to_y = y;
unit->stop_attack(bl); //Sets target to 0
@@ -548,44 +621,63 @@ static int unit_walktoxy(struct block_list *bl, short x, short y, int flag)
unit->stop_stepaction(bl); // unit->walktoxy removes any remembered stepaction and resets ud->target_to
sc = status->get_sc(bl);
- if( sc ) {
- if( sc->data[SC_CONFUSION] || sc->data[SC__CHAOS] ) //Randomize the target position
+ if (sc != NULL) {
+ if (sc->data[SC_CONFUSION] != NULL || sc->data[SC__CHAOS] != NULL) // Randomize the target position
map->random_dir(bl, &ud->to_x, &ud->to_y);
- if( sc->data[SC_COMBOATTACK] )
+ if (sc->data[SC_COMBOATTACK] != NULL)
status_change_end(bl, SC_COMBOATTACK, INVALID_TIMER);
}
- if(ud->walktimer != INVALID_TIMER) {
+ if (ud->walktimer != INVALID_TIMER) {
// When you come to the center of the grid because the change of destination while you're walking right now
- // Call a function from a timer unit->walktoxy_sub
+ // Call a function from a timer unit->walk_toxy_sub
ud->state.change_walk_target = 1;
- return 1;
+ return 0;
}
- return unit->walktoxy_sub(bl);
+ return unit->walk_toxy_sub(bl);
}
-//To set Mob's CHASE/FOLLOW states (shouldn't be done if there's no path to reach)
-static inline void set_mobstate(struct block_list *bl, int flag)
+/**
+ * Sets CHASE / FOLLOW states, in case bl is a mob.
+ * WARNING: This shouldn't be done if there's no path to reach
+ * @param bl: block_list of mob
+ */
+static inline void set_mobstate(struct block_list *bl)
{
- struct mob_data* md = BL_CAST(BL_MOB,bl);
+ struct mob_data* md = BL_CAST(BL_MOB, bl);
- if( md && flag )
- md->state.skillstate = md->state.aggressive ? MSS_FOLLOW : MSS_RUSH;
+ if (md != NULL) {
+ if (md->state.aggressive != 0)
+ md->state.skillstate = MSS_FOLLOW;
+ else
+ md->state.skillstate = MSS_RUSH;
+ }
}
-static int unit_walktobl_sub(int tid, int64 tick, int id, intptr_t data)
+/**
+ * Timer used for when a unit can't walk towards its target yet due to it's canmove_tick,
+ * keeps retrying until it works or target changes.
+ * @param tid: Timer ID, unused
+ * @param tick: Tick, unused
+ * @param id: ID of block_list to execute the action
+ * @param data: ID of block_list to walk towards
+ * @return 0: success, 1: failure
+ */
+static int unit_walktobl_timer(int tid, int64 tick, int id, intptr_t data)
{
struct block_list *bl = map->id2bl(id);
- struct unit_data *ud = bl?unit->bl2ud(bl):NULL;
-
- if (ud && ud->walktimer == INVALID_TIMER && ud->target == data) {
- if (DIFF_TICK(ud->canmove_tick, tick) > 0) //Keep waiting?
- timer->add(ud->canmove_tick+1, unit->walktobl_sub, id, data);
- else if (unit->can_move(bl)) {
- if (unit->walktoxy_sub(bl))
- set_mobstate(bl, ud->state.attack_continue);
- }
+ if (bl == NULL)
+ return 1;
+ struct unit_data *ud = unit->bl2ud(bl);
+ if (ud == NULL)
+ return 1;
+
+ if (ud->walktimer == INVALID_TIMER && ud->target == data) {
+ if (DIFF_TICK(ud->canmove_tick, tick) > 0) // Keep waiting?
+ timer->add(ud->canmove_tick + 1, unit->walktobl_timer, id, data);
+ else if (unit->can_move(bl) != 0 && unit->walk_toxy_sub(bl) == 0 && ud->state.attack_continue != 0)
+ set_mobstate(bl);
}
return 0;
}
@@ -629,23 +721,27 @@ static int unit_walktobl(struct block_list *bl, struct block_list *tbl, int rang
if(ud->walktimer != INVALID_TIMER) {
ud->state.change_walk_target = 1;
- set_mobstate(bl, flag&2);
+ if ((flag & 2) != 0)
+ set_mobstate(bl);
return 1;
}
if (DIFF_TICK(ud->canmove_tick, timer->gettick()) > 0) {
//Can't move, wait a bit before invoking the movement.
- timer->add(ud->canmove_tick+1, unit->walktobl_sub, bl->id, ud->target);
+ timer->add(ud->canmove_tick + 1, unit->walktobl_timer, bl->id, ud->target);
return 1;
}
if(!unit->can_move(bl))
return 0;
- if (unit->walktoxy_sub(bl)) {
- set_mobstate(bl, flag&2);
+ if (unit->walk_toxy_sub(bl) == 0) {
+ if ((flag & 2) != 0)
+ set_mobstate(bl);
+
return 1;
}
+
return 0;
}
@@ -732,14 +828,14 @@ static bool unit_run(struct block_list *bl, struct map_session_data *sd, enum sc
return false;
}
- if( unit->walktoxy(bl, to_x, to_y, 1) )
+ if (unit->walk_toxy(bl, to_x, to_y, 1) == 0)
return true;
//There must be an obstacle nearby. Attempt walking one cell at a time.
do {
to_x -= dir_x;
to_y -= dir_y;
- } while (--i > 0 && !unit->walktoxy(bl, to_x, to_y, 1));
+ } while (--i > 0 && unit->walk_toxy(bl, to_x, to_y, 1) != 0);
if ( i == 0 ) {
unit->run_hit(bl, sc, sd, type);
@@ -752,19 +848,21 @@ static bool unit_run(struct block_list *bl, struct map_session_data *sd, enum sc
//Makes bl attempt to run dist cells away from target. Uses hard-paths.
static int unit_escape(struct block_list *bl, struct block_list *target, short dist)
{
- uint8 dir;
nullpo_ret(bl);
- dir = map->calc_dir(target, bl->x, bl->y);
+ enum unit_dir dir = map->calc_dir(target, bl->x, bl->y);
+ Assert_retr(1, dir >= UNIT_DIR_FIRST && dir < UNIT_DIR_MAX);
while (dist > 0 && map->getcell(bl->m, bl, bl->x + dist * dirx[dir], bl->y + dist * diry[dir], CELL_CHKNOREACH))
dist--;
- return ( dist > 0 && unit->walktoxy(bl, bl->x + dist*dirx[dir], bl->y + dist*diry[dir], 0) );
+ if (dist > 0 && unit->walk_toxy(bl, bl->x + dist * dirx[dir], bl->y + dist * diry[dir], 0) == 0)
+ return 1;
+ else
+ return 0;
}
//Instant warp function.
static int unit_movepos(struct block_list *bl, short dst_x, short dst_y, int easy, bool checkpath)
{
short dx,dy;
- uint8 dir;
struct unit_data *ud = NULL;
struct map_session_data *sd = NULL;
@@ -783,7 +881,7 @@ static int unit_movepos(struct block_list *bl, short dst_x, short dst_y, int eas
ud->to_x = dst_x;
ud->to_y = dst_y;
- dir = map->calc_dir(bl, dst_x, dst_y);
+ enum unit_dir dir = map->calc_dir(bl, dst_x, dst_y);
ud->dir = dir;
dx = dst_x - bl->x;
@@ -807,7 +905,7 @@ static int unit_movepos(struct block_list *bl, short dst_x, short dst_y, int eas
} else
npc->untouch_areanpc(sd, bl->m, bl->x, bl->y);
- if( sd->status.pet_id > 0 && sd->pd && sd->pd->pet.intimate > 0 )
+ if (sd->status.pet_id > 0 && sd->pd && sd->pd->pet.intimate > PET_INTIMACY_NONE)
{ // Check if pet needs to be teleported. [Skotlex]
int flag = 0;
struct block_list* pbl = &sd->pd->bl;
@@ -825,12 +923,18 @@ static int unit_movepos(struct block_list *bl, short dst_x, short dst_y, int eas
return 1;
}
-static int unit_setdir(struct block_list *bl, unsigned char dir)
+/**
+ * Sets the facing direction of a unit
+ * @param bl: unit to modify
+ * @param dir: the facing direction @see enum unit_dir
+ * @return 0: success, 1: failure
+ */
+static int unit_set_dir(struct block_list *bl, enum unit_dir dir)
{
- struct unit_data *ud;
- nullpo_ret(bl );
- ud = unit->bl2ud(bl);
- if (!ud) return 0;
+ nullpo_retr(1, bl);
+ struct unit_data *ud = unit->bl2ud(bl);
+ if (ud == NULL)
+ return 1;
ud->dir = dir;
if (bl->type == BL_PC)
BL_UCAST(BL_PC, bl)->head_dir = 0;
@@ -838,15 +942,20 @@ static int unit_setdir(struct block_list *bl, unsigned char dir)
return 0;
}
-static uint8 unit_getdir(struct block_list *bl)
+/**
+ * Get the facing direction of a unit
+ * @param bl: unit to request data from
+ * @return the facing direction @see enum unit_dir
+ */
+static enum unit_dir unit_getdir(const struct block_list *bl)
{
- struct unit_data *ud;
- nullpo_ret(bl);
+ nullpo_retr(UNIT_DIR_NORTH, bl);
- if( bl->type == BL_NPC )
+ if (bl->type == BL_NPC)
return BL_UCCAST(BL_NPC, bl)->dir;
- ud = unit->bl2ud(bl);
- if (!ud) return 0;
+ const struct unit_data *ud = unit->cbl2ud(bl);
+ if (ud == NULL)
+ return UNIT_DIR_NORTH;
return ud->dir;
}
@@ -1010,7 +1119,7 @@ static int unit_stop_walking(struct block_list *bl, int flag)
//timer->delete function does not messes with it. If the function's
//behavior changes in the future, this code could break!
td = timer->get(ud->walktimer);
- timer->delete(ud->walktimer, unit->walktoxy_timer);
+ timer->delete(ud->walktimer, unit->walk_toxy_timer);
ud->walktimer = INVALID_TIMER;
ud->state.change_walk_target = 0;
tick = timer->gettick();
@@ -1018,7 +1127,7 @@ static int unit_stop_walking(struct block_list *bl, int flag)
|| (flag&STOPWALKING_FLAG_NEXTCELL && td && DIFF_TICK(td->tick, tick) <= td->data/2) //Enough time has passed to cover half-cell
) {
ud->walkpath.path_len = ud->walkpath.path_pos+1;
- unit->walktoxy_timer(INVALID_TIMER, tick, bl->id, ud->walkpath.path_pos);
+ unit->walk_toxy_timer(INVALID_TIMER, tick, bl->id, ud->walkpath.path_pos);
}
if(flag&STOPWALKING_FLAG_FIXPOS)
@@ -1042,12 +1151,13 @@ static int unit_stop_walking(struct block_list *bl, int flag)
static int unit_skilluse_id(struct block_list *src, int target_id, uint16 skill_id, uint16 skill_lv)
{
int casttime = skill->cast_fix(src, skill_id, skill_lv);
- int castcancel = skill->get_castcancel(skill_id);
+ int castcancel = skill->get_castcancel(skill_id, skill_lv);
int ret = unit->skilluse_id2(src, target_id, skill_id, skill_lv, casttime, castcancel);
struct map_session_data *sd = BL_CAST(BL_PC, src);
if (sd != NULL)
- pc->itemskill_clear(sd);
+ pc->autocast_remove(sd, sd->auto_cast_current.type, sd->auto_cast_current.skill_id,
+ sd->auto_cast_current.skill_lv);
return ret;
}
@@ -1235,7 +1345,7 @@ static int unit_set_walkdelay(struct block_list *bl, int64 tick, int delay, int
} else {
unit->stop_walking(bl, STOPWALKING_FLAG_NEXTCELL);
if (ud->target)
- timer->add(ud->canmove_tick+1, unit->walktobl_sub, bl->id, ud->target);
+ timer->add(ud->canmove_tick + 1, unit->walktobl_timer, bl->id, ud->target);
}
}
}
@@ -1450,13 +1560,13 @@ static int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill
ud->target_to = target_id;
ud->stepskill_id = skill_id;
ud->stepskill_lv = skill_lv;
- return 0; // Attacking will be handled by unit_walktoxy_timer in this case
+ return 0; // Attacking will be handled by unit_walk_toxy_timer in this case
}
//Check range when not using skill on yourself or is a combo-skill during attack
//(these are supposed to always have the same range as your attack)
if( src->id != target_id && (!temp || ud->attacktimer == INVALID_TIMER) ) {
- if( skill->get_state(ud->skill_id) == ST_MOVE_ENABLE ) {
+ if (skill->get_state(skill_id, skill_lv) == ST_MOVE_ENABLE) {
if( !unit->can_reach_bl(src, target, range + 1, 1, NULL, NULL) )
return 0; // Walk-path check failed.
} else if( src->type == BL_MER && skill_id == MA_REMOVETRAP ) {
@@ -1606,7 +1716,7 @@ static int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill
if (!ud->state.running) //need TK_RUN or WUGDASH handler to be done before that, see bugreport:6026
unit->stop_walking(src, STOPWALKING_FLAG_FIXPOS);// even though this is not how official works but this will do the trick. bugreport:6829
- if (sd != NULL && sd->state.itemskill_no_casttime == 1 && skill->is_item_skill(sd, skill_id, skill_lv))
+ if (sd != NULL && sd->auto_cast_current.itemskill_instant_cast && sd->auto_cast_current.type == AUTOCAST_ITEM)
casttime = 0;
// in official this is triggered even if no cast time.
@@ -1644,7 +1754,7 @@ static int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill
if( casttime <= 0 )
ud->state.skillcastcancel = 0;
- if( !sd || sd->skillitem != skill_id || skill->get_cast(skill_id,skill_lv) )
+ if (sd == NULL || sd->auto_cast_current.type < AUTOCAST_ABRA || skill->get_cast(skill_id, skill_lv) != 0)
ud->canact_tick = tick + casttime + 100;
if( sd )
{
@@ -1663,7 +1773,7 @@ static int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill
if( casttime > 0 ) {
if (src->id != target->id) // self-targeted skills shouldn't show different direction
- unit->setdir(src, map->calc_dir(src, target->x, target->y));
+ unit->set_dir(src, map->calc_dir(src, target->x, target->y));
ud->skilltimer = timer->add( tick+casttime, skill->castend_id, src->id, 0 );
if (sd && (pc->checkskill(sd, SA_FREECAST) > 0 || skill_id == LG_EXEEDBREAK || (skill->get_inf2(ud->skill_id) & INF2_FREE_CAST_REDUCED) != 0))
status_calc_bl(&sd->bl, SCB_SPEED|SCB_ASPD);
@@ -1679,12 +1789,13 @@ static int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill
static int unit_skilluse_pos(struct block_list *src, short skill_x, short skill_y, uint16 skill_id, uint16 skill_lv)
{
int casttime = skill->cast_fix(src, skill_id, skill_lv);
- int castcancel = skill->get_castcancel(skill_id);
+ int castcancel = skill->get_castcancel(skill_id, skill_lv);
int ret = unit->skilluse_pos2(src, skill_x, skill_y, skill_id, skill_lv, casttime, castcancel);
struct map_session_data *sd = BL_CAST(BL_PC, src);
if (sd != NULL)
- pc->itemskill_clear(sd);
+ pc->autocast_remove(sd, sd->auto_cast_current.type, sd->auto_cast_current.skill_id,
+ sd->auto_cast_current.skill_lv);
return ret;
}
@@ -1757,10 +1868,10 @@ static int unit_skilluse_pos2(struct block_list *src, short skill_x, short skill
ud->target_to = (skill_x + skill_y*md->xs);
ud->stepskill_id = skill_id;
ud->stepskill_lv = skill_lv;
- return 0; // Attacking will be handled by unit_walktoxy_timer in this case
+ return 0; // Attacking will be handled by unit_walk_toxy_timer in this case
}
- if( skill->get_state(ud->skill_id) == ST_MOVE_ENABLE ) {
+ if (skill->get_state(skill_id, skill_lv) == ST_MOVE_ENABLE) {
if( !unit->can_reach_bl(src, &bl, range + 1, 1, NULL, NULL) )
return 0; //Walk-path check failed.
} else if( !battle->check_range(src, &bl, range) )
@@ -1781,7 +1892,7 @@ static int unit_skilluse_pos2(struct block_list *src, short skill_x, short skill
}
ud->state.skillcastcancel = castcancel&&casttime>0?1:0;
- if( !sd || sd->skillitem != skill_id || skill->get_cast(skill_id,skill_lv) )
+ if (sd == NULL || sd->auto_cast_current.type < AUTOCAST_ABRA || skill->get_cast(skill_id, skill_lv) != 0)
ud->canact_tick = tick + casttime + 100;
#if 0
if (sd) {
@@ -1812,13 +1923,13 @@ static int unit_skilluse_pos2(struct block_list *src, short skill_x, short skill
unit->stop_walking(src, STOPWALKING_FLAG_FIXPOS);
- if (sd != NULL && sd->state.itemskill_no_casttime == 1 && skill->is_item_skill(sd, skill_id, skill_lv))
+ if (sd != NULL && sd->auto_cast_current.itemskill_instant_cast && sd->auto_cast_current.type == AUTOCAST_ITEM)
casttime = 0;
// in official this is triggered even if no cast time.
clif->useskill(src, src->id, 0, skill_x, skill_y, skill_id, skill_lv, casttime);
if( casttime > 0 ) {
- unit->setdir(src, map->calc_dir(src, skill_x, skill_y));
+ unit->set_dir(src, map->calc_dir(src, skill_x, skill_y));
ud->skilltimer = timer->add( tick+casttime, skill->castend_pos, src->id, 0 );
if ((sd && pc->checkskill(sd, SA_FREECAST) > 0) || skill_id == LG_EXEEDBREAK || (skill->get_inf2(ud->skill_id) & INF2_FREE_CAST_REDUCED) != 0) {
status_calc_bl(&sd->bl, SCB_SPEED|SCB_ASPD);
@@ -1897,7 +2008,7 @@ static void unit_stop_stepaction(struct block_list *bl)
return;
//Clear timer
- timer->delete(ud->steptimer, unit->step_timer);
+ timer->delete(ud->steptimer, unit->steptimer);
ud->steptimer = INVALID_TIMER;
}
@@ -1981,7 +2092,7 @@ static int unit_attack(struct block_list *src, int target_id, int continuous)
ud->target_to = ud->target;
ud->stepskill_id = 0;
ud->stepskill_lv = 0;
- return 0; // Attacking will be handled by unit_walktoxy_timer in this case
+ return 0; // Attacking will be handled by unit_walk_toxy_timer in this case
}
if(DIFF_TICK(ud->attackabletime, timer->gettick()) > 0)
@@ -2082,14 +2193,13 @@ static bool unit_can_reach_bl(struct block_list *bl, struct block_list *tbl, int
/*==========================================
* Calculates position of Pet/Mercenary/Homunculus/Elemental
*------------------------------------------*/
-static int unit_calc_pos(struct block_list *bl, int tx, int ty, uint8 dir)
+static int unit_calc_pos(struct block_list *bl, int tx, int ty, enum unit_dir dir)
{
int dx, dy, x, y;
struct unit_data *ud = unit->bl2ud(bl);
nullpo_ret(ud);
- if(dir > 7)
- return 1;
+ Assert_retr(1, dir >= UNIT_DIR_FIRST && dir < UNIT_DIR_MAX);
ud->to_x = tx;
ud->to_y = ty;
@@ -2106,7 +2216,7 @@ static int unit_calc_pos(struct block_list *bl, int tx, int ty, uint8 dir)
if (!unit->can_reach_pos(bl, x, y, 0)) {
int i;
for (i = 0; i < 12; i++) {
- int k = rnd()%8; // Pick a Random Dir
+ enum unit_dir k = rnd() % UNIT_DIR_MAX; // Pick a Random Dir
dx = -dirx[k] * 2;
dy = -diry[k] * 2;
x = tx + dx;
@@ -2232,7 +2342,7 @@ static int unit_attack_timer_sub(struct block_list *src, int tid, int64 tick)
if(md) {
//First attack is always a normal attack
if(md->state.skillstate == MSS_ANGRY || md->state.skillstate == MSS_BERSERK) {
- if (mob->skill_use(md,tick,-1)) {
+ if (mob->skill_use(md, tick, -1) == 0) {
map->freeblock_unlock();
return 1;
}
@@ -2272,7 +2382,7 @@ static int unit_attack_timer_sub(struct block_list *src, int tid, int64 tick)
}
if(ud->state.attack_continue) {
- unit->setdir(src, map->calc_dir(src, target->x, target->y));
+ unit->set_dir(src, map->calc_dir(src, target->x, target->y));
if( src->type == BL_PC )
pc->update_idle_time(sd, BCIDLE_ATTACK);
ud->attacktimer = timer->add(ud->attackabletime,unit->attack_timer,src->id,0);
@@ -2617,7 +2727,7 @@ static int unit_remove_map(struct block_list *bl, enum clr_type clrtype, const c
case BL_PET:
{
struct pet_data *pd = BL_UCAST(BL_PET, bl);
- if( pd->pet.intimate <= 0 && !(pd->msd && !pd->msd->state.active) ) {
+ if (pd->pet.intimate <= PET_INTIMACY_NONE && !(pd->msd && !pd->msd->state.active)) {
//If logging out, this is deleted on unit->free
clif->clearunit_area(bl,clrtype);
map->delblock(bl);
@@ -2776,6 +2886,8 @@ static int unit_free(struct block_list *bl, enum clr_type clrtype)
aFree(sd->instance);
sd->instance = NULL;
}
+
+ VECTOR_CLEAR(sd->auto_cast); // Clear auto-cast vector.
VECTOR_CLEAR(sd->channels);
VECTOR_CLEAR(sd->script_queues);
VECTOR_CLEAR(sd->achievement); // Achievement [Smokexyz/Hercules]
@@ -2831,7 +2943,7 @@ static int unit_free(struct block_list *bl, enum clr_type clrtype)
aFree (pd->loot);
pd->loot = NULL;
}
- if (pd->pet.intimate > 0) {
+ if (pd->pet.intimate > PET_INTIMACY_NONE) {
intif->save_petdata(pd->pet.account_id,&pd->pet);
} else {
//Remove pet.
@@ -2969,10 +3081,10 @@ static int do_init_unit(bool minimal)
return 0;
timer->add_func_list(unit->attack_timer, "unit_attack_timer");
- timer->add_func_list(unit->walktoxy_timer,"unit_walktoxy_timer");
- timer->add_func_list(unit->walktobl_sub, "unit_walktobl_sub");
- timer->add_func_list(unit->delay_walktoxy_timer,"unit_delay_walktoxy_timer");
- timer->add_func_list(unit->step_timer,"unit_step_timer");
+ timer->add_func_list(unit->walk_toxy_timer, "unit_walk_toxy_timer");
+ timer->add_func_list(unit->walktobl_timer, "unit_walktobl_timer");
+ timer->add_func_list(unit->delay_walk_toxy_timer, "unit_delay_walk_toxy_timer");
+ timer->add_func_list(unit->steptimer, "unit_steptimer");
return 0;
}
@@ -2990,26 +3102,28 @@ void unit_defaults(void)
unit->final = do_final_unit;
/* */
unit->bl2ud = unit_bl2ud;
+ unit->cbl2ud = unit_cbl2ud;
unit->bl2ud2 = unit_bl2ud2;
unit->init_ud = unit_init_ud;
unit->attack_timer = unit_attack_timer;
- unit->walktoxy_timer = unit_walktoxy_timer;
- unit->walktoxy_sub = unit_walktoxy_sub;
- unit->delay_walktoxy_timer = unit_delay_walktoxy_timer;
- unit->walktoxy = unit_walktoxy;
- unit->walktobl_sub = unit_walktobl_sub;
+ unit->walk_toxy_timer = unit_walk_toxy_timer;
+ unit->walk_toxy_sub = unit_walk_toxy_sub;
+ unit->delay_walk_toxy_timer = unit_delay_walk_toxy_timer;
+ unit->walk_toxy = unit_walk_toxy;
+ unit->walktobl_timer = unit_walktobl_timer;
unit->walktobl = unit_walktobl;
unit->run = unit_run;
unit->run_hit = unit_run_hit;
unit->escape = unit_escape;
unit->movepos = unit_movepos;
- unit->setdir = unit_setdir;
+ unit->set_dir = unit_set_dir;
unit->getdir = unit_getdir;
unit->blown = unit_blown;
unit->warp = unit_warp;
+ unit->warpto_master = unit_warpto_master;
unit->stop_walking = unit_stop_walking;
unit->skilluse_id = unit_skilluse_id;
- unit->step_timer = unit_step_timer;
+ unit->steptimer = unit_steptimer;
unit->stop_stepaction = unit_stop_stepaction;
unit->is_walking = unit_is_walking;
unit->can_move = unit_can_move;
diff --git a/src/map/unit.h b/src/map/unit.h
index 5437a172a..3f288e0d3 100644
--- a/src/map/unit.h
+++ b/src/map/unit.h
@@ -24,6 +24,7 @@
#include "map/clif.h" // clr_type
#include "map/path.h" // struct walkpath_data
#include "map/skill.h" // 'MAX_SKILLTIMERSKILL, struct skill_timerskill, struct skill_unit_group, struct skill_unit_group_tickset
+#include "map/unitdefines.h" // enum unit_dir
#include "common/hercules.h"
struct map_session_data;
@@ -67,7 +68,7 @@ struct unit_data {
int64 attackabletime;
int64 canact_tick;
int64 canmove_tick;
- uint8 dir;
+ enum unit_dir dir;
unsigned char walk_count;
unsigned char target_count;
struct {
@@ -102,26 +103,28 @@ struct unit_interface {
int (*final) (void);
/* */
struct unit_data* (*bl2ud) (struct block_list *bl);
+ const struct unit_data* (*cbl2ud) (const struct block_list *bl);
struct unit_data* (*bl2ud2) (struct block_list *bl);
void (*init_ud) (struct unit_data *ud);
int (*attack_timer) (int tid, int64 tick, int id, intptr_t data);
- int (*walktoxy_timer) (int tid, int64 tick, int id, intptr_t data);
- int (*walktoxy_sub) (struct block_list *bl);
- int (*delay_walktoxy_timer) (int tid, int64 tick, int id, intptr_t data);
- int (*walktoxy) (struct block_list *bl, short x, short y, int flag);
- int (*walktobl_sub) (int tid, int64 tick, int id, intptr_t data);
+ int (*walk_toxy_timer) (int tid, int64 tick, int id, intptr_t data);
+ int (*walk_toxy_sub) (struct block_list *bl);
+ int (*delay_walk_toxy_timer) (int tid, int64 tick, int id, intptr_t data);
+ int (*walk_toxy) (struct block_list *bl, short x, short y, int flag);
+ int (*walktobl_timer) (int tid, int64 tick, int id, intptr_t data);
int (*walktobl) (struct block_list *bl, struct block_list *tbl, int range, int flag);
bool (*run) (struct block_list *bl, struct map_session_data *sd, enum sc_type type);
void (*run_hit) (struct block_list *bl, struct status_change *sc, struct map_session_data *sd, enum sc_type type);
int (*escape) (struct block_list *bl, struct block_list *target, short dist);
int (*movepos) (struct block_list *bl, short dst_x, short dst_y, int easy, bool checkpath);
- int (*setdir) (struct block_list *bl, unsigned char dir);
- uint8 (*getdir) (struct block_list *bl);
+ int (*set_dir) (struct block_list *bl, enum unit_dir dir);
+ enum unit_dir (*getdir) (const struct block_list *bl);
int (*blown) (struct block_list *bl, int dx, int dy, int count, int flag);
int (*warp) (struct block_list *bl, short m, short x, short y, enum clr_type type);
+ int (*warpto_master) (struct block_list *master_bl, struct block_list *slave_bl);
int (*stop_walking) (struct block_list *bl, int type);
int (*skilluse_id) (struct block_list *src, int target_id, uint16 skill_id, uint16 skill_lv);
- int (*step_timer) (int tid, int64 tick, int id, intptr_t data);
+ int (*steptimer) (int tid, int64 tick, int id, intptr_t data);
void (*stop_stepaction) (struct block_list *bl);
int (*is_walking) (struct block_list *bl);
int (*can_move) (struct block_list *bl);
@@ -137,7 +140,7 @@ struct unit_interface {
int (*cancel_combo) (struct block_list *bl);
bool (*can_reach_pos) (struct block_list *bl, int x, int y, int easy);
bool (*can_reach_bl) (struct block_list *bl, struct block_list *tbl, int range, int easy, short *x, short *y);
- int (*calc_pos) (struct block_list *bl, int tx, int ty, uint8 dir);
+ int (*calc_pos) (struct block_list *bl, int tx, int ty, enum unit_dir dir);
int (*attack_timer_sub) (struct block_list *src, int tid, int64 tick);
int (*skillcastcancel) (struct block_list *bl, int type);
void (*dataset) (struct block_list *bl);
diff --git a/src/map/unitdefines.h b/src/map/unitdefines.h
new file mode 100644
index 000000000..0ee30998c
--- /dev/null
+++ b/src/map/unitdefines.h
@@ -0,0 +1,58 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2012-2019 Hercules Dev Team
+ * Copyright (C) Athena Dev Teams
+ *
+ * Hercules is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#ifndef MAP_UNITDEFINES_H
+#define MAP_UNITDEFINES_H
+
+/**
+ * Used for directions, @see unit_data.dir
+ */
+enum unit_dir {
+ UNIT_DIR_UNDEFINED = -1,
+ UNIT_DIR_FIRST = 0,
+ UNIT_DIR_NORTH = 0,
+ UNIT_DIR_NORTHWEST = 1,
+ UNIT_DIR_WEST = 2,
+ UNIT_DIR_SOUTHWEST = 3,
+ UNIT_DIR_SOUTH = 4,
+ UNIT_DIR_SOUTHEAST = 5,
+ UNIT_DIR_EAST = 6,
+ UNIT_DIR_NORTHEAST = 7,
+ UNIT_DIR_MAX = 8,
+ /* IMPORTANT: Changing the order would break the above macros
+ * and several usages of directions anywhere */
+};
+
+/* Returns the opposite of the facing direction */
+#define unit_get_opposite_dir(dir) ( ((dir) + 4) % UNIT_DIR_MAX )
+
+/* Returns true when direction is diagonal/combined (ex. UNIT_DIR_NORTHWEST, UNIT_DIR_SOUTHWEST, ...) */
+#define unit_is_diagonal_dir(dir) ( ((dir) % 2) == UNIT_DIR_NORTHWEST )
+
+/* Returns true if direction equals val or the opposite direction of val */
+#define unit_is_dir_or_opposite(dir, val) ( ((dir) % 4) == (val) )
+
+/* Returns the next direction after 90° CCW on a compass */
+#define unit_get_ccw90_dir(dir) ( ((dir) + 2) % UNIT_DIR_MAX )
+
+/* Returns a random diagonal direction */
+#define unit_get_rnd_diagonal_dir() ( UNIT_DIR_NORTHWEST + 2 * (rnd() % 4) )
+
+#endif /* MAP_UNITDEFINES_H */
diff --git a/src/map/vending.c b/src/map/vending.c
index 4fd009025..9b3f48f38 100644
--- a/src/map/vending.c
+++ b/src/map/vending.c
@@ -251,8 +251,10 @@ static void vending_openvending(struct map_session_data *sd, const char *message
int vending_skill_lvl;
nullpo_retv(sd);
- if ( pc_isdead(sd) || !sd->state.prevend || pc_istrading(sd))
- return; // can't open vendings lying dead || didn't use via the skill (wpe/hack) || can't have 2 shops at once
+ if (pc_isdead(sd) || sd->state.prevend == 0 || pc_istrading_except_npc(sd)
+ || (sd->npc_id != 0 && sd->state.using_megaphone == 0)) {
+ return; // Can't open vendings lying dead. || Didn't use via the skill. (wpe/hack) || Can't have 2 shops at once.
+ }
vending_skill_lvl = pc->checkskill(sd, MC_VENDING);
// skill level and cart check
diff --git a/src/plugins/HPMHooking/HPMHooking.Defs.inc b/src/plugins/HPMHooking/HPMHooking.Defs.inc
index 7996a59f9..60c00e8db 100644
--- a/src/plugins/HPMHooking/HPMHooking.Defs.inc
+++ b/src/plugins/HPMHooking/HPMHooking.Defs.inc
@@ -1410,6 +1410,10 @@ typedef void (*HPMHOOK_pre_clif_chatname_ack) (int *fd, struct block_list **bl);
typedef void (*HPMHOOK_post_clif_chatname_ack) (int fd, struct block_list *bl);
typedef void (*HPMHOOK_pre_clif_elemname_ack) (int *fd, struct block_list **bl);
typedef void (*HPMHOOK_post_clif_elemname_ack) (int fd, struct block_list *bl);
+typedef void (*HPMHOOK_pre_clif_skillname_ack) (int *fd, struct block_list **bl);
+typedef void (*HPMHOOK_post_clif_skillname_ack) (int fd, struct block_list *bl);
+typedef void (*HPMHOOK_pre_clif_itemname_ack) (int *fd, struct block_list **bl);
+typedef void (*HPMHOOK_post_clif_itemname_ack) (int fd, struct block_list *bl);
typedef void (*HPMHOOK_pre_clif_unknownname_ack) (int *fd, struct block_list **bl);
typedef void (*HPMHOOK_post_clif_unknownname_ack) (int fd, struct block_list *bl);
typedef void (*HPMHOOK_pre_clif_monster_hp_bar) (struct mob_data **md, struct map_session_data **sd);
@@ -2670,6 +2674,8 @@ typedef time_t (*HPMHOOK_pre_clif_attendance_getendtime) (void);
typedef time_t (*HPMHOOK_post_clif_attendance_getendtime) (time_t retVal___);
typedef void (*HPMHOOK_pre_clif_pOpenUIRequest) (int *fd, struct map_session_data **sd);
typedef void (*HPMHOOK_post_clif_pOpenUIRequest) (int fd, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_open_ui_send) (struct map_session_data **sd, enum zc_ui_types *ui_type);
+typedef void (*HPMHOOK_post_clif_open_ui_send) (struct map_session_data *sd, enum zc_ui_types ui_type);
typedef void (*HPMHOOK_pre_clif_open_ui) (struct map_session_data **sd, enum cz_ui_types *uiType);
typedef void (*HPMHOOK_post_clif_open_ui) (struct map_session_data *sd, enum cz_ui_types uiType);
typedef void (*HPMHOOK_pre_clif_pAttendanceRewardRequest) (int *fd, struct map_session_data **sd);
@@ -2762,6 +2768,14 @@ typedef void (*HPMHOOK_pre_clif_plapineDdukDdak_ack) (int *fd, struct map_sessio
typedef void (*HPMHOOK_post_clif_plapineDdukDdak_ack) (int fd, struct map_session_data *sd);
typedef void (*HPMHOOK_pre_clif_plapineDdukDdak_close) (int *fd, struct map_session_data **sd);
typedef void (*HPMHOOK_post_clif_plapineDdukDdak_close) (int fd, struct map_session_data *sd);
+typedef bool (*HPMHOOK_pre_clif_lapineUpgrade_open) (struct map_session_data **sd, int *item_id);
+typedef bool (*HPMHOOK_post_clif_lapineUpgrade_open) (bool retVal___, struct map_session_data *sd, int item_id);
+typedef bool (*HPMHOOK_pre_clif_lapineUpgrade_result) (struct map_session_data **sd, enum lapineUpgrade_result *result);
+typedef bool (*HPMHOOK_post_clif_lapineUpgrade_result) (bool retVal___, struct map_session_data *sd, enum lapineUpgrade_result result);
+typedef void (*HPMHOOK_pre_clif_pLapineUpgrade_close) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_pLapineUpgrade_close) (int fd, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_pLapineUpgrade_makeItem) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_pLapineUpgrade_makeItem) (int fd, struct map_session_data *sd);
typedef void (*HPMHOOK_pre_clif_pReqGearOff) (int *fd, struct map_session_data **sd);
typedef void (*HPMHOOK_post_clif_pReqGearOff) (int fd, struct map_session_data *sd);
#endif // MAP_CLIF_H
@@ -4734,10 +4748,10 @@ typedef uint32 (*HPMHOOK_pre_map_race_id2mask) (int *race);
typedef uint32 (*HPMHOOK_post_map_race_id2mask) (uint32 retVal___, int race);
typedef void (*HPMHOOK_pre_map_reloadnpc) (bool *clear);
typedef void (*HPMHOOK_post_map_reloadnpc) (bool clear);
-typedef int (*HPMHOOK_pre_map_check_dir) (int *s_dir, int *t_dir);
-typedef int (*HPMHOOK_post_map_check_dir) (int retVal___, int s_dir, int t_dir);
-typedef uint8 (*HPMHOOK_pre_map_calc_dir) (struct block_list **src, int16 *x, int16 *y);
-typedef uint8 (*HPMHOOK_post_map_calc_dir) (uint8 retVal___, struct block_list *src, int16 x, int16 y);
+typedef int (*HPMHOOK_pre_map_check_dir) (enum unit_dir *s_dir, enum unit_dir *t_dir);
+typedef int (*HPMHOOK_post_map_check_dir) (int retVal___, enum unit_dir s_dir, enum unit_dir t_dir);
+typedef enum unit_dir (*HPMHOOK_pre_map_calc_dir) (const struct block_list **src, int16 *x, int16 *y);
+typedef enum unit_dir (*HPMHOOK_post_map_calc_dir) (enum unit_dir retVal___, const struct block_list *src, int16 x, int16 y);
typedef int (*HPMHOOK_pre_map_random_dir) (struct block_list **bl, short **x, short **y);
typedef int (*HPMHOOK_post_map_random_dir) (int retVal___, struct block_list *bl, short *x, short *y);
typedef int (*HPMHOOK_pre_map_cleanup_sub) (struct block_list **bl, va_list ap);
@@ -5212,20 +5226,32 @@ typedef bool (*HPMHOOK_pre_mapit_exists) (struct s_mapiterator **iter);
typedef bool (*HPMHOOK_post_mapit_exists) (bool retVal___, struct s_mapiterator *iter);
#endif // MAP_MAP_H
#ifdef MAP_MAPREG_H /* mapreg */
-typedef void (*HPMHOOK_pre_mapreg_init) (void);
-typedef void (*HPMHOOK_post_mapreg_init) (void);
-typedef void (*HPMHOOK_pre_mapreg_final) (void);
-typedef void (*HPMHOOK_post_mapreg_final) (void);
typedef int (*HPMHOOK_pre_mapreg_readreg) (int64 *uid);
typedef int (*HPMHOOK_post_mapreg_readreg) (int retVal___, int64 uid);
typedef char* (*HPMHOOK_pre_mapreg_readregstr) (int64 *uid);
typedef char* (*HPMHOOK_post_mapreg_readregstr) (char* retVal___, int64 uid);
+typedef bool (*HPMHOOK_pre_mapreg_set_num_db) (int64 *uid, const char **name, unsigned int *index, int *value);
+typedef bool (*HPMHOOK_post_mapreg_set_num_db) (bool retVal___, int64 uid, const char *name, unsigned int index, int value);
+typedef bool (*HPMHOOK_pre_mapreg_delete_num_db) (int64 *uid, const char **name, unsigned int *index);
+typedef bool (*HPMHOOK_post_mapreg_delete_num_db) (bool retVal___, int64 uid, const char *name, unsigned int index);
typedef bool (*HPMHOOK_pre_mapreg_setreg) (int64 *uid, int *val);
typedef bool (*HPMHOOK_post_mapreg_setreg) (bool retVal___, int64 uid, int val);
+typedef bool (*HPMHOOK_pre_mapreg_set_str_db) (int64 *uid, const char **name, unsigned int *index, const char **value);
+typedef bool (*HPMHOOK_post_mapreg_set_str_db) (bool retVal___, int64 uid, const char *name, unsigned int index, const char *value);
+typedef bool (*HPMHOOK_pre_mapreg_delete_str_db) (int64 *uid, const char **name, unsigned int *index);
+typedef bool (*HPMHOOK_post_mapreg_delete_str_db) (bool retVal___, int64 uid, const char *name, unsigned int index);
typedef bool (*HPMHOOK_pre_mapreg_setregstr) (int64 *uid, const char **str);
typedef bool (*HPMHOOK_post_mapreg_setregstr) (bool retVal___, int64 uid, const char *str);
+typedef void (*HPMHOOK_pre_mapreg_load_num_db) (void);
+typedef void (*HPMHOOK_post_mapreg_load_num_db) (void);
+typedef void (*HPMHOOK_pre_mapreg_load_str_db) (void);
+typedef void (*HPMHOOK_post_mapreg_load_str_db) (void);
typedef void (*HPMHOOK_pre_mapreg_load) (void);
typedef void (*HPMHOOK_post_mapreg_load) (void);
+typedef void (*HPMHOOK_pre_mapreg_save_num_db) (const char **name, unsigned int *index, int *value);
+typedef void (*HPMHOOK_post_mapreg_save_num_db) (const char *name, unsigned int index, int value);
+typedef void (*HPMHOOK_pre_mapreg_save_str_db) (const char **name, unsigned int *index, const char **value);
+typedef void (*HPMHOOK_post_mapreg_save_str_db) (const char *name, unsigned int index, const char *value);
typedef void (*HPMHOOK_pre_mapreg_save) (void);
typedef void (*HPMHOOK_post_mapreg_save) (void);
typedef int (*HPMHOOK_pre_mapreg_save_timer) (int *tid, int64 *tick, int *id, intptr_t *data);
@@ -5234,8 +5260,12 @@ typedef int (*HPMHOOK_pre_mapreg_destroyreg) (union DBKey *key, struct DBData **
typedef int (*HPMHOOK_post_mapreg_destroyreg) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
typedef void (*HPMHOOK_pre_mapreg_reload) (void);
typedef void (*HPMHOOK_post_mapreg_reload) (void);
-typedef bool (*HPMHOOK_pre_mapreg_config_read) (const char **filename, const struct config_setting_t **config, bool *imported);
-typedef bool (*HPMHOOK_post_mapreg_config_read) (bool retVal___, const char *filename, const struct config_setting_t *config, bool imported);
+typedef bool (*HPMHOOK_pre_mapreg_config_read_registry) (const char **filename, const struct config_setting_t **config, bool *imported);
+typedef bool (*HPMHOOK_post_mapreg_config_read_registry) (bool retVal___, const char *filename, const struct config_setting_t *config, bool imported);
+typedef void (*HPMHOOK_pre_mapreg_final) (void);
+typedef void (*HPMHOOK_post_mapreg_final) (void);
+typedef void (*HPMHOOK_pre_mapreg_init) (void);
+typedef void (*HPMHOOK_post_mapreg_init) (void);
#endif // MAP_MAPREG_H
#ifdef COMMON_MD5CALC_H /* md5 */
typedef void (*HPMHOOK_pre_md5_string) (const char **string, char **output);
@@ -5452,8 +5482,8 @@ typedef struct block_list* (*HPMHOOK_pre_mob_getmasterhpltmaxrate) (struct mob_d
typedef struct block_list* (*HPMHOOK_post_mob_getmasterhpltmaxrate) (struct block_list* retVal___, struct mob_data *md, int rate);
typedef int (*HPMHOOK_pre_mob_getfriendstatus_sub) (struct block_list **bl, va_list ap);
typedef int (*HPMHOOK_post_mob_getfriendstatus_sub) (int retVal___, struct block_list *bl, va_list ap);
-typedef struct mob_data* (*HPMHOOK_pre_mob_getfriendstatus) (struct mob_data **md, int *cond1, int *cond2);
-typedef struct mob_data* (*HPMHOOK_post_mob_getfriendstatus) (struct mob_data* retVal___, struct mob_data *md, int cond1, int cond2);
+typedef struct block_list* (*HPMHOOK_pre_mob_getfriendstatus) (struct mob_data **md, int *cond1, int *cond2);
+typedef struct block_list* (*HPMHOOK_post_mob_getfriendstatus) (struct block_list* retVal___, struct mob_data *md, int cond1, int cond2);
typedef int (*HPMHOOK_pre_mob_skill_use) (struct mob_data **md, int64 *tick, int *event);
typedef int (*HPMHOOK_post_mob_skill_use) (int retVal___, struct mob_data *md, int64 tick, int event);
typedef int (*HPMHOOK_pre_mob_skill_event) (struct mob_data **md, struct block_list **src, int64 *tick, int *flag);
@@ -5708,8 +5738,8 @@ typedef int (*HPMHOOK_pre_npc_parseview) (const char **w4, const char **start, c
typedef int (*HPMHOOK_post_npc_parseview) (int retVal___, const char *w4, const char *start, const char *buffer, const char *filepath);
typedef bool (*HPMHOOK_pre_npc_viewisid) (const char **viewid);
typedef bool (*HPMHOOK_post_npc_viewisid) (bool retVal___, const char *viewid);
-typedef struct npc_data* (*HPMHOOK_pre_npc_create_npc) (enum npc_subtype *subtype, int *m, int *x, int *y, uint8 *dir, int *class_);
-typedef struct npc_data* (*HPMHOOK_post_npc_create_npc) (struct npc_data* retVal___, enum npc_subtype subtype, int m, int x, int y, uint8 dir, int class_);
+typedef struct npc_data* (*HPMHOOK_pre_npc_create_npc) (enum npc_subtype *subtype, int *m, int *x, int *y, enum unit_dir *dir, int *class_);
+typedef struct npc_data* (*HPMHOOK_post_npc_create_npc) (struct npc_data* retVal___, enum npc_subtype subtype, int m, int x, int y, enum unit_dir dir, int class_);
typedef struct npc_data* (*HPMHOOK_pre_npc_add_warp) (char **name, short *from_mapid, short *from_x, short *from_y, short *xs, short *ys, unsigned short *to_mapindex, short *to_x, short *to_y);
typedef struct npc_data* (*HPMHOOK_post_npc_add_warp) (struct npc_data* retVal___, char *name, short from_mapid, short from_x, short from_y, short xs, short ys, unsigned short to_mapindex, short to_x, short to_y);
typedef const char* (*HPMHOOK_pre_npc_parse_warp) (const char **w1, const char **w2, const char **w3, const char **w4, const char **start, const char **buffer, const char **filepath, int **retval);
@@ -5830,6 +5860,10 @@ typedef int (*HPMHOOK_pre_npc_secure_timeout_timer) (int *tid, int64 *tick, int
typedef int (*HPMHOOK_post_npc_secure_timeout_timer) (int retVal___, int tid, int64 tick, int id, intptr_t data);
#endif // MAP_NPC_H
#ifdef COMMON_NULLPO_H /* nullpo */
+typedef void (*HPMHOOK_pre_nullpo_init) (void);
+typedef void (*HPMHOOK_post_nullpo_init) (void);
+typedef void (*HPMHOOK_pre_nullpo_final) (void);
+typedef void (*HPMHOOK_post_nullpo_final) (void);
typedef void (*HPMHOOK_pre_nullpo_assert_report) (const char **file, int *line, const char **func, const char **targetname, const char **title);
typedef void (*HPMHOOK_post_nullpo_assert_report) (const char *file, int line, const char *func, const char *targetname, const char *title);
#endif // COMMON_NULLPO_H
@@ -6184,8 +6218,14 @@ typedef int (*HPMHOOK_pre_pc_checkitem) (struct map_session_data **sd);
typedef int (*HPMHOOK_post_pc_checkitem) (int retVal___, struct map_session_data *sd);
typedef int (*HPMHOOK_pre_pc_useitem) (struct map_session_data **sd, int *n);
typedef int (*HPMHOOK_post_pc_useitem) (int retVal___, struct map_session_data *sd, int n);
-typedef int (*HPMHOOK_pre_pc_itemskill_clear) (struct map_session_data **sd);
-typedef int (*HPMHOOK_post_pc_itemskill_clear) (int retVal___, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_pc_autocast_clear_current) (struct map_session_data **sd);
+typedef void (*HPMHOOK_post_pc_autocast_clear_current) (struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_pc_autocast_clear) (struct map_session_data **sd);
+typedef void (*HPMHOOK_post_pc_autocast_clear) (struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_pc_autocast_set_current) (struct map_session_data **sd, int *skill_id);
+typedef void (*HPMHOOK_post_pc_autocast_set_current) (struct map_session_data *sd, int skill_id);
+typedef void (*HPMHOOK_pre_pc_autocast_remove) (struct map_session_data **sd, enum autocast_type *type, int *skill_id, int *skill_lv);
+typedef void (*HPMHOOK_post_pc_autocast_remove) (struct map_session_data *sd, enum autocast_type type, int skill_id, int skill_lv);
typedef int (*HPMHOOK_pre_pc_skillatk_bonus) (struct map_session_data **sd, uint16 *skill_id);
typedef int (*HPMHOOK_post_pc_skillatk_bonus) (int retVal___, struct map_session_data *sd, uint16 skill_id);
typedef int (*HPMHOOK_pre_pc_skillheal_bonus) (struct map_session_data **sd, uint16 *skill_id);
@@ -6206,6 +6246,10 @@ typedef int (*HPMHOOK_pre_pc_percentheal) (struct map_session_data **sd, int *hp
typedef int (*HPMHOOK_post_pc_percentheal) (int retVal___, struct map_session_data *sd, int hp, int sp);
typedef int (*HPMHOOK_pre_pc_jobchange) (struct map_session_data **sd, int *class, int *upper);
typedef int (*HPMHOOK_post_pc_jobchange) (int retVal___, struct map_session_data *sd, int class, int upper);
+typedef void (*HPMHOOK_pre_pc_hide) (struct map_session_data **sd, bool *show_msg);
+typedef void (*HPMHOOK_post_pc_hide) (struct map_session_data *sd, bool show_msg);
+typedef void (*HPMHOOK_pre_pc_unhide) (struct map_session_data **sd, bool *show_msg);
+typedef void (*HPMHOOK_post_pc_unhide) (struct map_session_data *sd, bool show_msg);
typedef int (*HPMHOOK_pre_pc_setoption) (struct map_session_data **sd, int *type);
typedef int (*HPMHOOK_post_pc_setoption) (int retVal___, struct map_session_data *sd, int type);
typedef int (*HPMHOOK_pre_pc_setcart) (struct map_session_data **sd, int *type);
@@ -6336,10 +6380,10 @@ typedef void (*HPMHOOK_pre_pc_itemcd_do) (struct map_session_data **sd, bool *lo
typedef void (*HPMHOOK_post_pc_itemcd_do) (struct map_session_data *sd, bool load);
typedef int (*HPMHOOK_pre_pc_load_combo) (struct map_session_data **sd);
typedef int (*HPMHOOK_post_pc_load_combo) (int retVal___, struct map_session_data *sd);
-typedef void (*HPMHOOK_pre_pc_add_charm) (struct map_session_data **sd, int *interval, int *max, int *type);
-typedef void (*HPMHOOK_post_pc_add_charm) (struct map_session_data *sd, int interval, int max, int type);
-typedef void (*HPMHOOK_pre_pc_del_charm) (struct map_session_data **sd, int *count, int *type);
-typedef void (*HPMHOOK_post_pc_del_charm) (struct map_session_data *sd, int count, int type);
+typedef void (*HPMHOOK_pre_pc_add_charm) (struct map_session_data **sd, int *interval, int *max, enum spirit_charm_types *type);
+typedef void (*HPMHOOK_post_pc_add_charm) (struct map_session_data *sd, int interval, int max, enum spirit_charm_types type);
+typedef void (*HPMHOOK_pre_pc_del_charm) (struct map_session_data **sd, int *count, enum spirit_charm_types *type);
+typedef void (*HPMHOOK_post_pc_del_charm) (struct map_session_data *sd, int count, enum spirit_charm_types type);
typedef void (*HPMHOOK_pre_pc_baselevelchanged) (struct map_session_data **sd);
typedef void (*HPMHOOK_post_pc_baselevelchanged) (struct map_session_data *sd);
typedef int (*HPMHOOK_pre_pc_level_penalty_mod) (int *diff, unsigned char *race, uint32 *mode, int *type);
@@ -6496,6 +6540,10 @@ typedef int (*HPMHOOK_pre_pet_final) (void);
typedef int (*HPMHOOK_post_pet_final) (int retVal___);
typedef int (*HPMHOOK_pre_pet_hungry_val) (struct pet_data **pd);
typedef int (*HPMHOOK_post_pet_hungry_val) (int retVal___, struct pet_data *pd);
+typedef void (*HPMHOOK_pre_pet_set_hunger) (struct pet_data **pd, int *value);
+typedef void (*HPMHOOK_post_pet_set_hunger) (struct pet_data *pd, int value);
+typedef int (*HPMHOOK_pre_pet_get_card4_value) (int *rename_flag, int *intimacy);
+typedef int (*HPMHOOK_post_pet_get_card4_value) (int retVal___, int rename_flag, int intimacy);
typedef void (*HPMHOOK_pre_pet_set_intimate) (struct pet_data **pd, int *value);
typedef void (*HPMHOOK_post_pet_set_intimate) (struct pet_data *pd, int value);
typedef int (*HPMHOOK_pre_pet_create_egg) (struct map_session_data **sd, int *item_id);
@@ -6520,6 +6568,8 @@ typedef int (*HPMHOOK_pre_pet_return_egg) (struct map_session_data **sd, struct
typedef int (*HPMHOOK_post_pet_return_egg) (int retVal___, struct map_session_data *sd, struct pet_data *pd);
typedef int (*HPMHOOK_pre_pet_data_init) (struct map_session_data **sd, struct s_pet **petinfo);
typedef int (*HPMHOOK_post_pet_data_init) (int retVal___, struct map_session_data *sd, struct s_pet *petinfo);
+typedef int (*HPMHOOK_pre_pet_spawn) (struct map_session_data **sd, bool *birth_process);
+typedef int (*HPMHOOK_post_pet_spawn) (int retVal___, struct map_session_data *sd, bool birth_process);
typedef int (*HPMHOOK_pre_pet_birth_process) (struct map_session_data **sd, struct s_pet **petinfo);
typedef int (*HPMHOOK_post_pet_birth_process) (int retVal___, struct map_session_data *sd, struct s_pet *petinfo);
typedef int (*HPMHOOK_pre_pet_recv_petdata) (int *account_id, struct s_pet **p, int *flag);
@@ -6836,8 +6886,8 @@ typedef void (*HPMHOOK_pre_script_set_constant2) (const char **name, int *value,
typedef void (*HPMHOOK_post_script_set_constant2) (const char *name, int value, bool is_parameter, bool is_deprecated);
typedef bool (*HPMHOOK_pre_script_get_constant) (const char **name, int **value);
typedef bool (*HPMHOOK_post_script_get_constant) (bool retVal___, const char *name, int *value);
-typedef void (*HPMHOOK_pre_script_label_add) (int *key, int *pos);
-typedef void (*HPMHOOK_post_script_label_add) (int key, int pos);
+typedef void (*HPMHOOK_pre_script_label_add) (int *key, int *pos, enum script_label_flags *flags);
+typedef void (*HPMHOOK_post_script_label_add) (int key, int pos, enum script_label_flags flags);
typedef void (*HPMHOOK_pre_script_run) (struct script_code **rootscript, int *pos, int *rid, int *oid);
typedef void (*HPMHOOK_post_script_run) (struct script_code *rootscript, int pos, int rid, int oid);
typedef void (*HPMHOOK_pre_script_run_npc) (struct script_code **rootscript, int *pos, int *rid, int *oid);
@@ -6902,6 +6952,8 @@ typedef const char* (*HPMHOOK_pre_script_parse_syntax_close_sub) (const char **p
typedef const char* (*HPMHOOK_post_script_parse_syntax_close_sub) (const char* retVal___, const char *p, int *flag);
typedef const char* (*HPMHOOK_pre_script_parse_syntax) (const char **p);
typedef const char* (*HPMHOOK_post_script_parse_syntax) (const char* retVal___, const char *p);
+typedef const char* (*HPMHOOK_pre_script_parse_syntax_function) (const char **p, bool *is_public);
+typedef const char* (*HPMHOOK_post_script_parse_syntax_function) (const char* retVal___, const char *p, bool is_public);
typedef c_op (*HPMHOOK_pre_script_get_com) (const struct script_buf **scriptbuf, int **pos);
typedef c_op (*HPMHOOK_post_script_get_com) (c_op retVal___, const struct script_buf *scriptbuf, int *pos);
typedef int (*HPMHOOK_pre_script_get_num) (const struct script_buf **scriptbuf, int **pos);
@@ -6966,6 +7018,8 @@ typedef const char* (*HPMHOOK_pre_script_print_line) (StringBuf **buf, const cha
typedef const char* (*HPMHOOK_post_script_print_line) (const char* retVal___, StringBuf *buf, const char *p, const char *mark, int line);
typedef void (*HPMHOOK_pre_script_errorwarning_sub) (StringBuf **buf, const char **src, const char **file, int *start_line, const char **error_msg, const char **error_pos);
typedef void (*HPMHOOK_post_script_errorwarning_sub) (StringBuf *buf, const char *src, const char *file, int start_line, const char *error_msg, const char *error_pos);
+typedef bool (*HPMHOOK_pre_script_is_permanent_variable) (const char **name);
+typedef bool (*HPMHOOK_post_script_is_permanent_variable) (bool retVal___, const char *name);
typedef int (*HPMHOOK_pre_script_set_reg) (struct script_state **st, struct map_session_data **sd, int64 *num, const char **name, const void **value, struct reg_db **ref);
typedef int (*HPMHOOK_post_script_set_reg) (int retVal___, struct script_state *st, struct map_session_data *sd, int64 num, const char *name, const void *value, struct reg_db *ref);
typedef void (*HPMHOOK_pre_script_set_reg_ref_str) (struct script_state **st, struct reg_db **n, int64 *num, const char **name, const char **str);
@@ -7182,10 +7236,10 @@ typedef void (*HPMHOOK_pre_skill_read_db) (bool *minimal);
typedef void (*HPMHOOK_post_skill_read_db) (bool minimal);
typedef int (*HPMHOOK_pre_skill_get_index) (int *skill_id);
typedef int (*HPMHOOK_post_skill_get_index) (int retVal___, int skill_id);
-typedef int (*HPMHOOK_pre_skill_get_type) (int *skill_id);
-typedef int (*HPMHOOK_post_skill_get_type) (int retVal___, int skill_id);
-typedef int (*HPMHOOK_pre_skill_get_hit) (int *skill_id);
-typedef int (*HPMHOOK_post_skill_get_hit) (int retVal___, int skill_id);
+typedef int (*HPMHOOK_pre_skill_get_type) (int *skill_id, int *skill_lv);
+typedef int (*HPMHOOK_post_skill_get_type) (int retVal___, int skill_id, int skill_lv);
+typedef int (*HPMHOOK_pre_skill_get_hit) (int *skill_id, int *skill_lv);
+typedef int (*HPMHOOK_post_skill_get_hit) (int retVal___, int skill_id, int skill_lv);
typedef int (*HPMHOOK_pre_skill_get_inf) (int *skill_id);
typedef int (*HPMHOOK_post_skill_get_inf) (int retVal___, int skill_id);
typedef int (*HPMHOOK_pre_skill_get_ele) (int *skill_id, int *skill_lv);
@@ -7204,20 +7258,32 @@ typedef int (*HPMHOOK_pre_skill_get_hp) (int *skill_id, int *skill_lv);
typedef int (*HPMHOOK_post_skill_get_hp) (int retVal___, int skill_id, int skill_lv);
typedef int (*HPMHOOK_pre_skill_get_mhp) (int *skill_id, int *skill_lv);
typedef int (*HPMHOOK_post_skill_get_mhp) (int retVal___, int skill_id, int skill_lv);
+typedef int (*HPMHOOK_pre_skill_get_msp) (int *skill_id, int *skill_lv);
+typedef int (*HPMHOOK_post_skill_get_msp) (int retVal___, int skill_id, int skill_lv);
typedef int (*HPMHOOK_pre_skill_get_sp) (int *skill_id, int *skill_lv);
typedef int (*HPMHOOK_post_skill_get_sp) (int retVal___, int skill_id, int skill_lv);
typedef int (*HPMHOOK_pre_skill_get_hp_rate) (int *skill_id, int *skill_lv);
typedef int (*HPMHOOK_post_skill_get_hp_rate) (int retVal___, int skill_id, int skill_lv);
typedef int (*HPMHOOK_pre_skill_get_sp_rate) (int *skill_id, int *skill_lv);
typedef int (*HPMHOOK_post_skill_get_sp_rate) (int retVal___, int skill_id, int skill_lv);
-typedef int (*HPMHOOK_pre_skill_get_state) (int *skill_id);
-typedef int (*HPMHOOK_post_skill_get_state) (int retVal___, int skill_id);
+typedef int (*HPMHOOK_pre_skill_get_state) (int *skill_id, int *skill_lv);
+typedef int (*HPMHOOK_post_skill_get_state) (int retVal___, int skill_id, int skill_lv);
typedef int (*HPMHOOK_pre_skill_get_spiritball) (int *skill_id, int *skill_lv);
typedef int (*HPMHOOK_post_skill_get_spiritball) (int retVal___, int skill_id, int skill_lv);
+typedef int (*HPMHOOK_pre_skill_get_item_index) (int *skill_id, int *skill_lv);
+typedef int (*HPMHOOK_post_skill_get_item_index) (int retVal___, int skill_id, int skill_lv);
typedef int (*HPMHOOK_pre_skill_get_itemid) (int *skill_id, int *item_idx);
typedef int (*HPMHOOK_post_skill_get_itemid) (int retVal___, int skill_id, int item_idx);
-typedef int (*HPMHOOK_pre_skill_get_itemqty) (int *skill_id, int *item_idx);
-typedef int (*HPMHOOK_post_skill_get_itemqty) (int retVal___, int skill_id, int item_idx);
+typedef int (*HPMHOOK_pre_skill_get_itemqty) (int *skill_id, int *item_idx, int *skill_lv);
+typedef int (*HPMHOOK_post_skill_get_itemqty) (int retVal___, int skill_id, int item_idx, int skill_lv);
+typedef bool (*HPMHOOK_pre_skill_get_item_any_flag) (int *skill_id, int *skill_lv);
+typedef bool (*HPMHOOK_post_skill_get_item_any_flag) (bool retVal___, int skill_id, int skill_lv);
+typedef int (*HPMHOOK_pre_skill_get_equip_id) (int *skill_id, int *item_idx);
+typedef int (*HPMHOOK_post_skill_get_equip_id) (int retVal___, int skill_id, int item_idx);
+typedef int (*HPMHOOK_pre_skill_get_equip_amount) (int *skill_id, int *item_idx, int *skill_lv);
+typedef int (*HPMHOOK_post_skill_get_equip_amount) (int retVal___, int skill_id, int item_idx, int skill_lv);
+typedef bool (*HPMHOOK_pre_skill_get_equip_any_flag) (int *skill_id, int *skill_lv);
+typedef bool (*HPMHOOK_post_skill_get_equip_any_flag) (bool retVal___, int skill_id, int skill_lv);
typedef int (*HPMHOOK_pre_skill_get_zeny) (int *skill_id, int *skill_lv);
typedef int (*HPMHOOK_post_skill_get_zeny) (int retVal___, int skill_id, int skill_lv);
typedef int (*HPMHOOK_pre_skill_get_num) (int *skill_id, int *skill_lv);
@@ -7236,32 +7302,32 @@ typedef int (*HPMHOOK_pre_skill_get_castnodex) (int *skill_id, int *skill_lv);
typedef int (*HPMHOOK_post_skill_get_castnodex) (int retVal___, int skill_id, int skill_lv);
typedef int (*HPMHOOK_pre_skill_get_delaynodex) (int *skill_id, int *skill_lv);
typedef int (*HPMHOOK_post_skill_get_delaynodex) (int retVal___, int skill_id, int skill_lv);
-typedef int (*HPMHOOK_pre_skill_get_castdef) (int *skill_id);
-typedef int (*HPMHOOK_post_skill_get_castdef) (int retVal___, int skill_id);
+typedef int (*HPMHOOK_pre_skill_get_castdef) (int *skill_id, int *skill_lv);
+typedef int (*HPMHOOK_post_skill_get_castdef) (int retVal___, int skill_id, int skill_lv);
typedef int (*HPMHOOK_pre_skill_get_weapontype) (int *skill_id);
typedef int (*HPMHOOK_post_skill_get_weapontype) (int retVal___, int skill_id);
typedef int (*HPMHOOK_pre_skill_get_ammotype) (int *skill_id);
typedef int (*HPMHOOK_post_skill_get_ammotype) (int retVal___, int skill_id);
typedef int (*HPMHOOK_pre_skill_get_ammo_qty) (int *skill_id, int *skill_lv);
typedef int (*HPMHOOK_post_skill_get_ammo_qty) (int retVal___, int skill_id, int skill_lv);
-typedef int (*HPMHOOK_pre_skill_get_unit_id) (int *skill_id, int *flag);
-typedef int (*HPMHOOK_post_skill_get_unit_id) (int retVal___, int skill_id, int flag);
+typedef int (*HPMHOOK_pre_skill_get_unit_id) (int *skill_id, int *skill_lv, int *flag);
+typedef int (*HPMHOOK_post_skill_get_unit_id) (int retVal___, int skill_id, int skill_lv, int flag);
typedef int (*HPMHOOK_pre_skill_get_inf2) (int *skill_id);
typedef int (*HPMHOOK_post_skill_get_inf2) (int retVal___, int skill_id);
-typedef int (*HPMHOOK_pre_skill_get_castcancel) (int *skill_id);
-typedef int (*HPMHOOK_post_skill_get_castcancel) (int retVal___, int skill_id);
+typedef int (*HPMHOOK_pre_skill_get_castcancel) (int *skill_id, int *skill_lv);
+typedef int (*HPMHOOK_post_skill_get_castcancel) (int retVal___, int skill_id, int skill_lv);
typedef int (*HPMHOOK_pre_skill_get_maxcount) (int *skill_id, int *skill_lv);
typedef int (*HPMHOOK_post_skill_get_maxcount) (int retVal___, int skill_id, int skill_lv);
typedef int (*HPMHOOK_pre_skill_get_blewcount) (int *skill_id, int *skill_lv);
typedef int (*HPMHOOK_post_skill_get_blewcount) (int retVal___, int skill_id, int skill_lv);
typedef int (*HPMHOOK_pre_skill_get_unit_flag) (int *skill_id);
typedef int (*HPMHOOK_post_skill_get_unit_flag) (int retVal___, int skill_id);
-typedef int (*HPMHOOK_pre_skill_get_unit_target) (int *skill_id);
-typedef int (*HPMHOOK_post_skill_get_unit_target) (int retVal___, int skill_id);
-typedef int (*HPMHOOK_pre_skill_get_unit_interval) (int *skill_id);
-typedef int (*HPMHOOK_post_skill_get_unit_interval) (int retVal___, int skill_id);
-typedef int (*HPMHOOK_pre_skill_get_unit_bl_target) (int *skill_id);
-typedef int (*HPMHOOK_post_skill_get_unit_bl_target) (int retVal___, int skill_id);
+typedef int (*HPMHOOK_pre_skill_get_unit_target) (int *skill_id, int *skill_lv);
+typedef int (*HPMHOOK_post_skill_get_unit_target) (int retVal___, int skill_id, int skill_lv);
+typedef int (*HPMHOOK_pre_skill_get_unit_interval) (int *skill_id, int *skill_lv);
+typedef int (*HPMHOOK_post_skill_get_unit_interval) (int retVal___, int skill_id, int skill_lv);
+typedef int (*HPMHOOK_pre_skill_get_unit_bl_target) (int *skill_id, int *skill_lv);
+typedef int (*HPMHOOK_post_skill_get_unit_bl_target) (int retVal___, int skill_id, int skill_lv);
typedef int (*HPMHOOK_pre_skill_get_unit_layout_type) (int *skill_id, int *skill_lv);
typedef int (*HPMHOOK_post_skill_get_unit_layout_type) (int retVal___, int skill_id, int skill_lv);
typedef int (*HPMHOOK_pre_skill_get_unit_range) (int *skill_id, int *skill_lv);
@@ -7282,8 +7348,8 @@ typedef bool (*HPMHOOK_pre_skill_is_combo) (int *skill_id);
typedef bool (*HPMHOOK_post_skill_is_combo) (bool retVal___, int skill_id);
typedef int (*HPMHOOK_pre_skill_name2id) (const char **name);
typedef int (*HPMHOOK_post_skill_name2id) (int retVal___, const char *name);
-typedef int (*HPMHOOK_pre_skill_isammotype) (struct map_session_data **sd, int *skill_id);
-typedef int (*HPMHOOK_post_skill_isammotype) (int retVal___, struct map_session_data *sd, int skill_id);
+typedef int (*HPMHOOK_pre_skill_isammotype) (struct map_session_data **sd, int *skill_id, int *skill_lv);
+typedef int (*HPMHOOK_post_skill_isammotype) (int retVal___, struct map_session_data *sd, int skill_id, int skill_lv);
typedef int (*HPMHOOK_pre_skill_castend_id) (int *tid, int64 *tick, int *id, intptr_t *data);
typedef int (*HPMHOOK_post_skill_castend_id) (int retVal___, int tid, int64 tick, int id, intptr_t data);
typedef int (*HPMHOOK_pre_skill_castend_pos) (int *tid, int64 *tick, int *id, intptr_t *data);
@@ -7298,8 +7364,8 @@ typedef int (*HPMHOOK_pre_skill_additional_effect) (struct block_list **src, str
typedef int (*HPMHOOK_post_skill_additional_effect) (int retVal___, struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int attack_type, int dmg_lv, int64 tick);
typedef int (*HPMHOOK_pre_skill_counter_additional_effect) (struct block_list **src, struct block_list **bl, uint16 *skill_id, uint16 *skill_lv, int *attack_type, int64 *tick);
typedef int (*HPMHOOK_post_skill_counter_additional_effect) (int retVal___, struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int attack_type, int64 tick);
-typedef int (*HPMHOOK_pre_skill_blown) (struct block_list **src, struct block_list **target, int *count, int8 *dir, int *flag);
-typedef int (*HPMHOOK_post_skill_blown) (int retVal___, struct block_list *src, struct block_list *target, int count, int8 dir, int flag);
+typedef int (*HPMHOOK_pre_skill_blown) (struct block_list **src, struct block_list **target, int *count, enum unit_dir *dir, int *flag);
+typedef int (*HPMHOOK_post_skill_blown) (int retVal___, struct block_list *src, struct block_list *target, int count, enum unit_dir dir, int flag);
typedef int (*HPMHOOK_pre_skill_break_equip) (struct block_list **bl, unsigned short *where, int *rate, int *flag);
typedef int (*HPMHOOK_post_skill_break_equip) (int retVal___, struct block_list *bl, unsigned short where, int rate, int flag);
typedef int (*HPMHOOK_pre_skill_strip_equip) (struct block_list **bl, unsigned short *where, int *rate, int *lv, int *time);
@@ -7314,8 +7380,8 @@ typedef int (*HPMHOOK_pre_skill_delunit) (struct skill_unit **su);
typedef int (*HPMHOOK_post_skill_delunit) (int retVal___, struct skill_unit *su);
typedef struct skill_unit_group* (*HPMHOOK_pre_skill_init_unitgroup) (struct block_list **src, int *count, uint16 *skill_id, uint16 *skill_lv, int *unit_id, int *limit, int *interval);
typedef struct skill_unit_group* (*HPMHOOK_post_skill_init_unitgroup) (struct skill_unit_group* retVal___, struct block_list *src, int count, uint16 skill_id, uint16 skill_lv, int unit_id, int limit, int interval);
-typedef int (*HPMHOOK_pre_skill_del_unitgroup) (struct skill_unit_group **group, const char **file, int *line, const char **func);
-typedef int (*HPMHOOK_post_skill_del_unitgroup) (int retVal___, struct skill_unit_group *group, const char *file, int line, const char *func);
+typedef int (*HPMHOOK_pre_skill_del_unitgroup) (struct skill_unit_group **group);
+typedef int (*HPMHOOK_post_skill_del_unitgroup) (int retVal___, struct skill_unit_group *group);
typedef int (*HPMHOOK_pre_skill_clear_unitgroup) (struct block_list **src);
typedef int (*HPMHOOK_post_skill_clear_unitgroup) (int retVal___, struct block_list *src);
typedef int (*HPMHOOK_pre_skill_clear_group) (struct block_list **bl, int *flag);
@@ -7332,12 +7398,18 @@ typedef int (*HPMHOOK_pre_skill_vf_cast_fix) (struct block_list **bl, double *ti
typedef int (*HPMHOOK_post_skill_vf_cast_fix) (int retVal___, struct block_list *bl, double time, uint16 skill_id, uint16 skill_lv);
typedef int (*HPMHOOK_pre_skill_delay_fix) (struct block_list **bl, uint16 *skill_id, uint16 *skill_lv);
typedef int (*HPMHOOK_post_skill_delay_fix) (int retVal___, struct block_list *bl, uint16 skill_id, uint16 skill_lv);
-typedef bool (*HPMHOOK_pre_skill_is_item_skill) (struct map_session_data **sd, int *skill_id, int *skill_lv);
-typedef bool (*HPMHOOK_post_skill_is_item_skill) (bool retVal___, struct map_session_data *sd, int skill_id, int skill_lv);
+typedef int (*HPMHOOK_pre_skill_check_condition_required_equip) (struct map_session_data **sd, int *skill_id, int *skill_lv);
+typedef int (*HPMHOOK_post_skill_check_condition_required_equip) (int retVal___, struct map_session_data *sd, int skill_id, int skill_lv);
typedef int (*HPMHOOK_pre_skill_check_condition_castbegin) (struct map_session_data **sd, uint16 *skill_id, uint16 *skill_lv);
typedef int (*HPMHOOK_post_skill_check_condition_castbegin) (int retVal___, struct map_session_data *sd, uint16 skill_id, uint16 skill_lv);
+typedef int (*HPMHOOK_pre_skill_check_condition_required_items) (struct map_session_data **sd, int *skill_id, int *skill_lv);
+typedef int (*HPMHOOK_post_skill_check_condition_required_items) (int retVal___, struct map_session_data *sd, int skill_id, int skill_lv);
+typedef bool (*HPMHOOK_pre_skill_items_required) (struct map_session_data **sd, int *skill_id, int *skill_lv);
+typedef bool (*HPMHOOK_post_skill_items_required) (bool retVal___, struct map_session_data *sd, int skill_id, int skill_lv);
typedef int (*HPMHOOK_pre_skill_check_condition_castend) (struct map_session_data **sd, uint16 *skill_id, uint16 *skill_lv);
typedef int (*HPMHOOK_post_skill_check_condition_castend) (int retVal___, struct map_session_data *sd, uint16 skill_id, uint16 skill_lv);
+typedef int (*HPMHOOK_pre_skill_get_any_item_index) (struct map_session_data **sd, int *skill_id, int *skill_lv);
+typedef int (*HPMHOOK_post_skill_get_any_item_index) (int retVal___, struct map_session_data *sd, int skill_id, int skill_lv);
typedef int (*HPMHOOK_pre_skill_consume_requirement) (struct map_session_data **sd, uint16 *skill_id, uint16 *skill_lv, short *type);
typedef int (*HPMHOOK_post_skill_consume_requirement) (int retVal___, struct map_session_data *sd, uint16 skill_id, uint16 skill_lv, short type);
typedef struct skill_condition (*HPMHOOK_pre_skill_get_requirement) (struct map_session_data **sd, uint16 *skill_id, uint16 *skill_lv);
@@ -7384,6 +7456,8 @@ typedef int (*HPMHOOK_pre_skill_not_ok_hom_unknown) (uint16 *skill_id, struct ho
typedef int (*HPMHOOK_post_skill_not_ok_hom_unknown) (int retVal___, uint16 skill_id, struct homun_data *hd);
typedef int (*HPMHOOK_pre_skill_not_ok_mercenary) (uint16 *skill_id, struct mercenary_data **md);
typedef int (*HPMHOOK_post_skill_not_ok_mercenary) (int retVal___, uint16 skill_id, struct mercenary_data *md);
+typedef void (*HPMHOOK_pre_skill_validate_autocast_data) (struct map_session_data **sd, int *skill_id, int *skill_lv);
+typedef void (*HPMHOOK_post_skill_validate_autocast_data) (struct map_session_data *sd, int skill_id, int skill_lv);
typedef int (*HPMHOOK_pre_skill_chastle_mob_changetarget) (struct block_list **bl, va_list ap);
typedef int (*HPMHOOK_post_skill_chastle_mob_changetarget) (int retVal___, struct block_list *bl, va_list ap);
typedef int (*HPMHOOK_pre_skill_can_produce_mix) (struct map_session_data **sd, int *nameid, int *trigger, int *qty);
@@ -7422,8 +7496,8 @@ typedef int (*HPMHOOK_pre_skill_check_unit_range2) (struct block_list **bl, int
typedef int (*HPMHOOK_post_skill_check_unit_range2) (int retVal___, struct block_list *bl, int x, int y, uint16 skill_id, uint16 skill_lv);
typedef int (*HPMHOOK_pre_skill_check_unit_range2_sub) (struct block_list **bl, va_list ap);
typedef int (*HPMHOOK_post_skill_check_unit_range2_sub) (int retVal___, struct block_list *bl, va_list ap);
-typedef void (*HPMHOOK_pre_skill_toggle_magicpower) (struct block_list **bl, uint16 *skill_id);
-typedef void (*HPMHOOK_post_skill_toggle_magicpower) (struct block_list *bl, uint16 skill_id);
+typedef void (*HPMHOOK_pre_skill_toggle_magicpower) (struct block_list **bl, uint16 *skill_id, int *skill_lv);
+typedef void (*HPMHOOK_post_skill_toggle_magicpower) (struct block_list *bl, uint16 skill_id, int skill_lv);
typedef int (*HPMHOOK_pre_skill_magic_reflect) (struct block_list **src, struct block_list **bl, int *type);
typedef int (*HPMHOOK_post_skill_magic_reflect) (int retVal___, struct block_list *src, struct block_list *bl, int type);
typedef int (*HPMHOOK_pre_skill_onskillusage) (struct map_session_data **sd, struct block_list **bl, uint16 *skill_id, int64 *tick);
@@ -7464,10 +7538,10 @@ typedef int (*HPMHOOK_pre_skill_check_condition_char_sub) (struct block_list **b
typedef int (*HPMHOOK_post_skill_check_condition_char_sub) (int retVal___, struct block_list *bl, va_list ap);
typedef int (*HPMHOOK_pre_skill_check_condition_mob_master_sub) (struct block_list **bl, va_list ap);
typedef int (*HPMHOOK_post_skill_check_condition_mob_master_sub) (int retVal___, struct block_list *bl, va_list ap);
-typedef void (*HPMHOOK_pre_skill_brandishspear_first) (struct square **tc, uint8 *dir, int16 *x, int16 *y);
-typedef void (*HPMHOOK_post_skill_brandishspear_first) (struct square *tc, uint8 dir, int16 x, int16 y);
-typedef void (*HPMHOOK_pre_skill_brandishspear_dir) (struct square **tc, uint8 *dir, int *are);
-typedef void (*HPMHOOK_post_skill_brandishspear_dir) (struct square *tc, uint8 dir, int are);
+typedef void (*HPMHOOK_pre_skill_brandishspear_first) (struct square **tc, enum unit_dir *dir, int16 *x, int16 *y);
+typedef void (*HPMHOOK_post_skill_brandishspear_first) (struct square *tc, enum unit_dir dir, int16 x, int16 y);
+typedef void (*HPMHOOK_pre_skill_brandishspear_dir) (struct square **tc, enum unit_dir *dir, int *are);
+typedef void (*HPMHOOK_post_skill_brandishspear_dir) (struct square *tc, enum unit_dir dir, int are);
typedef int (*HPMHOOK_pre_skill_get_fixed_cast) (int *skill_id, int *skill_lv);
typedef int (*HPMHOOK_post_skill_get_fixed_cast) (int retVal___, int skill_id, int skill_lv);
typedef int (*HPMHOOK_pre_skill_sit_count) (struct block_list **bl, va_list ap);
@@ -7504,42 +7578,130 @@ typedef void (*HPMHOOK_pre_skill_init_unit_layout) (void);
typedef void (*HPMHOOK_post_skill_init_unit_layout) (void);
typedef void (*HPMHOOK_pre_skill_init_unit_layout_unknown) (int *skill_idx, int *pos);
typedef void (*HPMHOOK_post_skill_init_unit_layout_unknown) (int skill_idx, int pos);
+typedef void (*HPMHOOK_pre_skill_validate_id) (struct config_setting_t **conf, struct s_skill_db **sk, int *conf_index);
+typedef void (*HPMHOOK_post_skill_validate_id) (struct config_setting_t *conf, struct s_skill_db *sk, int conf_index);
+typedef bool (*HPMHOOK_pre_skill_name_contains_invalid_character) (const char **name);
+typedef bool (*HPMHOOK_post_skill_name_contains_invalid_character) (bool retVal___, const char *name);
+typedef void (*HPMHOOK_pre_skill_validate_name) (struct config_setting_t **conf, struct s_skill_db **sk);
+typedef void (*HPMHOOK_post_skill_validate_name) (struct config_setting_t *conf, struct s_skill_db *sk);
+typedef void (*HPMHOOK_pre_skill_validate_max_level) (struct config_setting_t **conf, struct s_skill_db **sk);
+typedef void (*HPMHOOK_post_skill_validate_max_level) (struct config_setting_t *conf, struct s_skill_db *sk);
+typedef void (*HPMHOOK_pre_skill_validate_description) (struct config_setting_t **conf, struct s_skill_db **sk);
+typedef void (*HPMHOOK_post_skill_validate_description) (struct config_setting_t *conf, struct s_skill_db *sk);
+typedef void (*HPMHOOK_pre_skill_validate_range) (struct config_setting_t **conf, struct s_skill_db **sk);
+typedef void (*HPMHOOK_post_skill_validate_range) (struct config_setting_t *conf, struct s_skill_db *sk);
typedef void (*HPMHOOK_pre_skill_validate_hittype) (struct config_setting_t **conf, struct s_skill_db **sk);
typedef void (*HPMHOOK_post_skill_validate_hittype) (struct config_setting_t *conf, struct s_skill_db *sk);
typedef void (*HPMHOOK_pre_skill_validate_skilltype) (struct config_setting_t **conf, struct s_skill_db **sk);
typedef void (*HPMHOOK_post_skill_validate_skilltype) (struct config_setting_t *conf, struct s_skill_db *sk);
+typedef void (*HPMHOOK_pre_skill_validate_skillinfo) (struct config_setting_t **conf, struct s_skill_db **sk);
+typedef void (*HPMHOOK_post_skill_validate_skillinfo) (struct config_setting_t *conf, struct s_skill_db *sk);
typedef void (*HPMHOOK_pre_skill_validate_attacktype) (struct config_setting_t **conf, struct s_skill_db **sk);
typedef void (*HPMHOOK_post_skill_validate_attacktype) (struct config_setting_t *conf, struct s_skill_db *sk);
typedef void (*HPMHOOK_pre_skill_validate_element) (struct config_setting_t **conf, struct s_skill_db **sk);
typedef void (*HPMHOOK_post_skill_validate_element) (struct config_setting_t *conf, struct s_skill_db *sk);
-typedef void (*HPMHOOK_pre_skill_validate_skillinfo) (struct config_setting_t **conf, struct s_skill_db **sk);
-typedef void (*HPMHOOK_post_skill_validate_skillinfo) (struct config_setting_t *conf, struct s_skill_db *sk);
typedef void (*HPMHOOK_pre_skill_validate_damagetype) (struct config_setting_t **conf, struct s_skill_db **sk);
typedef void (*HPMHOOK_post_skill_validate_damagetype) (struct config_setting_t *conf, struct s_skill_db *sk);
+typedef void (*HPMHOOK_pre_skill_validate_splash_range) (struct config_setting_t **conf, struct s_skill_db **sk);
+typedef void (*HPMHOOK_post_skill_validate_splash_range) (struct config_setting_t *conf, struct s_skill_db *sk);
+typedef void (*HPMHOOK_pre_skill_validate_number_of_hits) (struct config_setting_t **conf, struct s_skill_db **sk);
+typedef void (*HPMHOOK_post_skill_validate_number_of_hits) (struct config_setting_t *conf, struct s_skill_db *sk);
+typedef void (*HPMHOOK_pre_skill_validate_interrupt_cast) (struct config_setting_t **conf, struct s_skill_db **sk);
+typedef void (*HPMHOOK_post_skill_validate_interrupt_cast) (struct config_setting_t *conf, struct s_skill_db *sk);
+typedef void (*HPMHOOK_pre_skill_validate_cast_def_rate) (struct config_setting_t **conf, struct s_skill_db **sk);
+typedef void (*HPMHOOK_post_skill_validate_cast_def_rate) (struct config_setting_t *conf, struct s_skill_db *sk);
+typedef void (*HPMHOOK_pre_skill_validate_number_of_instances) (struct config_setting_t **conf, struct s_skill_db **sk);
+typedef void (*HPMHOOK_post_skill_validate_number_of_instances) (struct config_setting_t *conf, struct s_skill_db *sk);
+typedef void (*HPMHOOK_pre_skill_validate_knock_back_tiles) (struct config_setting_t **conf, struct s_skill_db **sk);
+typedef void (*HPMHOOK_post_skill_validate_knock_back_tiles) (struct config_setting_t *conf, struct s_skill_db *sk);
+typedef void (*HPMHOOK_pre_skill_validate_cast_time) (struct config_setting_t **conf, struct s_skill_db **sk);
+typedef void (*HPMHOOK_post_skill_validate_cast_time) (struct config_setting_t *conf, struct s_skill_db *sk);
+typedef void (*HPMHOOK_pre_skill_validate_act_delay) (struct config_setting_t **conf, struct s_skill_db **sk);
+typedef void (*HPMHOOK_post_skill_validate_act_delay) (struct config_setting_t *conf, struct s_skill_db *sk);
+typedef void (*HPMHOOK_pre_skill_validate_walk_delay) (struct config_setting_t **conf, struct s_skill_db **sk);
+typedef void (*HPMHOOK_post_skill_validate_walk_delay) (struct config_setting_t *conf, struct s_skill_db *sk);
+typedef void (*HPMHOOK_pre_skill_validate_skill_data1) (struct config_setting_t **conf, struct s_skill_db **sk);
+typedef void (*HPMHOOK_post_skill_validate_skill_data1) (struct config_setting_t *conf, struct s_skill_db *sk);
+typedef void (*HPMHOOK_pre_skill_validate_skill_data2) (struct config_setting_t **conf, struct s_skill_db **sk);
+typedef void (*HPMHOOK_post_skill_validate_skill_data2) (struct config_setting_t *conf, struct s_skill_db *sk);
+typedef void (*HPMHOOK_pre_skill_validate_cooldown) (struct config_setting_t **conf, struct s_skill_db **sk);
+typedef void (*HPMHOOK_post_skill_validate_cooldown) (struct config_setting_t *conf, struct s_skill_db *sk);
+typedef void (*HPMHOOK_pre_skill_validate_fixed_cast_time) (struct config_setting_t **conf, struct s_skill_db **sk);
+typedef void (*HPMHOOK_post_skill_validate_fixed_cast_time) (struct config_setting_t *conf, struct s_skill_db *sk);
typedef void (*HPMHOOK_pre_skill_validate_castnodex) (struct config_setting_t **conf, struct s_skill_db **sk, bool *delay);
typedef void (*HPMHOOK_post_skill_validate_castnodex) (struct config_setting_t *conf, struct s_skill_db *sk, bool delay);
+typedef void (*HPMHOOK_pre_skill_validate_hp_cost) (struct config_setting_t **conf, struct s_skill_db **sk);
+typedef void (*HPMHOOK_post_skill_validate_hp_cost) (struct config_setting_t *conf, struct s_skill_db *sk);
+typedef void (*HPMHOOK_pre_skill_validate_sp_cost) (struct config_setting_t **conf, struct s_skill_db **sk);
+typedef void (*HPMHOOK_post_skill_validate_sp_cost) (struct config_setting_t *conf, struct s_skill_db *sk);
+typedef void (*HPMHOOK_pre_skill_validate_hp_rate_cost) (struct config_setting_t **conf, struct s_skill_db **sk);
+typedef void (*HPMHOOK_post_skill_validate_hp_rate_cost) (struct config_setting_t *conf, struct s_skill_db *sk);
+typedef void (*HPMHOOK_pre_skill_validate_sp_rate_cost) (struct config_setting_t **conf, struct s_skill_db **sk);
+typedef void (*HPMHOOK_post_skill_validate_sp_rate_cost) (struct config_setting_t *conf, struct s_skill_db *sk);
+typedef void (*HPMHOOK_pre_skill_validate_max_hp_trigger) (struct config_setting_t **conf, struct s_skill_db **sk);
+typedef void (*HPMHOOK_post_skill_validate_max_hp_trigger) (struct config_setting_t *conf, struct s_skill_db *sk);
+typedef void (*HPMHOOK_pre_skill_validate_max_sp_trigger) (struct config_setting_t **conf, struct s_skill_db **sk);
+typedef void (*HPMHOOK_post_skill_validate_max_sp_trigger) (struct config_setting_t *conf, struct s_skill_db *sk);
+typedef void (*HPMHOOK_pre_skill_validate_zeny_cost) (struct config_setting_t **conf, struct s_skill_db **sk);
+typedef void (*HPMHOOK_post_skill_validate_zeny_cost) (struct config_setting_t *conf, struct s_skill_db *sk);
+typedef int (*HPMHOOK_pre_skill_validate_weapontype_sub) (const char **type, bool *on, struct s_skill_db **sk);
+typedef int (*HPMHOOK_post_skill_validate_weapontype_sub) (int retVal___, const char *type, bool on, struct s_skill_db *sk);
typedef void (*HPMHOOK_pre_skill_validate_weapontype) (struct config_setting_t **conf, struct s_skill_db **sk);
typedef void (*HPMHOOK_post_skill_validate_weapontype) (struct config_setting_t *conf, struct s_skill_db *sk);
+typedef int (*HPMHOOK_pre_skill_validate_ammotype_sub) (const char **type, bool *on, struct s_skill_db **sk);
+typedef int (*HPMHOOK_post_skill_validate_ammotype_sub) (int retVal___, const char *type, bool on, struct s_skill_db *sk);
typedef void (*HPMHOOK_pre_skill_validate_ammotype) (struct config_setting_t **conf, struct s_skill_db **sk);
typedef void (*HPMHOOK_post_skill_validate_ammotype) (struct config_setting_t *conf, struct s_skill_db *sk);
+typedef void (*HPMHOOK_pre_skill_validate_ammo_amount) (struct config_setting_t **conf, struct s_skill_db **sk);
+typedef void (*HPMHOOK_post_skill_validate_ammo_amount) (struct config_setting_t *conf, struct s_skill_db *sk);
+typedef int (*HPMHOOK_pre_skill_validate_state_sub) (const char **state);
+typedef int (*HPMHOOK_post_skill_validate_state_sub) (int retVal___, const char *state);
typedef void (*HPMHOOK_pre_skill_validate_state) (struct config_setting_t **conf, struct s_skill_db **sk);
typedef void (*HPMHOOK_post_skill_validate_state) (struct config_setting_t *conf, struct s_skill_db *sk);
+typedef void (*HPMHOOK_pre_skill_validate_spirit_sphere_cost) (struct config_setting_t **conf, struct s_skill_db **sk);
+typedef void (*HPMHOOK_post_skill_validate_spirit_sphere_cost) (struct config_setting_t *conf, struct s_skill_db *sk);
+typedef void (*HPMHOOK_pre_skill_validate_item_requirements_sub_item_amount) (struct config_setting_t **conf, struct s_skill_db **sk, int *item_index);
+typedef void (*HPMHOOK_post_skill_validate_item_requirements_sub_item_amount) (struct config_setting_t *conf, struct s_skill_db *sk, int item_index);
+typedef void (*HPMHOOK_pre_skill_validate_item_requirements_sub_items) (struct config_setting_t **conf, struct s_skill_db **sk);
+typedef void (*HPMHOOK_post_skill_validate_item_requirements_sub_items) (struct config_setting_t *conf, struct s_skill_db *sk);
+typedef void (*HPMHOOK_pre_skill_validate_item_requirements_sub_any_flag) (struct config_setting_t **conf, struct s_skill_db **sk);
+typedef void (*HPMHOOK_post_skill_validate_item_requirements_sub_any_flag) (struct config_setting_t *conf, struct s_skill_db *sk);
typedef void (*HPMHOOK_pre_skill_validate_item_requirements) (struct config_setting_t **conf, struct s_skill_db **sk);
typedef void (*HPMHOOK_post_skill_validate_item_requirements) (struct config_setting_t *conf, struct s_skill_db *sk);
-typedef void (*HPMHOOK_pre_skill_validate_unit_target) (struct config_setting_t **conf, struct s_skill_db **sk);
-typedef void (*HPMHOOK_post_skill_validate_unit_target) (struct config_setting_t *conf, struct s_skill_db *sk);
+typedef void (*HPMHOOK_pre_skill_validate_equip_requirements_sub_item_amount) (struct config_setting_t **conf, struct s_skill_db **sk, int *item_index);
+typedef void (*HPMHOOK_post_skill_validate_equip_requirements_sub_item_amount) (struct config_setting_t *conf, struct s_skill_db *sk, int item_index);
+typedef void (*HPMHOOK_pre_skill_validate_equip_requirements_sub_items) (struct config_setting_t **conf, struct s_skill_db **sk);
+typedef void (*HPMHOOK_post_skill_validate_equip_requirements_sub_items) (struct config_setting_t *conf, struct s_skill_db *sk);
+typedef void (*HPMHOOK_pre_skill_validate_equip_requirements_sub_any_flag) (struct config_setting_t **conf, struct s_skill_db **sk);
+typedef void (*HPMHOOK_post_skill_validate_equip_requirements_sub_any_flag) (struct config_setting_t *conf, struct s_skill_db *sk);
+typedef void (*HPMHOOK_pre_skill_validate_equip_requirements) (struct config_setting_t **conf, struct s_skill_db **sk);
+typedef void (*HPMHOOK_post_skill_validate_equip_requirements) (struct config_setting_t *conf, struct s_skill_db *sk);
+typedef int (*HPMHOOK_pre_skill_validate_requirements_item_name) (const char **name);
+typedef int (*HPMHOOK_post_skill_validate_requirements_item_name) (int retVal___, const char *name);
+typedef void (*HPMHOOK_pre_skill_validate_requirements) (struct config_setting_t **conf, struct s_skill_db **sk);
+typedef void (*HPMHOOK_post_skill_validate_requirements) (struct config_setting_t *conf, struct s_skill_db *sk);
+typedef int (*HPMHOOK_pre_skill_validate_unit_id_sub) (int *unit_id);
+typedef int (*HPMHOOK_post_skill_validate_unit_id_sub) (int retVal___, int unit_id);
+typedef void (*HPMHOOK_pre_skill_validate_unit_id) (struct config_setting_t **conf, struct s_skill_db **sk);
+typedef void (*HPMHOOK_post_skill_validate_unit_id) (struct config_setting_t *conf, struct s_skill_db *sk);
+typedef void (*HPMHOOK_pre_skill_validate_unit_layout) (struct config_setting_t **conf, struct s_skill_db **sk);
+typedef void (*HPMHOOK_post_skill_validate_unit_layout) (struct config_setting_t *conf, struct s_skill_db *sk);
+typedef void (*HPMHOOK_pre_skill_validate_unit_range) (struct config_setting_t **conf, struct s_skill_db **sk);
+typedef void (*HPMHOOK_post_skill_validate_unit_range) (struct config_setting_t *conf, struct s_skill_db *sk);
+typedef void (*HPMHOOK_pre_skill_validate_unit_interval) (struct config_setting_t **conf, struct s_skill_db **sk);
+typedef void (*HPMHOOK_post_skill_validate_unit_interval) (struct config_setting_t *conf, struct s_skill_db *sk);
+typedef int (*HPMHOOK_pre_skill_validate_unit_flag_sub) (const char **type, bool *on, struct s_skill_db **sk);
+typedef int (*HPMHOOK_post_skill_validate_unit_flag_sub) (int retVal___, const char *type, bool on, struct s_skill_db *sk);
typedef void (*HPMHOOK_pre_skill_validate_unit_flag) (struct config_setting_t **conf, struct s_skill_db **sk);
typedef void (*HPMHOOK_post_skill_validate_unit_flag) (struct config_setting_t *conf, struct s_skill_db *sk);
+typedef int (*HPMHOOK_pre_skill_validate_unit_target_sub) (const char **target);
+typedef int (*HPMHOOK_post_skill_validate_unit_target_sub) (int retVal___, const char *target);
+typedef void (*HPMHOOK_pre_skill_validate_unit_target) (struct config_setting_t **conf, struct s_skill_db **sk);
+typedef void (*HPMHOOK_post_skill_validate_unit_target) (struct config_setting_t *conf, struct s_skill_db *sk);
+typedef void (*HPMHOOK_pre_skill_validate_unit) (struct config_setting_t **conf, struct s_skill_db **sk);
+typedef void (*HPMHOOK_post_skill_validate_unit) (struct config_setting_t *conf, struct s_skill_db *sk);
typedef void (*HPMHOOK_pre_skill_validate_additional_fields) (struct config_setting_t **conf, struct s_skill_db **sk);
typedef void (*HPMHOOK_post_skill_validate_additional_fields) (struct config_setting_t *conf, struct s_skill_db *sk);
-typedef bool (*HPMHOOK_pre_skill_validate_skilldb) (struct s_skill_db **skt, const char **source);
-typedef bool (*HPMHOOK_post_skill_validate_skilldb) (bool retVal___, struct s_skill_db *skt, const char *source);
-typedef int (*HPMHOOK_pre_skill_validate_weapontype_sub) (const char **type, bool *on, struct s_skill_db **sk);
-typedef int (*HPMHOOK_post_skill_validate_weapontype_sub) (int retVal___, const char *type, bool on, struct s_skill_db *sk);
-typedef int (*HPMHOOK_pre_skill_validate_ammotype_sub) (const char **type, bool *on, struct s_skill_db **sk);
-typedef int (*HPMHOOK_post_skill_validate_ammotype_sub) (int retVal___, const char *type, bool on, struct s_skill_db *sk);
-typedef int (*HPMHOOK_pre_skill_validate_unit_flag_sub) (const char **type, bool *on, struct s_skill_db **sk);
-typedef int (*HPMHOOK_post_skill_validate_unit_flag_sub) (int retVal___, const char *type, bool on, struct s_skill_db *sk);
typedef bool (*HPMHOOK_pre_skill_read_skilldb) (const char **filename);
typedef bool (*HPMHOOK_post_skill_read_skilldb) (bool retVal___, const char *filename);
typedef void (*HPMHOOK_pre_skill_config_set_level) (struct config_setting_t **conf, int **arr);
@@ -7608,8 +7770,8 @@ typedef int (*HPMHOOK_pre_skill_attack_copy_unknown) (int **attack_type, struct
typedef int (*HPMHOOK_post_skill_attack_copy_unknown) (int retVal___, int *attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag);
typedef int (*HPMHOOK_pre_skill_attack_dir_unknown) (int **attack_type, struct block_list **src, struct block_list **dsrc, struct block_list **bl, uint16 **skill_id, uint16 **skill_lv, int64 **tick, int **flag);
typedef int (*HPMHOOK_post_skill_attack_dir_unknown) (int retVal___, int *attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag);
-typedef void (*HPMHOOK_pre_skill_attack_blow_unknown) (int **attack_type, struct block_list **src, struct block_list **dsrc, struct block_list **bl, uint16 **skill_id, uint16 **skill_lv, int64 **tick, int **flag, int **type, struct Damage **dmg, int64 **damage, int8 **dir);
-typedef void (*HPMHOOK_post_skill_attack_blow_unknown) (int *attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, int *type, struct Damage *dmg, int64 *damage, int8 *dir);
+typedef void (*HPMHOOK_pre_skill_attack_blow_unknown) (int **attack_type, struct block_list **src, struct block_list **dsrc, struct block_list **bl, uint16 **skill_id, uint16 **skill_lv, int64 **tick, int **flag, int **type, struct Damage **dmg, int64 **damage, enum unit_dir **dir);
+typedef void (*HPMHOOK_post_skill_attack_blow_unknown) (int *attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, int *type, struct Damage *dmg, int64 *damage, enum unit_dir *dir);
typedef void (*HPMHOOK_pre_skill_attack_post_unknown) (int **attack_type, struct block_list **src, struct block_list **dsrc, struct block_list **bl, uint16 **skill_id, uint16 **skill_lv, int64 **tick, int **flag);
typedef void (*HPMHOOK_post_skill_attack_post_unknown) (int *attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag);
typedef bool (*HPMHOOK_pre_skill_timerskill_dead_unknown) (struct block_list **src, struct unit_data **ud, struct skill_timerskill **skl);
@@ -7662,6 +7824,8 @@ typedef int (*HPMHOOK_pre_skill_check_npc_chaospanic) (struct block_list **bl, v
typedef int (*HPMHOOK_post_skill_check_npc_chaospanic) (int retVal___, struct block_list *bl, va_list args);
typedef int (*HPMHOOK_pre_skill_count_wos) (struct block_list **bl, va_list ap);
typedef int (*HPMHOOK_post_skill_count_wos) (int retVal___, struct block_list *bl, va_list ap);
+typedef int (*HPMHOOK_pre_skill_get_linked_song_dance_id) (int *skill_id);
+typedef int (*HPMHOOK_post_skill_get_linked_song_dance_id) (int retVal___, int skill_id);
#endif // MAP_SKILL_H
#ifdef COMMON_SOCKET_H /* sockt */
typedef void (*HPMHOOK_pre_sockt_init) (void);
@@ -7872,8 +8036,8 @@ typedef int (*HPMHOOK_pre_status_change_start) (struct block_list **src, struct
typedef int (*HPMHOOK_post_status_change_start) (int retVal___, struct block_list *src, struct block_list *bl, enum sc_type type, int rate, int val1, int val2, int val3, int val4, int tick, int flag);
typedef int (*HPMHOOK_pre_status_change_start_sub) (struct block_list **src, struct block_list **bl, enum sc_type *type, int *rate, int *val1, int *val2, int *val3, int *val4, int *tick, int *total_tick, int *flag);
typedef int (*HPMHOOK_post_status_change_start_sub) (int retVal___, struct block_list *src, struct block_list *bl, enum sc_type type, int rate, int val1, int val2, int val3, int val4, int tick, int total_tick, int flag);
-typedef int (*HPMHOOK_pre_status_change_end_) (struct block_list **bl, enum sc_type *type, int *tid, const char **file, int *line);
-typedef int (*HPMHOOK_post_status_change_end_) (int retVal___, struct block_list *bl, enum sc_type type, int tid, const char *file, int line);
+typedef int (*HPMHOOK_pre_status_change_end_) (struct block_list **bl, enum sc_type *type, int *tid);
+typedef int (*HPMHOOK_post_status_change_end_) (int retVal___, struct block_list *bl, enum sc_type type, int tid);
typedef bool (*HPMHOOK_pre_status_is_immune_to_status) (struct status_change **sc, enum sc_type *type);
typedef bool (*HPMHOOK_post_status_is_immune_to_status) (bool retVal___, struct status_change *sc, enum sc_type type);
typedef bool (*HPMHOOK_pre_status_is_boss_resist_sc) (enum sc_type *type);
@@ -8288,22 +8452,24 @@ typedef int (*HPMHOOK_pre_unit_final) (void);
typedef int (*HPMHOOK_post_unit_final) (int retVal___);
typedef struct unit_data* (*HPMHOOK_pre_unit_bl2ud) (struct block_list **bl);
typedef struct unit_data* (*HPMHOOK_post_unit_bl2ud) (struct unit_data* retVal___, struct block_list *bl);
+typedef const struct unit_data* (*HPMHOOK_pre_unit_cbl2ud) (const struct block_list **bl);
+typedef const struct unit_data* (*HPMHOOK_post_unit_cbl2ud) (const struct unit_data* retVal___, const struct block_list *bl);
typedef struct unit_data* (*HPMHOOK_pre_unit_bl2ud2) (struct block_list **bl);
typedef struct unit_data* (*HPMHOOK_post_unit_bl2ud2) (struct unit_data* retVal___, struct block_list *bl);
typedef void (*HPMHOOK_pre_unit_init_ud) (struct unit_data **ud);
typedef void (*HPMHOOK_post_unit_init_ud) (struct unit_data *ud);
typedef int (*HPMHOOK_pre_unit_attack_timer) (int *tid, int64 *tick, int *id, intptr_t *data);
typedef int (*HPMHOOK_post_unit_attack_timer) (int retVal___, int tid, int64 tick, int id, intptr_t data);
-typedef int (*HPMHOOK_pre_unit_walktoxy_timer) (int *tid, int64 *tick, int *id, intptr_t *data);
-typedef int (*HPMHOOK_post_unit_walktoxy_timer) (int retVal___, int tid, int64 tick, int id, intptr_t data);
-typedef int (*HPMHOOK_pre_unit_walktoxy_sub) (struct block_list **bl);
-typedef int (*HPMHOOK_post_unit_walktoxy_sub) (int retVal___, struct block_list *bl);
-typedef int (*HPMHOOK_pre_unit_delay_walktoxy_timer) (int *tid, int64 *tick, int *id, intptr_t *data);
-typedef int (*HPMHOOK_post_unit_delay_walktoxy_timer) (int retVal___, int tid, int64 tick, int id, intptr_t data);
-typedef int (*HPMHOOK_pre_unit_walktoxy) (struct block_list **bl, short *x, short *y, int *flag);
-typedef int (*HPMHOOK_post_unit_walktoxy) (int retVal___, struct block_list *bl, short x, short y, int flag);
-typedef int (*HPMHOOK_pre_unit_walktobl_sub) (int *tid, int64 *tick, int *id, intptr_t *data);
-typedef int (*HPMHOOK_post_unit_walktobl_sub) (int retVal___, int tid, int64 tick, int id, intptr_t data);
+typedef int (*HPMHOOK_pre_unit_walk_toxy_timer) (int *tid, int64 *tick, int *id, intptr_t *data);
+typedef int (*HPMHOOK_post_unit_walk_toxy_timer) (int retVal___, int tid, int64 tick, int id, intptr_t data);
+typedef int (*HPMHOOK_pre_unit_walk_toxy_sub) (struct block_list **bl);
+typedef int (*HPMHOOK_post_unit_walk_toxy_sub) (int retVal___, struct block_list *bl);
+typedef int (*HPMHOOK_pre_unit_delay_walk_toxy_timer) (int *tid, int64 *tick, int *id, intptr_t *data);
+typedef int (*HPMHOOK_post_unit_delay_walk_toxy_timer) (int retVal___, int tid, int64 tick, int id, intptr_t data);
+typedef int (*HPMHOOK_pre_unit_walk_toxy) (struct block_list **bl, short *x, short *y, int *flag);
+typedef int (*HPMHOOK_post_unit_walk_toxy) (int retVal___, struct block_list *bl, short x, short y, int flag);
+typedef int (*HPMHOOK_pre_unit_walktobl_timer) (int *tid, int64 *tick, int *id, intptr_t *data);
+typedef int (*HPMHOOK_post_unit_walktobl_timer) (int retVal___, int tid, int64 tick, int id, intptr_t data);
typedef int (*HPMHOOK_pre_unit_walktobl) (struct block_list **bl, struct block_list **tbl, int *range, int *flag);
typedef int (*HPMHOOK_post_unit_walktobl) (int retVal___, struct block_list *bl, struct block_list *tbl, int range, int flag);
typedef bool (*HPMHOOK_pre_unit_run) (struct block_list **bl, struct map_session_data **sd, enum sc_type *type);
@@ -8314,20 +8480,22 @@ typedef int (*HPMHOOK_pre_unit_escape) (struct block_list **bl, struct block_lis
typedef int (*HPMHOOK_post_unit_escape) (int retVal___, struct block_list *bl, struct block_list *target, short dist);
typedef int (*HPMHOOK_pre_unit_movepos) (struct block_list **bl, short *dst_x, short *dst_y, int *easy, bool *checkpath);
typedef int (*HPMHOOK_post_unit_movepos) (int retVal___, struct block_list *bl, short dst_x, short dst_y, int easy, bool checkpath);
-typedef int (*HPMHOOK_pre_unit_setdir) (struct block_list **bl, unsigned char *dir);
-typedef int (*HPMHOOK_post_unit_setdir) (int retVal___, struct block_list *bl, unsigned char dir);
-typedef uint8 (*HPMHOOK_pre_unit_getdir) (struct block_list **bl);
-typedef uint8 (*HPMHOOK_post_unit_getdir) (uint8 retVal___, struct block_list *bl);
+typedef int (*HPMHOOK_pre_unit_set_dir) (struct block_list **bl, enum unit_dir *dir);
+typedef int (*HPMHOOK_post_unit_set_dir) (int retVal___, struct block_list *bl, enum unit_dir dir);
+typedef enum unit_dir (*HPMHOOK_pre_unit_getdir) (const struct block_list **bl);
+typedef enum unit_dir (*HPMHOOK_post_unit_getdir) (enum unit_dir retVal___, const struct block_list *bl);
typedef int (*HPMHOOK_pre_unit_blown) (struct block_list **bl, int *dx, int *dy, int *count, int *flag);
typedef int (*HPMHOOK_post_unit_blown) (int retVal___, struct block_list *bl, int dx, int dy, int count, int flag);
typedef int (*HPMHOOK_pre_unit_warp) (struct block_list **bl, short *m, short *x, short *y, enum clr_type *type);
typedef int (*HPMHOOK_post_unit_warp) (int retVal___, struct block_list *bl, short m, short x, short y, enum clr_type type);
+typedef int (*HPMHOOK_pre_unit_warpto_master) (struct block_list **master_bl, struct block_list **slave_bl);
+typedef int (*HPMHOOK_post_unit_warpto_master) (int retVal___, struct block_list *master_bl, struct block_list *slave_bl);
typedef int (*HPMHOOK_pre_unit_stop_walking) (struct block_list **bl, int *type);
typedef int (*HPMHOOK_post_unit_stop_walking) (int retVal___, struct block_list *bl, int type);
typedef int (*HPMHOOK_pre_unit_skilluse_id) (struct block_list **src, int *target_id, uint16 *skill_id, uint16 *skill_lv);
typedef int (*HPMHOOK_post_unit_skilluse_id) (int retVal___, struct block_list *src, int target_id, uint16 skill_id, uint16 skill_lv);
-typedef int (*HPMHOOK_pre_unit_step_timer) (int *tid, int64 *tick, int *id, intptr_t *data);
-typedef int (*HPMHOOK_post_unit_step_timer) (int retVal___, int tid, int64 tick, int id, intptr_t data);
+typedef int (*HPMHOOK_pre_unit_steptimer) (int *tid, int64 *tick, int *id, intptr_t *data);
+typedef int (*HPMHOOK_post_unit_steptimer) (int retVal___, int tid, int64 tick, int id, intptr_t data);
typedef void (*HPMHOOK_pre_unit_stop_stepaction) (struct block_list **bl);
typedef void (*HPMHOOK_post_unit_stop_stepaction) (struct block_list *bl);
typedef int (*HPMHOOK_pre_unit_is_walking) (struct block_list **bl);
@@ -8358,8 +8526,8 @@ typedef bool (*HPMHOOK_pre_unit_can_reach_pos) (struct block_list **bl, int *x,
typedef bool (*HPMHOOK_post_unit_can_reach_pos) (bool retVal___, struct block_list *bl, int x, int y, int easy);
typedef bool (*HPMHOOK_pre_unit_can_reach_bl) (struct block_list **bl, struct block_list **tbl, int *range, int *easy, short **x, short **y);
typedef bool (*HPMHOOK_post_unit_can_reach_bl) (bool retVal___, struct block_list *bl, struct block_list *tbl, int range, int easy, short *x, short *y);
-typedef int (*HPMHOOK_pre_unit_calc_pos) (struct block_list **bl, int *tx, int *ty, uint8 *dir);
-typedef int (*HPMHOOK_post_unit_calc_pos) (int retVal___, struct block_list *bl, int tx, int ty, uint8 dir);
+typedef int (*HPMHOOK_pre_unit_calc_pos) (struct block_list **bl, int *tx, int *ty, enum unit_dir *dir);
+typedef int (*HPMHOOK_post_unit_calc_pos) (int retVal___, struct block_list *bl, int tx, int ty, enum unit_dir dir);
typedef int (*HPMHOOK_pre_unit_attack_timer_sub) (struct block_list **src, int *tid, int64 *tick);
typedef int (*HPMHOOK_post_unit_attack_timer_sub) (int retVal___, struct block_list *src, int tid, int64 tick);
typedef int (*HPMHOOK_pre_unit_skillcastcancel) (struct block_list **bl, int *type);
diff --git a/src/plugins/HPMHooking/HPMHooking_char.HPMHooksCore.inc b/src/plugins/HPMHooking/HPMHooking_char.HPMHooksCore.inc
index 20f57dcb9..ab34a4f18 100644
--- a/src/plugins/HPMHooking/HPMHooking_char.HPMHooksCore.inc
+++ b/src/plugins/HPMHooking/HPMHooking_char.HPMHooksCore.inc
@@ -1308,6 +1308,10 @@ struct {
struct HPMHookPoint *HP_mutex_cond_signal_post;
struct HPMHookPoint *HP_mutex_cond_broadcast_pre;
struct HPMHookPoint *HP_mutex_cond_broadcast_post;
+ struct HPMHookPoint *HP_nullpo_init_pre;
+ struct HPMHookPoint *HP_nullpo_init_post;
+ struct HPMHookPoint *HP_nullpo_final_pre;
+ struct HPMHookPoint *HP_nullpo_final_post;
struct HPMHookPoint *HP_nullpo_assert_report_pre;
struct HPMHookPoint *HP_nullpo_assert_report_post;
struct HPMHookPoint *HP_packets_init_pre;
@@ -2933,6 +2937,10 @@ struct {
int HP_mutex_cond_signal_post;
int HP_mutex_cond_broadcast_pre;
int HP_mutex_cond_broadcast_post;
+ int HP_nullpo_init_pre;
+ int HP_nullpo_init_post;
+ int HP_nullpo_final_pre;
+ int HP_nullpo_final_post;
int HP_nullpo_assert_report_pre;
int HP_nullpo_assert_report_post;
int HP_packets_init_pre;
diff --git a/src/plugins/HPMHooking/HPMHooking_char.HookingPoints.inc b/src/plugins/HPMHooking/HPMHooking_char.HookingPoints.inc
index e8e211f8b..238580b83 100644
--- a/src/plugins/HPMHooking/HPMHooking_char.HookingPoints.inc
+++ b/src/plugins/HPMHooking/HPMHooking_char.HookingPoints.inc
@@ -696,6 +696,8 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(mutex->cond_signal, HP_mutex_cond_signal) },
{ HP_POP(mutex->cond_broadcast, HP_mutex_cond_broadcast) },
/* nullpo_interface */
+ { HP_POP(nullpo->init, HP_nullpo_init) },
+ { HP_POP(nullpo->final, HP_nullpo_final) },
{ HP_POP(nullpo->assert_report, HP_nullpo_assert_report) },
/* packets_interface */
{ HP_POP(packets->init, HP_packets_init) },
diff --git a/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc
index a022abb54..8c1dec681 100644
--- a/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc
+++ b/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc
@@ -17160,6 +17160,58 @@ void HP_mutex_cond_broadcast(struct cond_data *c) {
return;
}
/* nullpo_interface */
+void HP_nullpo_init(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_nullpo_init_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_nullpo_init_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_nullpo_init_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.nullpo.init();
+ }
+ if (HPMHooks.count.HP_nullpo_init_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_nullpo_init_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_nullpo_init_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
+void HP_nullpo_final(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_nullpo_final_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_nullpo_final_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_nullpo_final_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.nullpo.final();
+ }
+ if (HPMHooks.count.HP_nullpo_final_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_nullpo_final_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_nullpo_final_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
void HP_nullpo_assert_report(const char *file, int line, const char *func, const char *targetname, const char *title) {
int hIndex = 0;
if (HPMHooks.count.HP_nullpo_assert_report_pre > 0) {
diff --git a/src/plugins/HPMHooking/HPMHooking_login.HPMHooksCore.inc b/src/plugins/HPMHooking/HPMHooking_login.HPMHooksCore.inc
index c638a1ef6..2875df334 100644
--- a/src/plugins/HPMHooking/HPMHooking_login.HPMHooksCore.inc
+++ b/src/plugins/HPMHooking/HPMHooking_login.HPMHooksCore.inc
@@ -520,6 +520,10 @@ struct {
struct HPMHookPoint *HP_mutex_cond_signal_post;
struct HPMHookPoint *HP_mutex_cond_broadcast_pre;
struct HPMHookPoint *HP_mutex_cond_broadcast_post;
+ struct HPMHookPoint *HP_nullpo_init_pre;
+ struct HPMHookPoint *HP_nullpo_init_post;
+ struct HPMHookPoint *HP_nullpo_final_pre;
+ struct HPMHookPoint *HP_nullpo_final_post;
struct HPMHookPoint *HP_nullpo_assert_report_pre;
struct HPMHookPoint *HP_nullpo_assert_report_post;
struct HPMHookPoint *HP_packets_init_pre;
@@ -1325,6 +1329,10 @@ struct {
int HP_mutex_cond_signal_post;
int HP_mutex_cond_broadcast_pre;
int HP_mutex_cond_broadcast_post;
+ int HP_nullpo_init_pre;
+ int HP_nullpo_init_post;
+ int HP_nullpo_final_pre;
+ int HP_nullpo_final_post;
int HP_nullpo_assert_report_pre;
int HP_nullpo_assert_report_post;
int HP_packets_init_pre;
diff --git a/src/plugins/HPMHooking/HPMHooking_login.HookingPoints.inc b/src/plugins/HPMHooking/HPMHooking_login.HookingPoints.inc
index ef6081f41..61864325b 100644
--- a/src/plugins/HPMHooking/HPMHooking_login.HookingPoints.inc
+++ b/src/plugins/HPMHooking/HPMHooking_login.HookingPoints.inc
@@ -290,6 +290,8 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(mutex->cond_signal, HP_mutex_cond_signal) },
{ HP_POP(mutex->cond_broadcast, HP_mutex_cond_broadcast) },
/* nullpo_interface */
+ { HP_POP(nullpo->init, HP_nullpo_init) },
+ { HP_POP(nullpo->final, HP_nullpo_final) },
{ HP_POP(nullpo->assert_report, HP_nullpo_assert_report) },
/* packets_interface */
{ HP_POP(packets->init, HP_packets_init) },
diff --git a/src/plugins/HPMHooking/HPMHooking_login.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_login.Hooks.inc
index 20c709bce..1c1817276 100644
--- a/src/plugins/HPMHooking/HPMHooking_login.Hooks.inc
+++ b/src/plugins/HPMHooking/HPMHooking_login.Hooks.inc
@@ -6638,6 +6638,58 @@ void HP_mutex_cond_broadcast(struct cond_data *c) {
return;
}
/* nullpo_interface */
+void HP_nullpo_init(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_nullpo_init_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_nullpo_init_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_nullpo_init_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.nullpo.init();
+ }
+ if (HPMHooks.count.HP_nullpo_init_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_nullpo_init_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_nullpo_init_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
+void HP_nullpo_final(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_nullpo_final_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_nullpo_final_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_nullpo_final_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.nullpo.final();
+ }
+ if (HPMHooks.count.HP_nullpo_final_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_nullpo_final_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_nullpo_final_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
void HP_nullpo_assert_report(const char *file, int line, const char *func, const char *targetname, const char *title) {
int hIndex = 0;
if (HPMHooks.count.HP_nullpo_assert_report_pre > 0) {
diff --git a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc
index 6d8776f18..62d2327da 100644
--- a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc
+++ b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc
@@ -1000,6 +1000,10 @@ struct {
struct HPMHookPoint *HP_clif_chatname_ack_post;
struct HPMHookPoint *HP_clif_elemname_ack_pre;
struct HPMHookPoint *HP_clif_elemname_ack_post;
+ struct HPMHookPoint *HP_clif_skillname_ack_pre;
+ struct HPMHookPoint *HP_clif_skillname_ack_post;
+ struct HPMHookPoint *HP_clif_itemname_ack_pre;
+ struct HPMHookPoint *HP_clif_itemname_ack_post;
struct HPMHookPoint *HP_clif_unknownname_ack_pre;
struct HPMHookPoint *HP_clif_unknownname_ack_post;
struct HPMHookPoint *HP_clif_monster_hp_bar_pre;
@@ -2260,6 +2264,8 @@ struct {
struct HPMHookPoint *HP_clif_attendance_getendtime_post;
struct HPMHookPoint *HP_clif_pOpenUIRequest_pre;
struct HPMHookPoint *HP_clif_pOpenUIRequest_post;
+ struct HPMHookPoint *HP_clif_open_ui_send_pre;
+ struct HPMHookPoint *HP_clif_open_ui_send_post;
struct HPMHookPoint *HP_clif_open_ui_pre;
struct HPMHookPoint *HP_clif_open_ui_post;
struct HPMHookPoint *HP_clif_pAttendanceRewardRequest_pre;
@@ -2352,6 +2358,14 @@ struct {
struct HPMHookPoint *HP_clif_plapineDdukDdak_ack_post;
struct HPMHookPoint *HP_clif_plapineDdukDdak_close_pre;
struct HPMHookPoint *HP_clif_plapineDdukDdak_close_post;
+ struct HPMHookPoint *HP_clif_lapineUpgrade_open_pre;
+ struct HPMHookPoint *HP_clif_lapineUpgrade_open_post;
+ struct HPMHookPoint *HP_clif_lapineUpgrade_result_pre;
+ struct HPMHookPoint *HP_clif_lapineUpgrade_result_post;
+ struct HPMHookPoint *HP_clif_pLapineUpgrade_close_pre;
+ struct HPMHookPoint *HP_clif_pLapineUpgrade_close_post;
+ struct HPMHookPoint *HP_clif_pLapineUpgrade_makeItem_pre;
+ struct HPMHookPoint *HP_clif_pLapineUpgrade_makeItem_post;
struct HPMHookPoint *HP_clif_pReqGearOff_pre;
struct HPMHookPoint *HP_clif_pReqGearOff_post;
struct HPMHookPoint *HP_cmdline_init_pre;
@@ -3816,20 +3830,32 @@ struct {
struct HPMHookPoint *HP_mapit_prev_post;
struct HPMHookPoint *HP_mapit_exists_pre;
struct HPMHookPoint *HP_mapit_exists_post;
- struct HPMHookPoint *HP_mapreg_init_pre;
- struct HPMHookPoint *HP_mapreg_init_post;
- struct HPMHookPoint *HP_mapreg_final_pre;
- struct HPMHookPoint *HP_mapreg_final_post;
struct HPMHookPoint *HP_mapreg_readreg_pre;
struct HPMHookPoint *HP_mapreg_readreg_post;
struct HPMHookPoint *HP_mapreg_readregstr_pre;
struct HPMHookPoint *HP_mapreg_readregstr_post;
+ struct HPMHookPoint *HP_mapreg_set_num_db_pre;
+ struct HPMHookPoint *HP_mapreg_set_num_db_post;
+ struct HPMHookPoint *HP_mapreg_delete_num_db_pre;
+ struct HPMHookPoint *HP_mapreg_delete_num_db_post;
struct HPMHookPoint *HP_mapreg_setreg_pre;
struct HPMHookPoint *HP_mapreg_setreg_post;
+ struct HPMHookPoint *HP_mapreg_set_str_db_pre;
+ struct HPMHookPoint *HP_mapreg_set_str_db_post;
+ struct HPMHookPoint *HP_mapreg_delete_str_db_pre;
+ struct HPMHookPoint *HP_mapreg_delete_str_db_post;
struct HPMHookPoint *HP_mapreg_setregstr_pre;
struct HPMHookPoint *HP_mapreg_setregstr_post;
+ struct HPMHookPoint *HP_mapreg_load_num_db_pre;
+ struct HPMHookPoint *HP_mapreg_load_num_db_post;
+ struct HPMHookPoint *HP_mapreg_load_str_db_pre;
+ struct HPMHookPoint *HP_mapreg_load_str_db_post;
struct HPMHookPoint *HP_mapreg_load_pre;
struct HPMHookPoint *HP_mapreg_load_post;
+ struct HPMHookPoint *HP_mapreg_save_num_db_pre;
+ struct HPMHookPoint *HP_mapreg_save_num_db_post;
+ struct HPMHookPoint *HP_mapreg_save_str_db_pre;
+ struct HPMHookPoint *HP_mapreg_save_str_db_post;
struct HPMHookPoint *HP_mapreg_save_pre;
struct HPMHookPoint *HP_mapreg_save_post;
struct HPMHookPoint *HP_mapreg_save_timer_pre;
@@ -3838,8 +3864,12 @@ struct {
struct HPMHookPoint *HP_mapreg_destroyreg_post;
struct HPMHookPoint *HP_mapreg_reload_pre;
struct HPMHookPoint *HP_mapreg_reload_post;
- struct HPMHookPoint *HP_mapreg_config_read_pre;
- struct HPMHookPoint *HP_mapreg_config_read_post;
+ struct HPMHookPoint *HP_mapreg_config_read_registry_pre;
+ struct HPMHookPoint *HP_mapreg_config_read_registry_post;
+ struct HPMHookPoint *HP_mapreg_final_pre;
+ struct HPMHookPoint *HP_mapreg_final_post;
+ struct HPMHookPoint *HP_mapreg_init_pre;
+ struct HPMHookPoint *HP_mapreg_init_post;
struct HPMHookPoint *HP_md5_string_pre;
struct HPMHookPoint *HP_md5_string_post;
struct HPMHookPoint *HP_md5_binary_pre;
@@ -4420,6 +4450,10 @@ struct {
struct HPMHookPoint *HP_npc_questinfo_clear_post;
struct HPMHookPoint *HP_npc_secure_timeout_timer_pre;
struct HPMHookPoint *HP_npc_secure_timeout_timer_post;
+ struct HPMHookPoint *HP_nullpo_init_pre;
+ struct HPMHookPoint *HP_nullpo_init_post;
+ struct HPMHookPoint *HP_nullpo_final_pre;
+ struct HPMHookPoint *HP_nullpo_final_post;
struct HPMHookPoint *HP_nullpo_assert_report_pre;
struct HPMHookPoint *HP_nullpo_assert_report_post;
struct HPMHookPoint *HP_packets_init_pre;
@@ -4764,8 +4798,14 @@ struct {
struct HPMHookPoint *HP_pc_checkitem_post;
struct HPMHookPoint *HP_pc_useitem_pre;
struct HPMHookPoint *HP_pc_useitem_post;
- struct HPMHookPoint *HP_pc_itemskill_clear_pre;
- struct HPMHookPoint *HP_pc_itemskill_clear_post;
+ struct HPMHookPoint *HP_pc_autocast_clear_current_pre;
+ struct HPMHookPoint *HP_pc_autocast_clear_current_post;
+ struct HPMHookPoint *HP_pc_autocast_clear_pre;
+ struct HPMHookPoint *HP_pc_autocast_clear_post;
+ struct HPMHookPoint *HP_pc_autocast_set_current_pre;
+ struct HPMHookPoint *HP_pc_autocast_set_current_post;
+ struct HPMHookPoint *HP_pc_autocast_remove_pre;
+ struct HPMHookPoint *HP_pc_autocast_remove_post;
struct HPMHookPoint *HP_pc_skillatk_bonus_pre;
struct HPMHookPoint *HP_pc_skillatk_bonus_post;
struct HPMHookPoint *HP_pc_skillheal_bonus_pre;
@@ -4786,6 +4826,10 @@ struct {
struct HPMHookPoint *HP_pc_percentheal_post;
struct HPMHookPoint *HP_pc_jobchange_pre;
struct HPMHookPoint *HP_pc_jobchange_post;
+ struct HPMHookPoint *HP_pc_hide_pre;
+ struct HPMHookPoint *HP_pc_hide_post;
+ struct HPMHookPoint *HP_pc_unhide_pre;
+ struct HPMHookPoint *HP_pc_unhide_post;
struct HPMHookPoint *HP_pc_setoption_pre;
struct HPMHookPoint *HP_pc_setoption_post;
struct HPMHookPoint *HP_pc_setcart_pre;
@@ -5072,6 +5116,10 @@ struct {
struct HPMHookPoint *HP_pet_final_post;
struct HPMHookPoint *HP_pet_hungry_val_pre;
struct HPMHookPoint *HP_pet_hungry_val_post;
+ struct HPMHookPoint *HP_pet_set_hunger_pre;
+ struct HPMHookPoint *HP_pet_set_hunger_post;
+ struct HPMHookPoint *HP_pet_get_card4_value_pre;
+ struct HPMHookPoint *HP_pet_get_card4_value_post;
struct HPMHookPoint *HP_pet_set_intimate_pre;
struct HPMHookPoint *HP_pet_set_intimate_post;
struct HPMHookPoint *HP_pet_create_egg_pre;
@@ -5096,6 +5144,8 @@ struct {
struct HPMHookPoint *HP_pet_return_egg_post;
struct HPMHookPoint *HP_pet_data_init_pre;
struct HPMHookPoint *HP_pet_data_init_post;
+ struct HPMHookPoint *HP_pet_spawn_pre;
+ struct HPMHookPoint *HP_pet_spawn_post;
struct HPMHookPoint *HP_pet_birth_process_pre;
struct HPMHookPoint *HP_pet_birth_process_post;
struct HPMHookPoint *HP_pet_recv_petdata_pre;
@@ -5432,6 +5482,8 @@ struct {
struct HPMHookPoint *HP_script_parse_syntax_close_sub_post;
struct HPMHookPoint *HP_script_parse_syntax_pre;
struct HPMHookPoint *HP_script_parse_syntax_post;
+ struct HPMHookPoint *HP_script_parse_syntax_function_pre;
+ struct HPMHookPoint *HP_script_parse_syntax_function_post;
struct HPMHookPoint *HP_script_get_com_pre;
struct HPMHookPoint *HP_script_get_com_post;
struct HPMHookPoint *HP_script_get_num_pre;
@@ -5496,6 +5548,8 @@ struct {
struct HPMHookPoint *HP_script_print_line_post;
struct HPMHookPoint *HP_script_errorwarning_sub_pre;
struct HPMHookPoint *HP_script_errorwarning_sub_post;
+ struct HPMHookPoint *HP_script_is_permanent_variable_pre;
+ struct HPMHookPoint *HP_script_is_permanent_variable_post;
struct HPMHookPoint *HP_script_set_reg_pre;
struct HPMHookPoint *HP_script_set_reg_post;
struct HPMHookPoint *HP_script_set_reg_ref_str_pre;
@@ -5728,6 +5782,8 @@ struct {
struct HPMHookPoint *HP_skill_get_hp_post;
struct HPMHookPoint *HP_skill_get_mhp_pre;
struct HPMHookPoint *HP_skill_get_mhp_post;
+ struct HPMHookPoint *HP_skill_get_msp_pre;
+ struct HPMHookPoint *HP_skill_get_msp_post;
struct HPMHookPoint *HP_skill_get_sp_pre;
struct HPMHookPoint *HP_skill_get_sp_post;
struct HPMHookPoint *HP_skill_get_hp_rate_pre;
@@ -5738,10 +5794,20 @@ struct {
struct HPMHookPoint *HP_skill_get_state_post;
struct HPMHookPoint *HP_skill_get_spiritball_pre;
struct HPMHookPoint *HP_skill_get_spiritball_post;
+ struct HPMHookPoint *HP_skill_get_item_index_pre;
+ struct HPMHookPoint *HP_skill_get_item_index_post;
struct HPMHookPoint *HP_skill_get_itemid_pre;
struct HPMHookPoint *HP_skill_get_itemid_post;
struct HPMHookPoint *HP_skill_get_itemqty_pre;
struct HPMHookPoint *HP_skill_get_itemqty_post;
+ struct HPMHookPoint *HP_skill_get_item_any_flag_pre;
+ struct HPMHookPoint *HP_skill_get_item_any_flag_post;
+ struct HPMHookPoint *HP_skill_get_equip_id_pre;
+ struct HPMHookPoint *HP_skill_get_equip_id_post;
+ struct HPMHookPoint *HP_skill_get_equip_amount_pre;
+ struct HPMHookPoint *HP_skill_get_equip_amount_post;
+ struct HPMHookPoint *HP_skill_get_equip_any_flag_pre;
+ struct HPMHookPoint *HP_skill_get_equip_any_flag_post;
struct HPMHookPoint *HP_skill_get_zeny_pre;
struct HPMHookPoint *HP_skill_get_zeny_post;
struct HPMHookPoint *HP_skill_get_num_pre;
@@ -5856,12 +5922,18 @@ struct {
struct HPMHookPoint *HP_skill_vf_cast_fix_post;
struct HPMHookPoint *HP_skill_delay_fix_pre;
struct HPMHookPoint *HP_skill_delay_fix_post;
- struct HPMHookPoint *HP_skill_is_item_skill_pre;
- struct HPMHookPoint *HP_skill_is_item_skill_post;
+ struct HPMHookPoint *HP_skill_check_condition_required_equip_pre;
+ struct HPMHookPoint *HP_skill_check_condition_required_equip_post;
struct HPMHookPoint *HP_skill_check_condition_castbegin_pre;
struct HPMHookPoint *HP_skill_check_condition_castbegin_post;
+ struct HPMHookPoint *HP_skill_check_condition_required_items_pre;
+ struct HPMHookPoint *HP_skill_check_condition_required_items_post;
+ struct HPMHookPoint *HP_skill_items_required_pre;
+ struct HPMHookPoint *HP_skill_items_required_post;
struct HPMHookPoint *HP_skill_check_condition_castend_pre;
struct HPMHookPoint *HP_skill_check_condition_castend_post;
+ struct HPMHookPoint *HP_skill_get_any_item_index_pre;
+ struct HPMHookPoint *HP_skill_get_any_item_index_post;
struct HPMHookPoint *HP_skill_consume_requirement_pre;
struct HPMHookPoint *HP_skill_consume_requirement_post;
struct HPMHookPoint *HP_skill_get_requirement_pre;
@@ -5908,6 +5980,8 @@ struct {
struct HPMHookPoint *HP_skill_not_ok_hom_unknown_post;
struct HPMHookPoint *HP_skill_not_ok_mercenary_pre;
struct HPMHookPoint *HP_skill_not_ok_mercenary_post;
+ struct HPMHookPoint *HP_skill_validate_autocast_data_pre;
+ struct HPMHookPoint *HP_skill_validate_autocast_data_post;
struct HPMHookPoint *HP_skill_chastle_mob_changetarget_pre;
struct HPMHookPoint *HP_skill_chastle_mob_changetarget_post;
struct HPMHookPoint *HP_skill_can_produce_mix_pre;
@@ -6028,42 +6102,130 @@ struct {
struct HPMHookPoint *HP_skill_init_unit_layout_post;
struct HPMHookPoint *HP_skill_init_unit_layout_unknown_pre;
struct HPMHookPoint *HP_skill_init_unit_layout_unknown_post;
+ struct HPMHookPoint *HP_skill_validate_id_pre;
+ struct HPMHookPoint *HP_skill_validate_id_post;
+ struct HPMHookPoint *HP_skill_name_contains_invalid_character_pre;
+ struct HPMHookPoint *HP_skill_name_contains_invalid_character_post;
+ struct HPMHookPoint *HP_skill_validate_name_pre;
+ struct HPMHookPoint *HP_skill_validate_name_post;
+ struct HPMHookPoint *HP_skill_validate_max_level_pre;
+ struct HPMHookPoint *HP_skill_validate_max_level_post;
+ struct HPMHookPoint *HP_skill_validate_description_pre;
+ struct HPMHookPoint *HP_skill_validate_description_post;
+ struct HPMHookPoint *HP_skill_validate_range_pre;
+ struct HPMHookPoint *HP_skill_validate_range_post;
struct HPMHookPoint *HP_skill_validate_hittype_pre;
struct HPMHookPoint *HP_skill_validate_hittype_post;
struct HPMHookPoint *HP_skill_validate_skilltype_pre;
struct HPMHookPoint *HP_skill_validate_skilltype_post;
+ struct HPMHookPoint *HP_skill_validate_skillinfo_pre;
+ struct HPMHookPoint *HP_skill_validate_skillinfo_post;
struct HPMHookPoint *HP_skill_validate_attacktype_pre;
struct HPMHookPoint *HP_skill_validate_attacktype_post;
struct HPMHookPoint *HP_skill_validate_element_pre;
struct HPMHookPoint *HP_skill_validate_element_post;
- struct HPMHookPoint *HP_skill_validate_skillinfo_pre;
- struct HPMHookPoint *HP_skill_validate_skillinfo_post;
struct HPMHookPoint *HP_skill_validate_damagetype_pre;
struct HPMHookPoint *HP_skill_validate_damagetype_post;
+ struct HPMHookPoint *HP_skill_validate_splash_range_pre;
+ struct HPMHookPoint *HP_skill_validate_splash_range_post;
+ struct HPMHookPoint *HP_skill_validate_number_of_hits_pre;
+ struct HPMHookPoint *HP_skill_validate_number_of_hits_post;
+ struct HPMHookPoint *HP_skill_validate_interrupt_cast_pre;
+ struct HPMHookPoint *HP_skill_validate_interrupt_cast_post;
+ struct HPMHookPoint *HP_skill_validate_cast_def_rate_pre;
+ struct HPMHookPoint *HP_skill_validate_cast_def_rate_post;
+ struct HPMHookPoint *HP_skill_validate_number_of_instances_pre;
+ struct HPMHookPoint *HP_skill_validate_number_of_instances_post;
+ struct HPMHookPoint *HP_skill_validate_knock_back_tiles_pre;
+ struct HPMHookPoint *HP_skill_validate_knock_back_tiles_post;
+ struct HPMHookPoint *HP_skill_validate_cast_time_pre;
+ struct HPMHookPoint *HP_skill_validate_cast_time_post;
+ struct HPMHookPoint *HP_skill_validate_act_delay_pre;
+ struct HPMHookPoint *HP_skill_validate_act_delay_post;
+ struct HPMHookPoint *HP_skill_validate_walk_delay_pre;
+ struct HPMHookPoint *HP_skill_validate_walk_delay_post;
+ struct HPMHookPoint *HP_skill_validate_skill_data1_pre;
+ struct HPMHookPoint *HP_skill_validate_skill_data1_post;
+ struct HPMHookPoint *HP_skill_validate_skill_data2_pre;
+ struct HPMHookPoint *HP_skill_validate_skill_data2_post;
+ struct HPMHookPoint *HP_skill_validate_cooldown_pre;
+ struct HPMHookPoint *HP_skill_validate_cooldown_post;
+ struct HPMHookPoint *HP_skill_validate_fixed_cast_time_pre;
+ struct HPMHookPoint *HP_skill_validate_fixed_cast_time_post;
struct HPMHookPoint *HP_skill_validate_castnodex_pre;
struct HPMHookPoint *HP_skill_validate_castnodex_post;
+ struct HPMHookPoint *HP_skill_validate_hp_cost_pre;
+ struct HPMHookPoint *HP_skill_validate_hp_cost_post;
+ struct HPMHookPoint *HP_skill_validate_sp_cost_pre;
+ struct HPMHookPoint *HP_skill_validate_sp_cost_post;
+ struct HPMHookPoint *HP_skill_validate_hp_rate_cost_pre;
+ struct HPMHookPoint *HP_skill_validate_hp_rate_cost_post;
+ struct HPMHookPoint *HP_skill_validate_sp_rate_cost_pre;
+ struct HPMHookPoint *HP_skill_validate_sp_rate_cost_post;
+ struct HPMHookPoint *HP_skill_validate_max_hp_trigger_pre;
+ struct HPMHookPoint *HP_skill_validate_max_hp_trigger_post;
+ struct HPMHookPoint *HP_skill_validate_max_sp_trigger_pre;
+ struct HPMHookPoint *HP_skill_validate_max_sp_trigger_post;
+ struct HPMHookPoint *HP_skill_validate_zeny_cost_pre;
+ struct HPMHookPoint *HP_skill_validate_zeny_cost_post;
+ struct HPMHookPoint *HP_skill_validate_weapontype_sub_pre;
+ struct HPMHookPoint *HP_skill_validate_weapontype_sub_post;
struct HPMHookPoint *HP_skill_validate_weapontype_pre;
struct HPMHookPoint *HP_skill_validate_weapontype_post;
+ struct HPMHookPoint *HP_skill_validate_ammotype_sub_pre;
+ struct HPMHookPoint *HP_skill_validate_ammotype_sub_post;
struct HPMHookPoint *HP_skill_validate_ammotype_pre;
struct HPMHookPoint *HP_skill_validate_ammotype_post;
+ struct HPMHookPoint *HP_skill_validate_ammo_amount_pre;
+ struct HPMHookPoint *HP_skill_validate_ammo_amount_post;
+ struct HPMHookPoint *HP_skill_validate_state_sub_pre;
+ struct HPMHookPoint *HP_skill_validate_state_sub_post;
struct HPMHookPoint *HP_skill_validate_state_pre;
struct HPMHookPoint *HP_skill_validate_state_post;
+ struct HPMHookPoint *HP_skill_validate_spirit_sphere_cost_pre;
+ struct HPMHookPoint *HP_skill_validate_spirit_sphere_cost_post;
+ struct HPMHookPoint *HP_skill_validate_item_requirements_sub_item_amount_pre;
+ struct HPMHookPoint *HP_skill_validate_item_requirements_sub_item_amount_post;
+ struct HPMHookPoint *HP_skill_validate_item_requirements_sub_items_pre;
+ struct HPMHookPoint *HP_skill_validate_item_requirements_sub_items_post;
+ struct HPMHookPoint *HP_skill_validate_item_requirements_sub_any_flag_pre;
+ struct HPMHookPoint *HP_skill_validate_item_requirements_sub_any_flag_post;
struct HPMHookPoint *HP_skill_validate_item_requirements_pre;
struct HPMHookPoint *HP_skill_validate_item_requirements_post;
- struct HPMHookPoint *HP_skill_validate_unit_target_pre;
- struct HPMHookPoint *HP_skill_validate_unit_target_post;
+ struct HPMHookPoint *HP_skill_validate_equip_requirements_sub_item_amount_pre;
+ struct HPMHookPoint *HP_skill_validate_equip_requirements_sub_item_amount_post;
+ struct HPMHookPoint *HP_skill_validate_equip_requirements_sub_items_pre;
+ struct HPMHookPoint *HP_skill_validate_equip_requirements_sub_items_post;
+ struct HPMHookPoint *HP_skill_validate_equip_requirements_sub_any_flag_pre;
+ struct HPMHookPoint *HP_skill_validate_equip_requirements_sub_any_flag_post;
+ struct HPMHookPoint *HP_skill_validate_equip_requirements_pre;
+ struct HPMHookPoint *HP_skill_validate_equip_requirements_post;
+ struct HPMHookPoint *HP_skill_validate_requirements_item_name_pre;
+ struct HPMHookPoint *HP_skill_validate_requirements_item_name_post;
+ struct HPMHookPoint *HP_skill_validate_requirements_pre;
+ struct HPMHookPoint *HP_skill_validate_requirements_post;
+ struct HPMHookPoint *HP_skill_validate_unit_id_sub_pre;
+ struct HPMHookPoint *HP_skill_validate_unit_id_sub_post;
+ struct HPMHookPoint *HP_skill_validate_unit_id_pre;
+ struct HPMHookPoint *HP_skill_validate_unit_id_post;
+ struct HPMHookPoint *HP_skill_validate_unit_layout_pre;
+ struct HPMHookPoint *HP_skill_validate_unit_layout_post;
+ struct HPMHookPoint *HP_skill_validate_unit_range_pre;
+ struct HPMHookPoint *HP_skill_validate_unit_range_post;
+ struct HPMHookPoint *HP_skill_validate_unit_interval_pre;
+ struct HPMHookPoint *HP_skill_validate_unit_interval_post;
+ struct HPMHookPoint *HP_skill_validate_unit_flag_sub_pre;
+ struct HPMHookPoint *HP_skill_validate_unit_flag_sub_post;
struct HPMHookPoint *HP_skill_validate_unit_flag_pre;
struct HPMHookPoint *HP_skill_validate_unit_flag_post;
+ struct HPMHookPoint *HP_skill_validate_unit_target_sub_pre;
+ struct HPMHookPoint *HP_skill_validate_unit_target_sub_post;
+ struct HPMHookPoint *HP_skill_validate_unit_target_pre;
+ struct HPMHookPoint *HP_skill_validate_unit_target_post;
+ struct HPMHookPoint *HP_skill_validate_unit_pre;
+ struct HPMHookPoint *HP_skill_validate_unit_post;
struct HPMHookPoint *HP_skill_validate_additional_fields_pre;
struct HPMHookPoint *HP_skill_validate_additional_fields_post;
- struct HPMHookPoint *HP_skill_validate_skilldb_pre;
- struct HPMHookPoint *HP_skill_validate_skilldb_post;
- struct HPMHookPoint *HP_skill_validate_weapontype_sub_pre;
- struct HPMHookPoint *HP_skill_validate_weapontype_sub_post;
- struct HPMHookPoint *HP_skill_validate_ammotype_sub_pre;
- struct HPMHookPoint *HP_skill_validate_ammotype_sub_post;
- struct HPMHookPoint *HP_skill_validate_unit_flag_sub_pre;
- struct HPMHookPoint *HP_skill_validate_unit_flag_sub_post;
struct HPMHookPoint *HP_skill_read_skilldb_pre;
struct HPMHookPoint *HP_skill_read_skilldb_post;
struct HPMHookPoint *HP_skill_config_set_level_pre;
@@ -6186,6 +6348,8 @@ struct {
struct HPMHookPoint *HP_skill_check_npc_chaospanic_post;
struct HPMHookPoint *HP_skill_count_wos_pre;
struct HPMHookPoint *HP_skill_count_wos_post;
+ struct HPMHookPoint *HP_skill_get_linked_song_dance_id_pre;
+ struct HPMHookPoint *HP_skill_get_linked_song_dance_id_post;
struct HPMHookPoint *HP_sockt_init_pre;
struct HPMHookPoint *HP_sockt_init_post;
struct HPMHookPoint *HP_sockt_final_pre;
@@ -6786,22 +6950,24 @@ struct {
struct HPMHookPoint *HP_unit_final_post;
struct HPMHookPoint *HP_unit_bl2ud_pre;
struct HPMHookPoint *HP_unit_bl2ud_post;
+ struct HPMHookPoint *HP_unit_cbl2ud_pre;
+ struct HPMHookPoint *HP_unit_cbl2ud_post;
struct HPMHookPoint *HP_unit_bl2ud2_pre;
struct HPMHookPoint *HP_unit_bl2ud2_post;
struct HPMHookPoint *HP_unit_init_ud_pre;
struct HPMHookPoint *HP_unit_init_ud_post;
struct HPMHookPoint *HP_unit_attack_timer_pre;
struct HPMHookPoint *HP_unit_attack_timer_post;
- struct HPMHookPoint *HP_unit_walktoxy_timer_pre;
- struct HPMHookPoint *HP_unit_walktoxy_timer_post;
- struct HPMHookPoint *HP_unit_walktoxy_sub_pre;
- struct HPMHookPoint *HP_unit_walktoxy_sub_post;
- struct HPMHookPoint *HP_unit_delay_walktoxy_timer_pre;
- struct HPMHookPoint *HP_unit_delay_walktoxy_timer_post;
- struct HPMHookPoint *HP_unit_walktoxy_pre;
- struct HPMHookPoint *HP_unit_walktoxy_post;
- struct HPMHookPoint *HP_unit_walktobl_sub_pre;
- struct HPMHookPoint *HP_unit_walktobl_sub_post;
+ struct HPMHookPoint *HP_unit_walk_toxy_timer_pre;
+ struct HPMHookPoint *HP_unit_walk_toxy_timer_post;
+ struct HPMHookPoint *HP_unit_walk_toxy_sub_pre;
+ struct HPMHookPoint *HP_unit_walk_toxy_sub_post;
+ struct HPMHookPoint *HP_unit_delay_walk_toxy_timer_pre;
+ struct HPMHookPoint *HP_unit_delay_walk_toxy_timer_post;
+ struct HPMHookPoint *HP_unit_walk_toxy_pre;
+ struct HPMHookPoint *HP_unit_walk_toxy_post;
+ struct HPMHookPoint *HP_unit_walktobl_timer_pre;
+ struct HPMHookPoint *HP_unit_walktobl_timer_post;
struct HPMHookPoint *HP_unit_walktobl_pre;
struct HPMHookPoint *HP_unit_walktobl_post;
struct HPMHookPoint *HP_unit_run_pre;
@@ -6812,20 +6978,22 @@ struct {
struct HPMHookPoint *HP_unit_escape_post;
struct HPMHookPoint *HP_unit_movepos_pre;
struct HPMHookPoint *HP_unit_movepos_post;
- struct HPMHookPoint *HP_unit_setdir_pre;
- struct HPMHookPoint *HP_unit_setdir_post;
+ struct HPMHookPoint *HP_unit_set_dir_pre;
+ struct HPMHookPoint *HP_unit_set_dir_post;
struct HPMHookPoint *HP_unit_getdir_pre;
struct HPMHookPoint *HP_unit_getdir_post;
struct HPMHookPoint *HP_unit_blown_pre;
struct HPMHookPoint *HP_unit_blown_post;
struct HPMHookPoint *HP_unit_warp_pre;
struct HPMHookPoint *HP_unit_warp_post;
+ struct HPMHookPoint *HP_unit_warpto_master_pre;
+ struct HPMHookPoint *HP_unit_warpto_master_post;
struct HPMHookPoint *HP_unit_stop_walking_pre;
struct HPMHookPoint *HP_unit_stop_walking_post;
struct HPMHookPoint *HP_unit_skilluse_id_pre;
struct HPMHookPoint *HP_unit_skilluse_id_post;
- struct HPMHookPoint *HP_unit_step_timer_pre;
- struct HPMHookPoint *HP_unit_step_timer_post;
+ struct HPMHookPoint *HP_unit_steptimer_pre;
+ struct HPMHookPoint *HP_unit_steptimer_post;
struct HPMHookPoint *HP_unit_stop_stepaction_pre;
struct HPMHookPoint *HP_unit_stop_stepaction_post;
struct HPMHookPoint *HP_unit_is_walking_pre;
@@ -7871,6 +8039,10 @@ struct {
int HP_clif_chatname_ack_post;
int HP_clif_elemname_ack_pre;
int HP_clif_elemname_ack_post;
+ int HP_clif_skillname_ack_pre;
+ int HP_clif_skillname_ack_post;
+ int HP_clif_itemname_ack_pre;
+ int HP_clif_itemname_ack_post;
int HP_clif_unknownname_ack_pre;
int HP_clif_unknownname_ack_post;
int HP_clif_monster_hp_bar_pre;
@@ -9131,6 +9303,8 @@ struct {
int HP_clif_attendance_getendtime_post;
int HP_clif_pOpenUIRequest_pre;
int HP_clif_pOpenUIRequest_post;
+ int HP_clif_open_ui_send_pre;
+ int HP_clif_open_ui_send_post;
int HP_clif_open_ui_pre;
int HP_clif_open_ui_post;
int HP_clif_pAttendanceRewardRequest_pre;
@@ -9223,6 +9397,14 @@ struct {
int HP_clif_plapineDdukDdak_ack_post;
int HP_clif_plapineDdukDdak_close_pre;
int HP_clif_plapineDdukDdak_close_post;
+ int HP_clif_lapineUpgrade_open_pre;
+ int HP_clif_lapineUpgrade_open_post;
+ int HP_clif_lapineUpgrade_result_pre;
+ int HP_clif_lapineUpgrade_result_post;
+ int HP_clif_pLapineUpgrade_close_pre;
+ int HP_clif_pLapineUpgrade_close_post;
+ int HP_clif_pLapineUpgrade_makeItem_pre;
+ int HP_clif_pLapineUpgrade_makeItem_post;
int HP_clif_pReqGearOff_pre;
int HP_clif_pReqGearOff_post;
int HP_cmdline_init_pre;
@@ -10687,20 +10869,32 @@ struct {
int HP_mapit_prev_post;
int HP_mapit_exists_pre;
int HP_mapit_exists_post;
- int HP_mapreg_init_pre;
- int HP_mapreg_init_post;
- int HP_mapreg_final_pre;
- int HP_mapreg_final_post;
int HP_mapreg_readreg_pre;
int HP_mapreg_readreg_post;
int HP_mapreg_readregstr_pre;
int HP_mapreg_readregstr_post;
+ int HP_mapreg_set_num_db_pre;
+ int HP_mapreg_set_num_db_post;
+ int HP_mapreg_delete_num_db_pre;
+ int HP_mapreg_delete_num_db_post;
int HP_mapreg_setreg_pre;
int HP_mapreg_setreg_post;
+ int HP_mapreg_set_str_db_pre;
+ int HP_mapreg_set_str_db_post;
+ int HP_mapreg_delete_str_db_pre;
+ int HP_mapreg_delete_str_db_post;
int HP_mapreg_setregstr_pre;
int HP_mapreg_setregstr_post;
+ int HP_mapreg_load_num_db_pre;
+ int HP_mapreg_load_num_db_post;
+ int HP_mapreg_load_str_db_pre;
+ int HP_mapreg_load_str_db_post;
int HP_mapreg_load_pre;
int HP_mapreg_load_post;
+ int HP_mapreg_save_num_db_pre;
+ int HP_mapreg_save_num_db_post;
+ int HP_mapreg_save_str_db_pre;
+ int HP_mapreg_save_str_db_post;
int HP_mapreg_save_pre;
int HP_mapreg_save_post;
int HP_mapreg_save_timer_pre;
@@ -10709,8 +10903,12 @@ struct {
int HP_mapreg_destroyreg_post;
int HP_mapreg_reload_pre;
int HP_mapreg_reload_post;
- int HP_mapreg_config_read_pre;
- int HP_mapreg_config_read_post;
+ int HP_mapreg_config_read_registry_pre;
+ int HP_mapreg_config_read_registry_post;
+ int HP_mapreg_final_pre;
+ int HP_mapreg_final_post;
+ int HP_mapreg_init_pre;
+ int HP_mapreg_init_post;
int HP_md5_string_pre;
int HP_md5_string_post;
int HP_md5_binary_pre;
@@ -11291,6 +11489,10 @@ struct {
int HP_npc_questinfo_clear_post;
int HP_npc_secure_timeout_timer_pre;
int HP_npc_secure_timeout_timer_post;
+ int HP_nullpo_init_pre;
+ int HP_nullpo_init_post;
+ int HP_nullpo_final_pre;
+ int HP_nullpo_final_post;
int HP_nullpo_assert_report_pre;
int HP_nullpo_assert_report_post;
int HP_packets_init_pre;
@@ -11635,8 +11837,14 @@ struct {
int HP_pc_checkitem_post;
int HP_pc_useitem_pre;
int HP_pc_useitem_post;
- int HP_pc_itemskill_clear_pre;
- int HP_pc_itemskill_clear_post;
+ int HP_pc_autocast_clear_current_pre;
+ int HP_pc_autocast_clear_current_post;
+ int HP_pc_autocast_clear_pre;
+ int HP_pc_autocast_clear_post;
+ int HP_pc_autocast_set_current_pre;
+ int HP_pc_autocast_set_current_post;
+ int HP_pc_autocast_remove_pre;
+ int HP_pc_autocast_remove_post;
int HP_pc_skillatk_bonus_pre;
int HP_pc_skillatk_bonus_post;
int HP_pc_skillheal_bonus_pre;
@@ -11657,6 +11865,10 @@ struct {
int HP_pc_percentheal_post;
int HP_pc_jobchange_pre;
int HP_pc_jobchange_post;
+ int HP_pc_hide_pre;
+ int HP_pc_hide_post;
+ int HP_pc_unhide_pre;
+ int HP_pc_unhide_post;
int HP_pc_setoption_pre;
int HP_pc_setoption_post;
int HP_pc_setcart_pre;
@@ -11943,6 +12155,10 @@ struct {
int HP_pet_final_post;
int HP_pet_hungry_val_pre;
int HP_pet_hungry_val_post;
+ int HP_pet_set_hunger_pre;
+ int HP_pet_set_hunger_post;
+ int HP_pet_get_card4_value_pre;
+ int HP_pet_get_card4_value_post;
int HP_pet_set_intimate_pre;
int HP_pet_set_intimate_post;
int HP_pet_create_egg_pre;
@@ -11967,6 +12183,8 @@ struct {
int HP_pet_return_egg_post;
int HP_pet_data_init_pre;
int HP_pet_data_init_post;
+ int HP_pet_spawn_pre;
+ int HP_pet_spawn_post;
int HP_pet_birth_process_pre;
int HP_pet_birth_process_post;
int HP_pet_recv_petdata_pre;
@@ -12303,6 +12521,8 @@ struct {
int HP_script_parse_syntax_close_sub_post;
int HP_script_parse_syntax_pre;
int HP_script_parse_syntax_post;
+ int HP_script_parse_syntax_function_pre;
+ int HP_script_parse_syntax_function_post;
int HP_script_get_com_pre;
int HP_script_get_com_post;
int HP_script_get_num_pre;
@@ -12367,6 +12587,8 @@ struct {
int HP_script_print_line_post;
int HP_script_errorwarning_sub_pre;
int HP_script_errorwarning_sub_post;
+ int HP_script_is_permanent_variable_pre;
+ int HP_script_is_permanent_variable_post;
int HP_script_set_reg_pre;
int HP_script_set_reg_post;
int HP_script_set_reg_ref_str_pre;
@@ -12599,6 +12821,8 @@ struct {
int HP_skill_get_hp_post;
int HP_skill_get_mhp_pre;
int HP_skill_get_mhp_post;
+ int HP_skill_get_msp_pre;
+ int HP_skill_get_msp_post;
int HP_skill_get_sp_pre;
int HP_skill_get_sp_post;
int HP_skill_get_hp_rate_pre;
@@ -12609,10 +12833,20 @@ struct {
int HP_skill_get_state_post;
int HP_skill_get_spiritball_pre;
int HP_skill_get_spiritball_post;
+ int HP_skill_get_item_index_pre;
+ int HP_skill_get_item_index_post;
int HP_skill_get_itemid_pre;
int HP_skill_get_itemid_post;
int HP_skill_get_itemqty_pre;
int HP_skill_get_itemqty_post;
+ int HP_skill_get_item_any_flag_pre;
+ int HP_skill_get_item_any_flag_post;
+ int HP_skill_get_equip_id_pre;
+ int HP_skill_get_equip_id_post;
+ int HP_skill_get_equip_amount_pre;
+ int HP_skill_get_equip_amount_post;
+ int HP_skill_get_equip_any_flag_pre;
+ int HP_skill_get_equip_any_flag_post;
int HP_skill_get_zeny_pre;
int HP_skill_get_zeny_post;
int HP_skill_get_num_pre;
@@ -12727,12 +12961,18 @@ struct {
int HP_skill_vf_cast_fix_post;
int HP_skill_delay_fix_pre;
int HP_skill_delay_fix_post;
- int HP_skill_is_item_skill_pre;
- int HP_skill_is_item_skill_post;
+ int HP_skill_check_condition_required_equip_pre;
+ int HP_skill_check_condition_required_equip_post;
int HP_skill_check_condition_castbegin_pre;
int HP_skill_check_condition_castbegin_post;
+ int HP_skill_check_condition_required_items_pre;
+ int HP_skill_check_condition_required_items_post;
+ int HP_skill_items_required_pre;
+ int HP_skill_items_required_post;
int HP_skill_check_condition_castend_pre;
int HP_skill_check_condition_castend_post;
+ int HP_skill_get_any_item_index_pre;
+ int HP_skill_get_any_item_index_post;
int HP_skill_consume_requirement_pre;
int HP_skill_consume_requirement_post;
int HP_skill_get_requirement_pre;
@@ -12779,6 +13019,8 @@ struct {
int HP_skill_not_ok_hom_unknown_post;
int HP_skill_not_ok_mercenary_pre;
int HP_skill_not_ok_mercenary_post;
+ int HP_skill_validate_autocast_data_pre;
+ int HP_skill_validate_autocast_data_post;
int HP_skill_chastle_mob_changetarget_pre;
int HP_skill_chastle_mob_changetarget_post;
int HP_skill_can_produce_mix_pre;
@@ -12899,42 +13141,130 @@ struct {
int HP_skill_init_unit_layout_post;
int HP_skill_init_unit_layout_unknown_pre;
int HP_skill_init_unit_layout_unknown_post;
+ int HP_skill_validate_id_pre;
+ int HP_skill_validate_id_post;
+ int HP_skill_name_contains_invalid_character_pre;
+ int HP_skill_name_contains_invalid_character_post;
+ int HP_skill_validate_name_pre;
+ int HP_skill_validate_name_post;
+ int HP_skill_validate_max_level_pre;
+ int HP_skill_validate_max_level_post;
+ int HP_skill_validate_description_pre;
+ int HP_skill_validate_description_post;
+ int HP_skill_validate_range_pre;
+ int HP_skill_validate_range_post;
int HP_skill_validate_hittype_pre;
int HP_skill_validate_hittype_post;
int HP_skill_validate_skilltype_pre;
int HP_skill_validate_skilltype_post;
+ int HP_skill_validate_skillinfo_pre;
+ int HP_skill_validate_skillinfo_post;
int HP_skill_validate_attacktype_pre;
int HP_skill_validate_attacktype_post;
int HP_skill_validate_element_pre;
int HP_skill_validate_element_post;
- int HP_skill_validate_skillinfo_pre;
- int HP_skill_validate_skillinfo_post;
int HP_skill_validate_damagetype_pre;
int HP_skill_validate_damagetype_post;
+ int HP_skill_validate_splash_range_pre;
+ int HP_skill_validate_splash_range_post;
+ int HP_skill_validate_number_of_hits_pre;
+ int HP_skill_validate_number_of_hits_post;
+ int HP_skill_validate_interrupt_cast_pre;
+ int HP_skill_validate_interrupt_cast_post;
+ int HP_skill_validate_cast_def_rate_pre;
+ int HP_skill_validate_cast_def_rate_post;
+ int HP_skill_validate_number_of_instances_pre;
+ int HP_skill_validate_number_of_instances_post;
+ int HP_skill_validate_knock_back_tiles_pre;
+ int HP_skill_validate_knock_back_tiles_post;
+ int HP_skill_validate_cast_time_pre;
+ int HP_skill_validate_cast_time_post;
+ int HP_skill_validate_act_delay_pre;
+ int HP_skill_validate_act_delay_post;
+ int HP_skill_validate_walk_delay_pre;
+ int HP_skill_validate_walk_delay_post;
+ int HP_skill_validate_skill_data1_pre;
+ int HP_skill_validate_skill_data1_post;
+ int HP_skill_validate_skill_data2_pre;
+ int HP_skill_validate_skill_data2_post;
+ int HP_skill_validate_cooldown_pre;
+ int HP_skill_validate_cooldown_post;
+ int HP_skill_validate_fixed_cast_time_pre;
+ int HP_skill_validate_fixed_cast_time_post;
int HP_skill_validate_castnodex_pre;
int HP_skill_validate_castnodex_post;
+ int HP_skill_validate_hp_cost_pre;
+ int HP_skill_validate_hp_cost_post;
+ int HP_skill_validate_sp_cost_pre;
+ int HP_skill_validate_sp_cost_post;
+ int HP_skill_validate_hp_rate_cost_pre;
+ int HP_skill_validate_hp_rate_cost_post;
+ int HP_skill_validate_sp_rate_cost_pre;
+ int HP_skill_validate_sp_rate_cost_post;
+ int HP_skill_validate_max_hp_trigger_pre;
+ int HP_skill_validate_max_hp_trigger_post;
+ int HP_skill_validate_max_sp_trigger_pre;
+ int HP_skill_validate_max_sp_trigger_post;
+ int HP_skill_validate_zeny_cost_pre;
+ int HP_skill_validate_zeny_cost_post;
+ int HP_skill_validate_weapontype_sub_pre;
+ int HP_skill_validate_weapontype_sub_post;
int HP_skill_validate_weapontype_pre;
int HP_skill_validate_weapontype_post;
+ int HP_skill_validate_ammotype_sub_pre;
+ int HP_skill_validate_ammotype_sub_post;
int HP_skill_validate_ammotype_pre;
int HP_skill_validate_ammotype_post;
+ int HP_skill_validate_ammo_amount_pre;
+ int HP_skill_validate_ammo_amount_post;
+ int HP_skill_validate_state_sub_pre;
+ int HP_skill_validate_state_sub_post;
int HP_skill_validate_state_pre;
int HP_skill_validate_state_post;
+ int HP_skill_validate_spirit_sphere_cost_pre;
+ int HP_skill_validate_spirit_sphere_cost_post;
+ int HP_skill_validate_item_requirements_sub_item_amount_pre;
+ int HP_skill_validate_item_requirements_sub_item_amount_post;
+ int HP_skill_validate_item_requirements_sub_items_pre;
+ int HP_skill_validate_item_requirements_sub_items_post;
+ int HP_skill_validate_item_requirements_sub_any_flag_pre;
+ int HP_skill_validate_item_requirements_sub_any_flag_post;
int HP_skill_validate_item_requirements_pre;
int HP_skill_validate_item_requirements_post;
- int HP_skill_validate_unit_target_pre;
- int HP_skill_validate_unit_target_post;
+ int HP_skill_validate_equip_requirements_sub_item_amount_pre;
+ int HP_skill_validate_equip_requirements_sub_item_amount_post;
+ int HP_skill_validate_equip_requirements_sub_items_pre;
+ int HP_skill_validate_equip_requirements_sub_items_post;
+ int HP_skill_validate_equip_requirements_sub_any_flag_pre;
+ int HP_skill_validate_equip_requirements_sub_any_flag_post;
+ int HP_skill_validate_equip_requirements_pre;
+ int HP_skill_validate_equip_requirements_post;
+ int HP_skill_validate_requirements_item_name_pre;
+ int HP_skill_validate_requirements_item_name_post;
+ int HP_skill_validate_requirements_pre;
+ int HP_skill_validate_requirements_post;
+ int HP_skill_validate_unit_id_sub_pre;
+ int HP_skill_validate_unit_id_sub_post;
+ int HP_skill_validate_unit_id_pre;
+ int HP_skill_validate_unit_id_post;
+ int HP_skill_validate_unit_layout_pre;
+ int HP_skill_validate_unit_layout_post;
+ int HP_skill_validate_unit_range_pre;
+ int HP_skill_validate_unit_range_post;
+ int HP_skill_validate_unit_interval_pre;
+ int HP_skill_validate_unit_interval_post;
+ int HP_skill_validate_unit_flag_sub_pre;
+ int HP_skill_validate_unit_flag_sub_post;
int HP_skill_validate_unit_flag_pre;
int HP_skill_validate_unit_flag_post;
+ int HP_skill_validate_unit_target_sub_pre;
+ int HP_skill_validate_unit_target_sub_post;
+ int HP_skill_validate_unit_target_pre;
+ int HP_skill_validate_unit_target_post;
+ int HP_skill_validate_unit_pre;
+ int HP_skill_validate_unit_post;
int HP_skill_validate_additional_fields_pre;
int HP_skill_validate_additional_fields_post;
- int HP_skill_validate_skilldb_pre;
- int HP_skill_validate_skilldb_post;
- int HP_skill_validate_weapontype_sub_pre;
- int HP_skill_validate_weapontype_sub_post;
- int HP_skill_validate_ammotype_sub_pre;
- int HP_skill_validate_ammotype_sub_post;
- int HP_skill_validate_unit_flag_sub_pre;
- int HP_skill_validate_unit_flag_sub_post;
int HP_skill_read_skilldb_pre;
int HP_skill_read_skilldb_post;
int HP_skill_config_set_level_pre;
@@ -13057,6 +13387,8 @@ struct {
int HP_skill_check_npc_chaospanic_post;
int HP_skill_count_wos_pre;
int HP_skill_count_wos_post;
+ int HP_skill_get_linked_song_dance_id_pre;
+ int HP_skill_get_linked_song_dance_id_post;
int HP_sockt_init_pre;
int HP_sockt_init_post;
int HP_sockt_final_pre;
@@ -13657,22 +13989,24 @@ struct {
int HP_unit_final_post;
int HP_unit_bl2ud_pre;
int HP_unit_bl2ud_post;
+ int HP_unit_cbl2ud_pre;
+ int HP_unit_cbl2ud_post;
int HP_unit_bl2ud2_pre;
int HP_unit_bl2ud2_post;
int HP_unit_init_ud_pre;
int HP_unit_init_ud_post;
int HP_unit_attack_timer_pre;
int HP_unit_attack_timer_post;
- int HP_unit_walktoxy_timer_pre;
- int HP_unit_walktoxy_timer_post;
- int HP_unit_walktoxy_sub_pre;
- int HP_unit_walktoxy_sub_post;
- int HP_unit_delay_walktoxy_timer_pre;
- int HP_unit_delay_walktoxy_timer_post;
- int HP_unit_walktoxy_pre;
- int HP_unit_walktoxy_post;
- int HP_unit_walktobl_sub_pre;
- int HP_unit_walktobl_sub_post;
+ int HP_unit_walk_toxy_timer_pre;
+ int HP_unit_walk_toxy_timer_post;
+ int HP_unit_walk_toxy_sub_pre;
+ int HP_unit_walk_toxy_sub_post;
+ int HP_unit_delay_walk_toxy_timer_pre;
+ int HP_unit_delay_walk_toxy_timer_post;
+ int HP_unit_walk_toxy_pre;
+ int HP_unit_walk_toxy_post;
+ int HP_unit_walktobl_timer_pre;
+ int HP_unit_walktobl_timer_post;
int HP_unit_walktobl_pre;
int HP_unit_walktobl_post;
int HP_unit_run_pre;
@@ -13683,20 +14017,22 @@ struct {
int HP_unit_escape_post;
int HP_unit_movepos_pre;
int HP_unit_movepos_post;
- int HP_unit_setdir_pre;
- int HP_unit_setdir_post;
+ int HP_unit_set_dir_pre;
+ int HP_unit_set_dir_post;
int HP_unit_getdir_pre;
int HP_unit_getdir_post;
int HP_unit_blown_pre;
int HP_unit_blown_post;
int HP_unit_warp_pre;
int HP_unit_warp_post;
+ int HP_unit_warpto_master_pre;
+ int HP_unit_warpto_master_post;
int HP_unit_stop_walking_pre;
int HP_unit_stop_walking_post;
int HP_unit_skilluse_id_pre;
int HP_unit_skilluse_id_post;
- int HP_unit_step_timer_pre;
- int HP_unit_step_timer_post;
+ int HP_unit_steptimer_pre;
+ int HP_unit_steptimer_post;
int HP_unit_stop_stepaction_pre;
int HP_unit_stop_stepaction_post;
int HP_unit_is_walking_pre;
diff --git a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc
index 672b94dd8..34f968c12 100644
--- a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc
+++ b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc
@@ -524,6 +524,8 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(clif->mobname_normal_ack, HP_clif_mobname_normal_ack) },
{ HP_POP(clif->chatname_ack, HP_clif_chatname_ack) },
{ HP_POP(clif->elemname_ack, HP_clif_elemname_ack) },
+ { HP_POP(clif->skillname_ack, HP_clif_skillname_ack) },
+ { HP_POP(clif->itemname_ack, HP_clif_itemname_ack) },
{ HP_POP(clif->unknownname_ack, HP_clif_unknownname_ack) },
{ HP_POP(clif->monster_hp_bar, HP_clif_monster_hp_bar) },
{ HP_POP(clif->hpmeter, HP_clif_hpmeter) },
@@ -1154,6 +1156,7 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(clif->attendance_timediff, HP_clif_attendance_timediff) },
{ HP_POP(clif->attendance_getendtime, HP_clif_attendance_getendtime) },
{ HP_POP(clif->pOpenUIRequest, HP_clif_pOpenUIRequest) },
+ { HP_POP(clif->open_ui_send, HP_clif_open_ui_send) },
{ HP_POP(clif->open_ui, HP_clif_open_ui) },
{ HP_POP(clif->pAttendanceRewardRequest, HP_clif_pAttendanceRewardRequest) },
{ HP_POP(clif->ui_action, HP_clif_ui_action) },
@@ -1200,6 +1203,10 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(clif->lapineDdukDdak_result, HP_clif_lapineDdukDdak_result) },
{ HP_POP(clif->plapineDdukDdak_ack, HP_clif_plapineDdukDdak_ack) },
{ HP_POP(clif->plapineDdukDdak_close, HP_clif_plapineDdukDdak_close) },
+ { HP_POP(clif->lapineUpgrade_open, HP_clif_lapineUpgrade_open) },
+ { HP_POP(clif->lapineUpgrade_result, HP_clif_lapineUpgrade_result) },
+ { HP_POP(clif->pLapineUpgrade_close, HP_clif_pLapineUpgrade_close) },
+ { HP_POP(clif->pLapineUpgrade_makeItem, HP_clif_pLapineUpgrade_makeItem) },
{ HP_POP(clif->pReqGearOff, HP_clif_pReqGearOff) },
/* cmdline_interface */
{ HP_POP(cmdline->init, HP_cmdline_init) },
@@ -1954,18 +1961,26 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(mapit->prev, HP_mapit_prev) },
{ HP_POP(mapit->exists, HP_mapit_exists) },
/* mapreg_interface */
- { HP_POP(mapreg->init, HP_mapreg_init) },
- { HP_POP(mapreg->final, HP_mapreg_final) },
{ HP_POP(mapreg->readreg, HP_mapreg_readreg) },
{ HP_POP(mapreg->readregstr, HP_mapreg_readregstr) },
+ { HP_POP(mapreg->set_num_db, HP_mapreg_set_num_db) },
+ { HP_POP(mapreg->delete_num_db, HP_mapreg_delete_num_db) },
{ HP_POP(mapreg->setreg, HP_mapreg_setreg) },
+ { HP_POP(mapreg->set_str_db, HP_mapreg_set_str_db) },
+ { HP_POP(mapreg->delete_str_db, HP_mapreg_delete_str_db) },
{ HP_POP(mapreg->setregstr, HP_mapreg_setregstr) },
+ { HP_POP(mapreg->load_num_db, HP_mapreg_load_num_db) },
+ { HP_POP(mapreg->load_str_db, HP_mapreg_load_str_db) },
{ HP_POP(mapreg->load, HP_mapreg_load) },
+ { HP_POP(mapreg->save_num_db, HP_mapreg_save_num_db) },
+ { HP_POP(mapreg->save_str_db, HP_mapreg_save_str_db) },
{ HP_POP(mapreg->save, HP_mapreg_save) },
{ HP_POP(mapreg->save_timer, HP_mapreg_save_timer) },
{ HP_POP(mapreg->destroyreg, HP_mapreg_destroyreg) },
{ HP_POP(mapreg->reload, HP_mapreg_reload) },
- { HP_POP(mapreg->config_read, HP_mapreg_config_read) },
+ { HP_POP(mapreg->config_read_registry, HP_mapreg_config_read_registry) },
+ { HP_POP(mapreg->final, HP_mapreg_final) },
+ { HP_POP(mapreg->init, HP_mapreg_init) },
/* md5_interface */
{ HP_POP(md5->string, HP_md5_string) },
{ HP_POP(md5->binary, HP_md5_binary) },
@@ -2263,6 +2278,8 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(npc->questinfo_clear, HP_npc_questinfo_clear) },
{ HP_POP(npc->secure_timeout_timer, HP_npc_secure_timeout_timer) },
/* nullpo_interface */
+ { HP_POP(nullpo->init, HP_nullpo_init) },
+ { HP_POP(nullpo->final, HP_nullpo_final) },
{ HP_POP(nullpo->assert_report, HP_nullpo_assert_report) },
/* packets_interface */
{ HP_POP(packets->init, HP_packets_init) },
@@ -2440,7 +2457,10 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(pc->unequipitem_pos, HP_pc_unequipitem_pos) },
{ HP_POP(pc->checkitem, HP_pc_checkitem) },
{ HP_POP(pc->useitem, HP_pc_useitem) },
- { HP_POP(pc->itemskill_clear, HP_pc_itemskill_clear) },
+ { HP_POP(pc->autocast_clear_current, HP_pc_autocast_clear_current) },
+ { HP_POP(pc->autocast_clear, HP_pc_autocast_clear) },
+ { HP_POP(pc->autocast_set_current, HP_pc_autocast_set_current) },
+ { HP_POP(pc->autocast_remove, HP_pc_autocast_remove) },
{ HP_POP(pc->skillatk_bonus, HP_pc_skillatk_bonus) },
{ HP_POP(pc->skillheal_bonus, HP_pc_skillheal_bonus) },
{ HP_POP(pc->skillheal2_bonus, HP_pc_skillheal2_bonus) },
@@ -2451,6 +2471,8 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(pc->itemheal, HP_pc_itemheal) },
{ HP_POP(pc->percentheal, HP_pc_percentheal) },
{ HP_POP(pc->jobchange, HP_pc_jobchange) },
+ { HP_POP(pc->hide, HP_pc_hide) },
+ { HP_POP(pc->unhide, HP_pc_unhide) },
{ HP_POP(pc->setoption, HP_pc_setoption) },
{ HP_POP(pc->setcart, HP_pc_setcart) },
{ HP_POP(pc->setfalcon, HP_pc_setfalcon) },
@@ -2596,6 +2618,8 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(pet->init, HP_pet_init) },
{ HP_POP(pet->final, HP_pet_final) },
{ HP_POP(pet->hungry_val, HP_pet_hungry_val) },
+ { HP_POP(pet->set_hunger, HP_pet_set_hunger) },
+ { HP_POP(pet->get_card4_value, HP_pet_get_card4_value) },
{ HP_POP(pet->set_intimate, HP_pet_set_intimate) },
{ HP_POP(pet->create_egg, HP_pet_create_egg) },
{ HP_POP(pet->unlocktarget, HP_pet_unlocktarget) },
@@ -2608,6 +2632,7 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(pet->performance, HP_pet_performance) },
{ HP_POP(pet->return_egg, HP_pet_return_egg) },
{ HP_POP(pet->data_init, HP_pet_data_init) },
+ { HP_POP(pet->spawn, HP_pet_spawn) },
{ HP_POP(pet->birth_process, HP_pet_birth_process) },
{ HP_POP(pet->recv_petdata, HP_pet_recv_petdata) },
{ HP_POP(pet->select_egg, HP_pet_select_egg) },
@@ -2782,6 +2807,7 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(script->parse_syntax_close, HP_script_parse_syntax_close) },
{ HP_POP(script->parse_syntax_close_sub, HP_script_parse_syntax_close_sub) },
{ HP_POP(script->parse_syntax, HP_script_parse_syntax) },
+ { HP_POP(script->parse_syntax_function, HP_script_parse_syntax_function) },
{ HP_POP(script->get_com, HP_script_get_com) },
{ HP_POP(script->get_num, HP_script_get_num) },
{ HP_POP(script->op2name, HP_script_op2name) },
@@ -2814,6 +2840,7 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(script->load_parameters, HP_script_load_parameters) },
{ HP_POP(script->print_line, HP_script_print_line) },
{ HP_POP(script->errorwarning_sub, HP_script_errorwarning_sub) },
+ { HP_POP(script->is_permanent_variable, HP_script_is_permanent_variable) },
{ HP_POP(script->set_reg, HP_script_set_reg) },
{ HP_POP(script->set_reg_ref_str, HP_script_set_reg_ref_str) },
{ HP_POP(script->set_reg_pc_ref_str, HP_script_set_reg_pc_ref_str) },
@@ -2933,13 +2960,19 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(skill->get_splash, HP_skill_get_splash) },
{ HP_POP(skill->get_hp, HP_skill_get_hp) },
{ HP_POP(skill->get_mhp, HP_skill_get_mhp) },
+ { HP_POP(skill->get_msp, HP_skill_get_msp) },
{ HP_POP(skill->get_sp, HP_skill_get_sp) },
{ HP_POP(skill->get_hp_rate, HP_skill_get_hp_rate) },
{ HP_POP(skill->get_sp_rate, HP_skill_get_sp_rate) },
{ HP_POP(skill->get_state, HP_skill_get_state) },
{ HP_POP(skill->get_spiritball, HP_skill_get_spiritball) },
+ { HP_POP(skill->get_item_index, HP_skill_get_item_index) },
{ HP_POP(skill->get_itemid, HP_skill_get_itemid) },
{ HP_POP(skill->get_itemqty, HP_skill_get_itemqty) },
+ { HP_POP(skill->get_item_any_flag, HP_skill_get_item_any_flag) },
+ { HP_POP(skill->get_equip_id, HP_skill_get_equip_id) },
+ { HP_POP(skill->get_equip_amount, HP_skill_get_equip_amount) },
+ { HP_POP(skill->get_equip_any_flag, HP_skill_get_equip_any_flag) },
{ HP_POP(skill->get_zeny, HP_skill_get_zeny) },
{ HP_POP(skill->get_num, HP_skill_get_num) },
{ HP_POP(skill->get_cast, HP_skill_get_cast) },
@@ -2997,9 +3030,12 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(skill->cast_fix_sc, HP_skill_cast_fix_sc) },
{ HP_POP(skill->vf_cast_fix, HP_skill_vf_cast_fix) },
{ HP_POP(skill->delay_fix, HP_skill_delay_fix) },
- { HP_POP(skill->is_item_skill, HP_skill_is_item_skill) },
+ { HP_POP(skill->check_condition_required_equip, HP_skill_check_condition_required_equip) },
{ HP_POP(skill->check_condition_castbegin, HP_skill_check_condition_castbegin) },
+ { HP_POP(skill->check_condition_required_items, HP_skill_check_condition_required_items) },
+ { HP_POP(skill->items_required, HP_skill_items_required) },
{ HP_POP(skill->check_condition_castend, HP_skill_check_condition_castend) },
+ { HP_POP(skill->get_any_item_index, HP_skill_get_any_item_index) },
{ HP_POP(skill->consume_requirement, HP_skill_consume_requirement) },
{ HP_POP(skill->get_requirement, HP_skill_get_requirement) },
{ HP_POP(skill->check_pc_partner, HP_skill_check_pc_partner) },
@@ -3023,6 +3059,7 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(skill->not_ok_hom, HP_skill_not_ok_hom) },
{ HP_POP(skill->not_ok_hom_unknown, HP_skill_not_ok_hom_unknown) },
{ HP_POP(skill->not_ok_mercenary, HP_skill_not_ok_mercenary) },
+ { HP_POP(skill->validate_autocast_data, HP_skill_validate_autocast_data) },
{ HP_POP(skill->chastle_mob_changetarget, HP_skill_chastle_mob_changetarget) },
{ HP_POP(skill->can_produce_mix, HP_skill_can_produce_mix) },
{ HP_POP(skill->produce_mix, HP_skill_produce_mix) },
@@ -3083,24 +3120,68 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(skill->unit_timer_sub, HP_skill_unit_timer_sub) },
{ HP_POP(skill->init_unit_layout, HP_skill_init_unit_layout) },
{ HP_POP(skill->init_unit_layout_unknown, HP_skill_init_unit_layout_unknown) },
+ { HP_POP(skill->validate_id, HP_skill_validate_id) },
+ { HP_POP(skill->name_contains_invalid_character, HP_skill_name_contains_invalid_character) },
+ { HP_POP(skill->validate_name, HP_skill_validate_name) },
+ { HP_POP(skill->validate_max_level, HP_skill_validate_max_level) },
+ { HP_POP(skill->validate_description, HP_skill_validate_description) },
+ { HP_POP(skill->validate_range, HP_skill_validate_range) },
{ HP_POP(skill->validate_hittype, HP_skill_validate_hittype) },
{ HP_POP(skill->validate_skilltype, HP_skill_validate_skilltype) },
+ { HP_POP(skill->validate_skillinfo, HP_skill_validate_skillinfo) },
{ HP_POP(skill->validate_attacktype, HP_skill_validate_attacktype) },
{ HP_POP(skill->validate_element, HP_skill_validate_element) },
- { HP_POP(skill->validate_skillinfo, HP_skill_validate_skillinfo) },
{ HP_POP(skill->validate_damagetype, HP_skill_validate_damagetype) },
+ { HP_POP(skill->validate_splash_range, HP_skill_validate_splash_range) },
+ { HP_POP(skill->validate_number_of_hits, HP_skill_validate_number_of_hits) },
+ { HP_POP(skill->validate_interrupt_cast, HP_skill_validate_interrupt_cast) },
+ { HP_POP(skill->validate_cast_def_rate, HP_skill_validate_cast_def_rate) },
+ { HP_POP(skill->validate_number_of_instances, HP_skill_validate_number_of_instances) },
+ { HP_POP(skill->validate_knock_back_tiles, HP_skill_validate_knock_back_tiles) },
+ { HP_POP(skill->validate_cast_time, HP_skill_validate_cast_time) },
+ { HP_POP(skill->validate_act_delay, HP_skill_validate_act_delay) },
+ { HP_POP(skill->validate_walk_delay, HP_skill_validate_walk_delay) },
+ { HP_POP(skill->validate_skill_data1, HP_skill_validate_skill_data1) },
+ { HP_POP(skill->validate_skill_data2, HP_skill_validate_skill_data2) },
+ { HP_POP(skill->validate_cooldown, HP_skill_validate_cooldown) },
+ { HP_POP(skill->validate_fixed_cast_time, HP_skill_validate_fixed_cast_time) },
{ HP_POP(skill->validate_castnodex, HP_skill_validate_castnodex) },
+ { HP_POP(skill->validate_hp_cost, HP_skill_validate_hp_cost) },
+ { HP_POP(skill->validate_sp_cost, HP_skill_validate_sp_cost) },
+ { HP_POP(skill->validate_hp_rate_cost, HP_skill_validate_hp_rate_cost) },
+ { HP_POP(skill->validate_sp_rate_cost, HP_skill_validate_sp_rate_cost) },
+ { HP_POP(skill->validate_max_hp_trigger, HP_skill_validate_max_hp_trigger) },
+ { HP_POP(skill->validate_max_sp_trigger, HP_skill_validate_max_sp_trigger) },
+ { HP_POP(skill->validate_zeny_cost, HP_skill_validate_zeny_cost) },
+ { HP_POP(skill->validate_weapontype_sub, HP_skill_validate_weapontype_sub) },
{ HP_POP(skill->validate_weapontype, HP_skill_validate_weapontype) },
+ { HP_POP(skill->validate_ammotype_sub, HP_skill_validate_ammotype_sub) },
{ HP_POP(skill->validate_ammotype, HP_skill_validate_ammotype) },
+ { HP_POP(skill->validate_ammo_amount, HP_skill_validate_ammo_amount) },
+ { HP_POP(skill->validate_state_sub, HP_skill_validate_state_sub) },
{ HP_POP(skill->validate_state, HP_skill_validate_state) },
+ { HP_POP(skill->validate_spirit_sphere_cost, HP_skill_validate_spirit_sphere_cost) },
+ { HP_POP(skill->validate_item_requirements_sub_item_amount, HP_skill_validate_item_requirements_sub_item_amount) },
+ { HP_POP(skill->validate_item_requirements_sub_items, HP_skill_validate_item_requirements_sub_items) },
+ { HP_POP(skill->validate_item_requirements_sub_any_flag, HP_skill_validate_item_requirements_sub_any_flag) },
{ HP_POP(skill->validate_item_requirements, HP_skill_validate_item_requirements) },
- { HP_POP(skill->validate_unit_target, HP_skill_validate_unit_target) },
+ { HP_POP(skill->validate_equip_requirements_sub_item_amount, HP_skill_validate_equip_requirements_sub_item_amount) },
+ { HP_POP(skill->validate_equip_requirements_sub_items, HP_skill_validate_equip_requirements_sub_items) },
+ { HP_POP(skill->validate_equip_requirements_sub_any_flag, HP_skill_validate_equip_requirements_sub_any_flag) },
+ { HP_POP(skill->validate_equip_requirements, HP_skill_validate_equip_requirements) },
+ { HP_POP(skill->validate_requirements_item_name, HP_skill_validate_requirements_item_name) },
+ { HP_POP(skill->validate_requirements, HP_skill_validate_requirements) },
+ { HP_POP(skill->validate_unit_id_sub, HP_skill_validate_unit_id_sub) },
+ { HP_POP(skill->validate_unit_id, HP_skill_validate_unit_id) },
+ { HP_POP(skill->validate_unit_layout, HP_skill_validate_unit_layout) },
+ { HP_POP(skill->validate_unit_range, HP_skill_validate_unit_range) },
+ { HP_POP(skill->validate_unit_interval, HP_skill_validate_unit_interval) },
+ { HP_POP(skill->validate_unit_flag_sub, HP_skill_validate_unit_flag_sub) },
{ HP_POP(skill->validate_unit_flag, HP_skill_validate_unit_flag) },
+ { HP_POP(skill->validate_unit_target_sub, HP_skill_validate_unit_target_sub) },
+ { HP_POP(skill->validate_unit_target, HP_skill_validate_unit_target) },
+ { HP_POP(skill->validate_unit, HP_skill_validate_unit) },
{ HP_POP(skill->validate_additional_fields, HP_skill_validate_additional_fields) },
- { HP_POP(skill->validate_skilldb, HP_skill_validate_skilldb) },
- { HP_POP(skill->validate_weapontype_sub, HP_skill_validate_weapontype_sub) },
- { HP_POP(skill->validate_ammotype_sub, HP_skill_validate_ammotype_sub) },
- { HP_POP(skill->validate_unit_flag_sub, HP_skill_validate_unit_flag_sub) },
{ HP_POP(skill->read_skilldb, HP_skill_read_skilldb) },
{ HP_POP(skill->config_set_level, HP_skill_config_set_level) },
{ HP_POP(skill->level_set_value, HP_skill_level_set_value) },
@@ -3162,6 +3243,7 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(skill->splash_target, HP_skill_splash_target) },
{ HP_POP(skill->check_npc_chaospanic, HP_skill_check_npc_chaospanic) },
{ HP_POP(skill->count_wos, HP_skill_count_wos) },
+ { HP_POP(skill->get_linked_song_dance_id, HP_skill_get_linked_song_dance_id) },
/* socket_interface */
{ HP_POP(sockt->init, HP_sockt_init) },
{ HP_POP(sockt->final, HP_sockt_final) },
@@ -3475,26 +3557,28 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(unit->init, HP_unit_init) },
{ HP_POP(unit->final, HP_unit_final) },
{ HP_POP(unit->bl2ud, HP_unit_bl2ud) },
+ { HP_POP(unit->cbl2ud, HP_unit_cbl2ud) },
{ HP_POP(unit->bl2ud2, HP_unit_bl2ud2) },
{ HP_POP(unit->init_ud, HP_unit_init_ud) },
{ HP_POP(unit->attack_timer, HP_unit_attack_timer) },
- { HP_POP(unit->walktoxy_timer, HP_unit_walktoxy_timer) },
- { HP_POP(unit->walktoxy_sub, HP_unit_walktoxy_sub) },
- { HP_POP(unit->delay_walktoxy_timer, HP_unit_delay_walktoxy_timer) },
- { HP_POP(unit->walktoxy, HP_unit_walktoxy) },
- { HP_POP(unit->walktobl_sub, HP_unit_walktobl_sub) },
+ { HP_POP(unit->walk_toxy_timer, HP_unit_walk_toxy_timer) },
+ { HP_POP(unit->walk_toxy_sub, HP_unit_walk_toxy_sub) },
+ { HP_POP(unit->delay_walk_toxy_timer, HP_unit_delay_walk_toxy_timer) },
+ { HP_POP(unit->walk_toxy, HP_unit_walk_toxy) },
+ { HP_POP(unit->walktobl_timer, HP_unit_walktobl_timer) },
{ HP_POP(unit->walktobl, HP_unit_walktobl) },
{ HP_POP(unit->run, HP_unit_run) },
{ HP_POP(unit->run_hit, HP_unit_run_hit) },
{ HP_POP(unit->escape, HP_unit_escape) },
{ HP_POP(unit->movepos, HP_unit_movepos) },
- { HP_POP(unit->setdir, HP_unit_setdir) },
+ { HP_POP(unit->set_dir, HP_unit_set_dir) },
{ HP_POP(unit->getdir, HP_unit_getdir) },
{ HP_POP(unit->blown, HP_unit_blown) },
{ HP_POP(unit->warp, HP_unit_warp) },
+ { HP_POP(unit->warpto_master, HP_unit_warpto_master) },
{ HP_POP(unit->stop_walking, HP_unit_stop_walking) },
{ HP_POP(unit->skilluse_id, HP_unit_skilluse_id) },
- { HP_POP(unit->step_timer, HP_unit_step_timer) },
+ { HP_POP(unit->steptimer, HP_unit_steptimer) },
{ HP_POP(unit->stop_stepaction, HP_unit_stop_stepaction) },
{ HP_POP(unit->is_walking, HP_unit_is_walking) },
{ HP_POP(unit->can_move, HP_unit_can_move) },
@@ -3532,4 +3616,4 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(vending->searchall, HP_vending_searchall) },
};
-int HookingPointsLenMax = 49;
+int HookingPointsLenMax = 50;
diff --git a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc
index 423490182..8cb425011 100644
--- a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc
+++ b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc
@@ -13035,6 +13035,58 @@ void HP_clif_elemname_ack(int fd, struct block_list *bl) {
}
return;
}
+void HP_clif_skillname_ack(int fd, struct block_list *bl) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_skillname_ack_pre > 0) {
+ void (*preHookFunc) (int *fd, struct block_list **bl);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_skillname_ack_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_skillname_ack_pre[hIndex].func;
+ preHookFunc(&fd, &bl);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.skillname_ack(fd, bl);
+ }
+ if (HPMHooks.count.HP_clif_skillname_ack_post > 0) {
+ void (*postHookFunc) (int fd, struct block_list *bl);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_skillname_ack_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_skillname_ack_post[hIndex].func;
+ postHookFunc(fd, bl);
+ }
+ }
+ return;
+}
+void HP_clif_itemname_ack(int fd, struct block_list *bl) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_itemname_ack_pre > 0) {
+ void (*preHookFunc) (int *fd, struct block_list **bl);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_itemname_ack_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_itemname_ack_pre[hIndex].func;
+ preHookFunc(&fd, &bl);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.itemname_ack(fd, bl);
+ }
+ if (HPMHooks.count.HP_clif_itemname_ack_post > 0) {
+ void (*postHookFunc) (int fd, struct block_list *bl);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_itemname_ack_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_itemname_ack_post[hIndex].func;
+ postHookFunc(fd, bl);
+ }
+ }
+ return;
+}
void HP_clif_unknownname_ack(int fd, struct block_list *bl) {
int hIndex = 0;
if (HPMHooks.count.HP_clif_unknownname_ack_pre > 0) {
@@ -29456,6 +29508,32 @@ void HP_clif_pOpenUIRequest(int fd, struct map_session_data *sd) {
}
return;
}
+void HP_clif_open_ui_send(struct map_session_data *sd, enum zc_ui_types ui_type) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_open_ui_send_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, enum zc_ui_types *ui_type);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_open_ui_send_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_open_ui_send_pre[hIndex].func;
+ preHookFunc(&sd, &ui_type);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.open_ui_send(sd, ui_type);
+ }
+ if (HPMHooks.count.HP_clif_open_ui_send_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, enum zc_ui_types ui_type);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_open_ui_send_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_open_ui_send_post[hIndex].func;
+ postHookFunc(sd, ui_type);
+ }
+ }
+ return;
+}
void HP_clif_open_ui(struct map_session_data *sd, enum cz_ui_types uiType) {
int hIndex = 0;
if (HPMHooks.count.HP_clif_open_ui_pre > 0) {
@@ -30663,6 +30741,112 @@ void HP_clif_plapineDdukDdak_close(int fd, struct map_session_data *sd) {
}
return;
}
+bool HP_clif_lapineUpgrade_open(struct map_session_data *sd, int item_id) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_clif_lapineUpgrade_open_pre > 0) {
+ bool (*preHookFunc) (struct map_session_data **sd, int *item_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_lapineUpgrade_open_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_lapineUpgrade_open_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd, &item_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.clif.lapineUpgrade_open(sd, item_id);
+ }
+ if (HPMHooks.count.HP_clif_lapineUpgrade_open_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, int item_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_lapineUpgrade_open_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_lapineUpgrade_open_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd, item_id);
+ }
+ }
+ return retVal___;
+}
+bool HP_clif_lapineUpgrade_result(struct map_session_data *sd, enum lapineUpgrade_result result) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_clif_lapineUpgrade_result_pre > 0) {
+ bool (*preHookFunc) (struct map_session_data **sd, enum lapineUpgrade_result *result);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_lapineUpgrade_result_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_lapineUpgrade_result_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd, &result);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.clif.lapineUpgrade_result(sd, result);
+ }
+ if (HPMHooks.count.HP_clif_lapineUpgrade_result_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, enum lapineUpgrade_result result);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_lapineUpgrade_result_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_lapineUpgrade_result_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd, result);
+ }
+ }
+ return retVal___;
+}
+void HP_clif_pLapineUpgrade_close(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_pLapineUpgrade_close_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pLapineUpgrade_close_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_pLapineUpgrade_close_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.pLapineUpgrade_close(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_pLapineUpgrade_close_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pLapineUpgrade_close_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_pLapineUpgrade_close_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
+void HP_clif_pLapineUpgrade_makeItem(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_pLapineUpgrade_makeItem_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pLapineUpgrade_makeItem_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_pLapineUpgrade_makeItem_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.pLapineUpgrade_makeItem(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_pLapineUpgrade_makeItem_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pLapineUpgrade_makeItem_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_pLapineUpgrade_makeItem_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
void HP_clif_pReqGearOff(int fd, struct map_session_data *sd) {
int hIndex = 0;
if (HPMHooks.count.HP_clif_pReqGearOff_pre > 0) {
@@ -48284,11 +48468,11 @@ void HP_map_reloadnpc(bool clear) {
}
return;
}
-int HP_map_check_dir(int s_dir, int t_dir) {
+int HP_map_check_dir(enum unit_dir s_dir, enum unit_dir t_dir) {
int hIndex = 0;
int retVal___ = 0;
if (HPMHooks.count.HP_map_check_dir_pre > 0) {
- int (*preHookFunc) (int *s_dir, int *t_dir);
+ int (*preHookFunc) (enum unit_dir *s_dir, enum unit_dir *t_dir);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_map_check_dir_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_check_dir_pre[hIndex].func;
@@ -48303,7 +48487,7 @@ int HP_map_check_dir(int s_dir, int t_dir) {
retVal___ = HPMHooks.source.map.check_dir(s_dir, t_dir);
}
if (HPMHooks.count.HP_map_check_dir_post > 0) {
- int (*postHookFunc) (int retVal___, int s_dir, int t_dir);
+ int (*postHookFunc) (int retVal___, enum unit_dir s_dir, enum unit_dir t_dir);
for (hIndex = 0; hIndex < HPMHooks.count.HP_map_check_dir_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_check_dir_post[hIndex].func;
retVal___ = postHookFunc(retVal___, s_dir, t_dir);
@@ -48311,11 +48495,11 @@ int HP_map_check_dir(int s_dir, int t_dir) {
}
return retVal___;
}
-uint8 HP_map_calc_dir(struct block_list *src, int16 x, int16 y) {
+enum unit_dir HP_map_calc_dir(const struct block_list *src, int16 x, int16 y) {
int hIndex = 0;
- uint8 retVal___ = 0;
+ enum unit_dir retVal___ = UNIT_DIR_UNDEFINED;
if (HPMHooks.count.HP_map_calc_dir_pre > 0) {
- uint8 (*preHookFunc) (struct block_list **src, int16 *x, int16 *y);
+ enum unit_dir (*preHookFunc) (const struct block_list **src, int16 *x, int16 *y);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_map_calc_dir_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_map_calc_dir_pre[hIndex].func;
@@ -48330,7 +48514,7 @@ uint8 HP_map_calc_dir(struct block_list *src, int16 x, int16 y) {
retVal___ = HPMHooks.source.map.calc_dir(src, x, y);
}
if (HPMHooks.count.HP_map_calc_dir_post > 0) {
- uint8 (*postHookFunc) (uint8 retVal___, struct block_list *src, int16 x, int16 y);
+ enum unit_dir (*postHookFunc) (enum unit_dir retVal___, const struct block_list *src, int16 x, int16 y);
for (hIndex = 0; hIndex < HPMHooks.count.HP_map_calc_dir_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_map_calc_dir_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, x, y);
@@ -50460,58 +50644,6 @@ bool HP_mapit_exists(struct s_mapiterator *iter) {
return retVal___;
}
/* mapreg_interface */
-void HP_mapreg_init(void) {
- int hIndex = 0;
- if (HPMHooks.count.HP_mapreg_init_pre > 0) {
- void (*preHookFunc) (void);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_init_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_mapreg_init_pre[hIndex].func;
- preHookFunc();
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return;
- }
- }
- {
- HPMHooks.source.mapreg.init();
- }
- if (HPMHooks.count.HP_mapreg_init_post > 0) {
- void (*postHookFunc) (void);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_init_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_mapreg_init_post[hIndex].func;
- postHookFunc();
- }
- }
- return;
-}
-void HP_mapreg_final(void) {
- int hIndex = 0;
- if (HPMHooks.count.HP_mapreg_final_pre > 0) {
- void (*preHookFunc) (void);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_final_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_mapreg_final_pre[hIndex].func;
- preHookFunc();
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return;
- }
- }
- {
- HPMHooks.source.mapreg.final();
- }
- if (HPMHooks.count.HP_mapreg_final_post > 0) {
- void (*postHookFunc) (void);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_final_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_mapreg_final_post[hIndex].func;
- postHookFunc();
- }
- }
- return;
-}
int HP_mapreg_readreg(int64 uid) {
int hIndex = 0;
int retVal___ = 0;
@@ -50566,6 +50698,60 @@ char* HP_mapreg_readregstr(int64 uid) {
}
return retVal___;
}
+bool HP_mapreg_set_num_db(int64 uid, const char *name, unsigned int index, int value) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_mapreg_set_num_db_pre > 0) {
+ bool (*preHookFunc) (int64 *uid, const char **name, unsigned int *index, int *value);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_set_num_db_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mapreg_set_num_db_pre[hIndex].func;
+ retVal___ = preHookFunc(&uid, &name, &index, &value);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.mapreg.set_num_db(uid, name, index, value);
+ }
+ if (HPMHooks.count.HP_mapreg_set_num_db_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int64 uid, const char *name, unsigned int index, int value);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_set_num_db_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mapreg_set_num_db_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, uid, name, index, value);
+ }
+ }
+ return retVal___;
+}
+bool HP_mapreg_delete_num_db(int64 uid, const char *name, unsigned int index) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_mapreg_delete_num_db_pre > 0) {
+ bool (*preHookFunc) (int64 *uid, const char **name, unsigned int *index);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_delete_num_db_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mapreg_delete_num_db_pre[hIndex].func;
+ retVal___ = preHookFunc(&uid, &name, &index);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.mapreg.delete_num_db(uid, name, index);
+ }
+ if (HPMHooks.count.HP_mapreg_delete_num_db_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int64 uid, const char *name, unsigned int index);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_delete_num_db_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mapreg_delete_num_db_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, uid, name, index);
+ }
+ }
+ return retVal___;
+}
bool HP_mapreg_setreg(int64 uid, int val) {
int hIndex = 0;
bool retVal___ = false;
@@ -50593,6 +50779,60 @@ bool HP_mapreg_setreg(int64 uid, int val) {
}
return retVal___;
}
+bool HP_mapreg_set_str_db(int64 uid, const char *name, unsigned int index, const char *value) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_mapreg_set_str_db_pre > 0) {
+ bool (*preHookFunc) (int64 *uid, const char **name, unsigned int *index, const char **value);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_set_str_db_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mapreg_set_str_db_pre[hIndex].func;
+ retVal___ = preHookFunc(&uid, &name, &index, &value);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.mapreg.set_str_db(uid, name, index, value);
+ }
+ if (HPMHooks.count.HP_mapreg_set_str_db_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int64 uid, const char *name, unsigned int index, const char *value);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_set_str_db_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mapreg_set_str_db_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, uid, name, index, value);
+ }
+ }
+ return retVal___;
+}
+bool HP_mapreg_delete_str_db(int64 uid, const char *name, unsigned int index) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_mapreg_delete_str_db_pre > 0) {
+ bool (*preHookFunc) (int64 *uid, const char **name, unsigned int *index);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_delete_str_db_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mapreg_delete_str_db_pre[hIndex].func;
+ retVal___ = preHookFunc(&uid, &name, &index);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.mapreg.delete_str_db(uid, name, index);
+ }
+ if (HPMHooks.count.HP_mapreg_delete_str_db_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int64 uid, const char *name, unsigned int index);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_delete_str_db_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mapreg_delete_str_db_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, uid, name, index);
+ }
+ }
+ return retVal___;
+}
bool HP_mapreg_setregstr(int64 uid, const char *str) {
int hIndex = 0;
bool retVal___ = false;
@@ -50620,6 +50860,58 @@ bool HP_mapreg_setregstr(int64 uid, const char *str) {
}
return retVal___;
}
+void HP_mapreg_load_num_db(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_mapreg_load_num_db_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_load_num_db_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mapreg_load_num_db_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.mapreg.load_num_db();
+ }
+ if (HPMHooks.count.HP_mapreg_load_num_db_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_load_num_db_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mapreg_load_num_db_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
+void HP_mapreg_load_str_db(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_mapreg_load_str_db_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_load_str_db_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mapreg_load_str_db_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.mapreg.load_str_db();
+ }
+ if (HPMHooks.count.HP_mapreg_load_str_db_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_load_str_db_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mapreg_load_str_db_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
void HP_mapreg_load(void) {
int hIndex = 0;
if (HPMHooks.count.HP_mapreg_load_pre > 0) {
@@ -50646,6 +50938,58 @@ void HP_mapreg_load(void) {
}
return;
}
+void HP_mapreg_save_num_db(const char *name, unsigned int index, int value) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_mapreg_save_num_db_pre > 0) {
+ void (*preHookFunc) (const char **name, unsigned int *index, int *value);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_save_num_db_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mapreg_save_num_db_pre[hIndex].func;
+ preHookFunc(&name, &index, &value);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.mapreg.save_num_db(name, index, value);
+ }
+ if (HPMHooks.count.HP_mapreg_save_num_db_post > 0) {
+ void (*postHookFunc) (const char *name, unsigned int index, int value);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_save_num_db_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mapreg_save_num_db_post[hIndex].func;
+ postHookFunc(name, index, value);
+ }
+ }
+ return;
+}
+void HP_mapreg_save_str_db(const char *name, unsigned int index, const char *value) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_mapreg_save_str_db_pre > 0) {
+ void (*preHookFunc) (const char **name, unsigned int *index, const char **value);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_save_str_db_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mapreg_save_str_db_pre[hIndex].func;
+ preHookFunc(&name, &index, &value);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.mapreg.save_str_db(name, index, value);
+ }
+ if (HPMHooks.count.HP_mapreg_save_str_db_post > 0) {
+ void (*postHookFunc) (const char *name, unsigned int index, const char *value);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_save_str_db_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mapreg_save_str_db_post[hIndex].func;
+ postHookFunc(name, index, value);
+ }
+ }
+ return;
+}
void HP_mapreg_save(void) {
int hIndex = 0;
if (HPMHooks.count.HP_mapreg_save_pre > 0) {
@@ -50758,14 +51102,14 @@ void HP_mapreg_reload(void) {
}
return;
}
-bool HP_mapreg_config_read(const char *filename, const struct config_setting_t *config, bool imported) {
+bool HP_mapreg_config_read_registry(const char *filename, const struct config_setting_t *config, bool imported) {
int hIndex = 0;
bool retVal___ = false;
- if (HPMHooks.count.HP_mapreg_config_read_pre > 0) {
+ if (HPMHooks.count.HP_mapreg_config_read_registry_pre > 0) {
bool (*preHookFunc) (const char **filename, const struct config_setting_t **config, bool *imported);
*HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_config_read_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_mapreg_config_read_pre[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_config_read_registry_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mapreg_config_read_registry_pre[hIndex].func;
retVal___ = preHookFunc(&filename, &config, &imported);
}
if (*HPMforce_return) {
@@ -50774,17 +51118,69 @@ bool HP_mapreg_config_read(const char *filename, const struct config_setting_t *
}
}
{
- retVal___ = HPMHooks.source.mapreg.config_read(filename, config, imported);
+ retVal___ = HPMHooks.source.mapreg.config_read_registry(filename, config, imported);
}
- if (HPMHooks.count.HP_mapreg_config_read_post > 0) {
+ if (HPMHooks.count.HP_mapreg_config_read_registry_post > 0) {
bool (*postHookFunc) (bool retVal___, const char *filename, const struct config_setting_t *config, bool imported);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_config_read_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_mapreg_config_read_post[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_config_read_registry_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mapreg_config_read_registry_post[hIndex].func;
retVal___ = postHookFunc(retVal___, filename, config, imported);
}
}
return retVal___;
}
+void HP_mapreg_final(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_mapreg_final_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_final_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mapreg_final_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.mapreg.final();
+ }
+ if (HPMHooks.count.HP_mapreg_final_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_final_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mapreg_final_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
+void HP_mapreg_init(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_mapreg_init_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_init_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_mapreg_init_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.mapreg.init();
+ }
+ if (HPMHooks.count.HP_mapreg_init_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_mapreg_init_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_mapreg_init_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
/* md5_interface */
void HP_md5_string(const char *string, char *output) {
int hIndex = 0;
@@ -53703,11 +54099,11 @@ int HP_mob_getfriendstatus_sub(struct block_list *bl, va_list ap) {
}
return retVal___;
}
-struct mob_data* HP_mob_getfriendstatus(struct mob_data *md, int cond1, int cond2) {
+struct block_list* HP_mob_getfriendstatus(struct mob_data *md, int cond1, int cond2) {
int hIndex = 0;
- struct mob_data* retVal___ = NULL;
+ struct block_list* retVal___ = NULL;
if (HPMHooks.count.HP_mob_getfriendstatus_pre > 0) {
- struct mob_data* (*preHookFunc) (struct mob_data **md, int *cond1, int *cond2);
+ struct block_list* (*preHookFunc) (struct mob_data **md, int *cond1, int *cond2);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_getfriendstatus_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mob_getfriendstatus_pre[hIndex].func;
@@ -53722,7 +54118,7 @@ struct mob_data* HP_mob_getfriendstatus(struct mob_data *md, int cond1, int cond
retVal___ = HPMHooks.source.mob.getfriendstatus(md, cond1, cond2);
}
if (HPMHooks.count.HP_mob_getfriendstatus_post > 0) {
- struct mob_data* (*postHookFunc) (struct mob_data* retVal___, struct mob_data *md, int cond1, int cond2);
+ struct block_list* (*postHookFunc) (struct block_list* retVal___, struct mob_data *md, int cond1, int cond2);
for (hIndex = 0; hIndex < HPMHooks.count.HP_mob_getfriendstatus_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mob_getfriendstatus_post[hIndex].func;
retVal___ = postHookFunc(retVal___, md, cond1, cond2);
@@ -57108,11 +57504,11 @@ bool HP_npc_viewisid(const char *viewid) {
}
return retVal___;
}
-struct npc_data* HP_npc_create_npc(enum npc_subtype subtype, int m, int x, int y, uint8 dir, int class_) {
+struct npc_data* HP_npc_create_npc(enum npc_subtype subtype, int m, int x, int y, enum unit_dir dir, int class_) {
int hIndex = 0;
struct npc_data* retVal___ = NULL;
if (HPMHooks.count.HP_npc_create_npc_pre > 0) {
- struct npc_data* (*preHookFunc) (enum npc_subtype *subtype, int *m, int *x, int *y, uint8 *dir, int *class_);
+ struct npc_data* (*preHookFunc) (enum npc_subtype *subtype, int *m, int *x, int *y, enum unit_dir *dir, int *class_);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_create_npc_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_create_npc_pre[hIndex].func;
@@ -57127,7 +57523,7 @@ struct npc_data* HP_npc_create_npc(enum npc_subtype subtype, int m, int x, int y
retVal___ = HPMHooks.source.npc.create_npc(subtype, m, x, y, dir, class_);
}
if (HPMHooks.count.HP_npc_create_npc_post > 0) {
- struct npc_data* (*postHookFunc) (struct npc_data* retVal___, enum npc_subtype subtype, int m, int x, int y, uint8 dir, int class_);
+ struct npc_data* (*postHookFunc) (struct npc_data* retVal___, enum npc_subtype subtype, int m, int x, int y, enum unit_dir dir, int class_);
for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_create_npc_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_create_npc_post[hIndex].func;
retVal___ = postHookFunc(retVal___, subtype, m, x, y, dir, class_);
@@ -58718,6 +59114,58 @@ int HP_npc_secure_timeout_timer(int tid, int64 tick, int id, intptr_t data) {
return retVal___;
}
/* nullpo_interface */
+void HP_nullpo_init(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_nullpo_init_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_nullpo_init_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_nullpo_init_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.nullpo.init();
+ }
+ if (HPMHooks.count.HP_nullpo_init_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_nullpo_init_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_nullpo_init_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
+void HP_nullpo_final(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_nullpo_final_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_nullpo_final_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_nullpo_final_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.nullpo.final();
+ }
+ if (HPMHooks.count.HP_nullpo_final_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_nullpo_final_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_nullpo_final_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
void HP_nullpo_assert_report(const char *file, int line, const char *func, const char *targetname, const char *title) {
int hIndex = 0;
if (HPMHooks.count.HP_nullpo_assert_report_pre > 0) {
@@ -63359,32 +63807,109 @@ int HP_pc_useitem(struct map_session_data *sd, int n) {
}
return retVal___;
}
-int HP_pc_itemskill_clear(struct map_session_data *sd) {
+void HP_pc_autocast_clear_current(struct map_session_data *sd) {
int hIndex = 0;
- int retVal___ = 0;
- if (HPMHooks.count.HP_pc_itemskill_clear_pre > 0) {
- int (*preHookFunc) (struct map_session_data **sd);
+ if (HPMHooks.count.HP_pc_autocast_clear_current_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd);
*HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_itemskill_clear_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_pc_itemskill_clear_pre[hIndex].func;
- retVal___ = preHookFunc(&sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_autocast_clear_current_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_pc_autocast_clear_current_pre[hIndex].func;
+ preHookFunc(&sd);
}
if (*HPMforce_return) {
*HPMforce_return = false;
- return retVal___;
+ return;
}
}
{
- retVal___ = HPMHooks.source.pc.itemskill_clear(sd);
+ HPMHooks.source.pc.autocast_clear_current(sd);
}
- if (HPMHooks.count.HP_pc_itemskill_clear_post > 0) {
- int (*postHookFunc) (int retVal___, struct map_session_data *sd);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_itemskill_clear_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_pc_itemskill_clear_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, sd);
+ if (HPMHooks.count.HP_pc_autocast_clear_current_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_autocast_clear_current_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_pc_autocast_clear_current_post[hIndex].func;
+ postHookFunc(sd);
}
}
- return retVal___;
+ return;
+}
+void HP_pc_autocast_clear(struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_pc_autocast_clear_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_autocast_clear_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_pc_autocast_clear_pre[hIndex].func;
+ preHookFunc(&sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.pc.autocast_clear(sd);
+ }
+ if (HPMHooks.count.HP_pc_autocast_clear_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_autocast_clear_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_pc_autocast_clear_post[hIndex].func;
+ postHookFunc(sd);
+ }
+ }
+ return;
+}
+void HP_pc_autocast_set_current(struct map_session_data *sd, int skill_id) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_pc_autocast_set_current_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, int *skill_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_autocast_set_current_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_pc_autocast_set_current_pre[hIndex].func;
+ preHookFunc(&sd, &skill_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.pc.autocast_set_current(sd, skill_id);
+ }
+ if (HPMHooks.count.HP_pc_autocast_set_current_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, int skill_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_autocast_set_current_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_pc_autocast_set_current_post[hIndex].func;
+ postHookFunc(sd, skill_id);
+ }
+ }
+ return;
+}
+void HP_pc_autocast_remove(struct map_session_data *sd, enum autocast_type type, int skill_id, int skill_lv) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_pc_autocast_remove_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, enum autocast_type *type, int *skill_id, int *skill_lv);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_autocast_remove_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_pc_autocast_remove_pre[hIndex].func;
+ preHookFunc(&sd, &type, &skill_id, &skill_lv);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.pc.autocast_remove(sd, type, skill_id, skill_lv);
+ }
+ if (HPMHooks.count.HP_pc_autocast_remove_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, enum autocast_type type, int skill_id, int skill_lv);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_autocast_remove_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_pc_autocast_remove_post[hIndex].func;
+ postHookFunc(sd, type, skill_id, skill_lv);
+ }
+ }
+ return;
}
int HP_pc_skillatk_bonus(struct map_session_data *sd, uint16 skill_id) {
int hIndex = 0;
@@ -63653,6 +64178,58 @@ int HP_pc_jobchange(struct map_session_data *sd, int class, int upper) {
}
return retVal___;
}
+void HP_pc_hide(struct map_session_data *sd, bool show_msg) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_pc_hide_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, bool *show_msg);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_hide_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_pc_hide_pre[hIndex].func;
+ preHookFunc(&sd, &show_msg);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.pc.hide(sd, show_msg);
+ }
+ if (HPMHooks.count.HP_pc_hide_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, bool show_msg);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_hide_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_pc_hide_post[hIndex].func;
+ postHookFunc(sd, show_msg);
+ }
+ }
+ return;
+}
+void HP_pc_unhide(struct map_session_data *sd, bool show_msg) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_pc_unhide_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, bool *show_msg);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_unhide_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_pc_unhide_pre[hIndex].func;
+ preHookFunc(&sd, &show_msg);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.pc.unhide(sd, show_msg);
+ }
+ if (HPMHooks.count.HP_pc_unhide_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, bool show_msg);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_unhide_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_pc_unhide_post[hIndex].func;
+ postHookFunc(sd, show_msg);
+ }
+ }
+ return;
+}
int HP_pc_setoption(struct map_session_data *sd, int type) {
int hIndex = 0;
int retVal___ = 0;
@@ -65391,10 +65968,10 @@ int HP_pc_load_combo(struct map_session_data *sd) {
}
return retVal___;
}
-void HP_pc_add_charm(struct map_session_data *sd, int interval, int max, int type) {
+void HP_pc_add_charm(struct map_session_data *sd, int interval, int max, enum spirit_charm_types type) {
int hIndex = 0;
if (HPMHooks.count.HP_pc_add_charm_pre > 0) {
- void (*preHookFunc) (struct map_session_data **sd, int *interval, int *max, int *type);
+ void (*preHookFunc) (struct map_session_data **sd, int *interval, int *max, enum spirit_charm_types *type);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_add_charm_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_add_charm_pre[hIndex].func;
@@ -65409,7 +65986,7 @@ void HP_pc_add_charm(struct map_session_data *sd, int interval, int max, int typ
HPMHooks.source.pc.add_charm(sd, interval, max, type);
}
if (HPMHooks.count.HP_pc_add_charm_post > 0) {
- void (*postHookFunc) (struct map_session_data *sd, int interval, int max, int type);
+ void (*postHookFunc) (struct map_session_data *sd, int interval, int max, enum spirit_charm_types type);
for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_add_charm_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_add_charm_post[hIndex].func;
postHookFunc(sd, interval, max, type);
@@ -65417,10 +65994,10 @@ void HP_pc_add_charm(struct map_session_data *sd, int interval, int max, int typ
}
return;
}
-void HP_pc_del_charm(struct map_session_data *sd, int count, int type) {
+void HP_pc_del_charm(struct map_session_data *sd, int count, enum spirit_charm_types type) {
int hIndex = 0;
if (HPMHooks.count.HP_pc_del_charm_pre > 0) {
- void (*preHookFunc) (struct map_session_data **sd, int *count, int *type);
+ void (*preHookFunc) (struct map_session_data **sd, int *count, enum spirit_charm_types *type);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_del_charm_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_del_charm_pre[hIndex].func;
@@ -65435,7 +66012,7 @@ void HP_pc_del_charm(struct map_session_data *sd, int count, int type) {
HPMHooks.source.pc.del_charm(sd, count, type);
}
if (HPMHooks.count.HP_pc_del_charm_post > 0) {
- void (*postHookFunc) (struct map_session_data *sd, int count, int type);
+ void (*postHookFunc) (struct map_session_data *sd, int count, enum spirit_charm_types type);
for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_del_charm_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_del_charm_post[hIndex].func;
postHookFunc(sd, count, type);
@@ -67509,6 +68086,59 @@ int HP_pet_hungry_val(struct pet_data *pd) {
}
return retVal___;
}
+void HP_pet_set_hunger(struct pet_data *pd, int value) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_pet_set_hunger_pre > 0) {
+ void (*preHookFunc) (struct pet_data **pd, int *value);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_set_hunger_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_pet_set_hunger_pre[hIndex].func;
+ preHookFunc(&pd, &value);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.pet.set_hunger(pd, value);
+ }
+ if (HPMHooks.count.HP_pet_set_hunger_post > 0) {
+ void (*postHookFunc) (struct pet_data *pd, int value);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_set_hunger_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_pet_set_hunger_post[hIndex].func;
+ postHookFunc(pd, value);
+ }
+ }
+ return;
+}
+int HP_pet_get_card4_value(int rename_flag, int intimacy) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_pet_get_card4_value_pre > 0) {
+ int (*preHookFunc) (int *rename_flag, int *intimacy);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_get_card4_value_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_pet_get_card4_value_pre[hIndex].func;
+ retVal___ = preHookFunc(&rename_flag, &intimacy);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.pet.get_card4_value(rename_flag, intimacy);
+ }
+ if (HPMHooks.count.HP_pet_get_card4_value_post > 0) {
+ int (*postHookFunc) (int retVal___, int rename_flag, int intimacy);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_get_card4_value_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_pet_get_card4_value_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, rename_flag, intimacy);
+ }
+ }
+ return retVal___;
+}
void HP_pet_set_intimate(struct pet_data *pd, int value) {
int hIndex = 0;
if (HPMHooks.count.HP_pet_set_intimate_pre > 0) {
@@ -67832,6 +68462,33 @@ int HP_pet_data_init(struct map_session_data *sd, struct s_pet *petinfo) {
}
return retVal___;
}
+int HP_pet_spawn(struct map_session_data *sd, bool birth_process) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_pet_spawn_pre > 0) {
+ int (*preHookFunc) (struct map_session_data **sd, bool *birth_process);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_spawn_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_pet_spawn_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd, &birth_process);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.pet.spawn(sd, birth_process);
+ }
+ if (HPMHooks.count.HP_pet_spawn_post > 0) {
+ int (*postHookFunc) (int retVal___, struct map_session_data *sd, bool birth_process);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_spawn_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_pet_spawn_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd, birth_process);
+ }
+ }
+ return retVal___;
+}
int HP_pet_birth_process(struct map_session_data *sd, struct s_pet *petinfo) {
int hIndex = 0;
int retVal___ = 0;
@@ -71461,14 +72118,14 @@ bool HP_script_get_constant(const char *name, int *value) {
}
return retVal___;
}
-void HP_script_label_add(int key, int pos) {
+void HP_script_label_add(int key, int pos, enum script_label_flags flags) {
int hIndex = 0;
if (HPMHooks.count.HP_script_label_add_pre > 0) {
- void (*preHookFunc) (int *key, int *pos);
+ void (*preHookFunc) (int *key, int *pos, enum script_label_flags *flags);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_script_label_add_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_script_label_add_pre[hIndex].func;
- preHookFunc(&key, &pos);
+ preHookFunc(&key, &pos, &flags);
}
if (*HPMforce_return) {
*HPMforce_return = false;
@@ -71476,13 +72133,13 @@ void HP_script_label_add(int key, int pos) {
}
}
{
- HPMHooks.source.script.label_add(key, pos);
+ HPMHooks.source.script.label_add(key, pos, flags);
}
if (HPMHooks.count.HP_script_label_add_post > 0) {
- void (*postHookFunc) (int key, int pos);
+ void (*postHookFunc) (int key, int pos, enum script_label_flags flags);
for (hIndex = 0; hIndex < HPMHooks.count.HP_script_label_add_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_script_label_add_post[hIndex].func;
- postHookFunc(key, pos);
+ postHookFunc(key, pos, flags);
}
}
return;
@@ -72337,6 +72994,33 @@ const char* HP_script_parse_syntax(const char *p) {
}
return retVal___;
}
+const char* HP_script_parse_syntax_function(const char *p, bool is_public) {
+ int hIndex = 0;
+ const char* retVal___ = NULL;
+ if (HPMHooks.count.HP_script_parse_syntax_function_pre > 0) {
+ const char* (*preHookFunc) (const char **p, bool *is_public);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_syntax_function_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_script_parse_syntax_function_pre[hIndex].func;
+ retVal___ = preHookFunc(&p, &is_public);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.script.parse_syntax_function(p, is_public);
+ }
+ if (HPMHooks.count.HP_script_parse_syntax_function_post > 0) {
+ const char* (*postHookFunc) (const char* retVal___, const char *p, bool is_public);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_parse_syntax_function_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_script_parse_syntax_function_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, p, is_public);
+ }
+ }
+ return retVal___;
+}
c_op HP_script_get_com(const struct script_buf *scriptbuf, int *pos) {
int hIndex = 0;
c_op retVal___ = C_NOP;
@@ -73185,6 +73869,33 @@ void HP_script_errorwarning_sub(StringBuf *buf, const char *src, const char *fil
}
return;
}
+bool HP_script_is_permanent_variable(const char *name) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_script_is_permanent_variable_pre > 0) {
+ bool (*preHookFunc) (const char **name);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_is_permanent_variable_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_script_is_permanent_variable_pre[hIndex].func;
+ retVal___ = preHookFunc(&name);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.script.is_permanent_variable(name);
+ }
+ if (HPMHooks.count.HP_script_is_permanent_variable_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const char *name);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_script_is_permanent_variable_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_script_is_permanent_variable_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, name);
+ }
+ }
+ return retVal___;
+}
int HP_script_set_reg(struct script_state *st, struct map_session_data *sd, int64 num, const char *name, const void *value, struct reg_db *ref) {
int hIndex = 0;
int retVal___ = 0;
@@ -76138,15 +76849,15 @@ int HP_skill_get_index(int skill_id) {
}
return retVal___;
}
-int HP_skill_get_type(int skill_id) {
+int HP_skill_get_type(int skill_id, int skill_lv) {
int hIndex = 0;
int retVal___ = 0;
if (HPMHooks.count.HP_skill_get_type_pre > 0) {
- int (*preHookFunc) (int *skill_id);
+ int (*preHookFunc) (int *skill_id, int *skill_lv);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_type_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_type_pre[hIndex].func;
- retVal___ = preHookFunc(&skill_id);
+ retVal___ = preHookFunc(&skill_id, &skill_lv);
}
if (*HPMforce_return) {
*HPMforce_return = false;
@@ -76154,26 +76865,26 @@ int HP_skill_get_type(int skill_id) {
}
}
{
- retVal___ = HPMHooks.source.skill.get_type(skill_id);
+ retVal___ = HPMHooks.source.skill.get_type(skill_id, skill_lv);
}
if (HPMHooks.count.HP_skill_get_type_post > 0) {
- int (*postHookFunc) (int retVal___, int skill_id);
+ int (*postHookFunc) (int retVal___, int skill_id, int skill_lv);
for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_type_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_type_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, skill_id);
+ retVal___ = postHookFunc(retVal___, skill_id, skill_lv);
}
}
return retVal___;
}
-int HP_skill_get_hit(int skill_id) {
+int HP_skill_get_hit(int skill_id, int skill_lv) {
int hIndex = 0;
int retVal___ = 0;
if (HPMHooks.count.HP_skill_get_hit_pre > 0) {
- int (*preHookFunc) (int *skill_id);
+ int (*preHookFunc) (int *skill_id, int *skill_lv);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_hit_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_hit_pre[hIndex].func;
- retVal___ = preHookFunc(&skill_id);
+ retVal___ = preHookFunc(&skill_id, &skill_lv);
}
if (*HPMforce_return) {
*HPMforce_return = false;
@@ -76181,13 +76892,13 @@ int HP_skill_get_hit(int skill_id) {
}
}
{
- retVal___ = HPMHooks.source.skill.get_hit(skill_id);
+ retVal___ = HPMHooks.source.skill.get_hit(skill_id, skill_lv);
}
if (HPMHooks.count.HP_skill_get_hit_post > 0) {
- int (*postHookFunc) (int retVal___, int skill_id);
+ int (*postHookFunc) (int retVal___, int skill_id, int skill_lv);
for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_hit_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_hit_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, skill_id);
+ retVal___ = postHookFunc(retVal___, skill_id, skill_lv);
}
}
return retVal___;
@@ -76435,6 +77146,33 @@ int HP_skill_get_mhp(int skill_id, int skill_lv) {
}
return retVal___;
}
+int HP_skill_get_msp(int skill_id, int skill_lv) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_skill_get_msp_pre > 0) {
+ int (*preHookFunc) (int *skill_id, int *skill_lv);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_msp_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_get_msp_pre[hIndex].func;
+ retVal___ = preHookFunc(&skill_id, &skill_lv);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.skill.get_msp(skill_id, skill_lv);
+ }
+ if (HPMHooks.count.HP_skill_get_msp_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id, int skill_lv);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_msp_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_get_msp_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, skill_id, skill_lv);
+ }
+ }
+ return retVal___;
+}
int HP_skill_get_sp(int skill_id, int skill_lv) {
int hIndex = 0;
int retVal___ = 0;
@@ -76516,15 +77254,15 @@ int HP_skill_get_sp_rate(int skill_id, int skill_lv) {
}
return retVal___;
}
-int HP_skill_get_state(int skill_id) {
+int HP_skill_get_state(int skill_id, int skill_lv) {
int hIndex = 0;
int retVal___ = 0;
if (HPMHooks.count.HP_skill_get_state_pre > 0) {
- int (*preHookFunc) (int *skill_id);
+ int (*preHookFunc) (int *skill_id, int *skill_lv);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_state_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_state_pre[hIndex].func;
- retVal___ = preHookFunc(&skill_id);
+ retVal___ = preHookFunc(&skill_id, &skill_lv);
}
if (*HPMforce_return) {
*HPMforce_return = false;
@@ -76532,13 +77270,13 @@ int HP_skill_get_state(int skill_id) {
}
}
{
- retVal___ = HPMHooks.source.skill.get_state(skill_id);
+ retVal___ = HPMHooks.source.skill.get_state(skill_id, skill_lv);
}
if (HPMHooks.count.HP_skill_get_state_post > 0) {
- int (*postHookFunc) (int retVal___, int skill_id);
+ int (*postHookFunc) (int retVal___, int skill_id, int skill_lv);
for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_state_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_state_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, skill_id);
+ retVal___ = postHookFunc(retVal___, skill_id, skill_lv);
}
}
return retVal___;
@@ -76570,6 +77308,33 @@ int HP_skill_get_spiritball(int skill_id, int skill_lv) {
}
return retVal___;
}
+int HP_skill_get_item_index(int skill_id, int skill_lv) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_skill_get_item_index_pre > 0) {
+ int (*preHookFunc) (int *skill_id, int *skill_lv);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_item_index_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_get_item_index_pre[hIndex].func;
+ retVal___ = preHookFunc(&skill_id, &skill_lv);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.skill.get_item_index(skill_id, skill_lv);
+ }
+ if (HPMHooks.count.HP_skill_get_item_index_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id, int skill_lv);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_item_index_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_get_item_index_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, skill_id, skill_lv);
+ }
+ }
+ return retVal___;
+}
int HP_skill_get_itemid(int skill_id, int item_idx) {
int hIndex = 0;
int retVal___ = 0;
@@ -76597,15 +77362,15 @@ int HP_skill_get_itemid(int skill_id, int item_idx) {
}
return retVal___;
}
-int HP_skill_get_itemqty(int skill_id, int item_idx) {
+int HP_skill_get_itemqty(int skill_id, int item_idx, int skill_lv) {
int hIndex = 0;
int retVal___ = 0;
if (HPMHooks.count.HP_skill_get_itemqty_pre > 0) {
- int (*preHookFunc) (int *skill_id, int *item_idx);
+ int (*preHookFunc) (int *skill_id, int *item_idx, int *skill_lv);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_itemqty_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_itemqty_pre[hIndex].func;
- retVal___ = preHookFunc(&skill_id, &item_idx);
+ retVal___ = preHookFunc(&skill_id, &item_idx, &skill_lv);
}
if (*HPMforce_return) {
*HPMforce_return = false;
@@ -76613,17 +77378,125 @@ int HP_skill_get_itemqty(int skill_id, int item_idx) {
}
}
{
- retVal___ = HPMHooks.source.skill.get_itemqty(skill_id, item_idx);
+ retVal___ = HPMHooks.source.skill.get_itemqty(skill_id, item_idx, skill_lv);
}
if (HPMHooks.count.HP_skill_get_itemqty_post > 0) {
- int (*postHookFunc) (int retVal___, int skill_id, int item_idx);
+ int (*postHookFunc) (int retVal___, int skill_id, int item_idx, int skill_lv);
for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_itemqty_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_itemqty_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, skill_id, item_idx, skill_lv);
+ }
+ }
+ return retVal___;
+}
+bool HP_skill_get_item_any_flag(int skill_id, int skill_lv) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_skill_get_item_any_flag_pre > 0) {
+ bool (*preHookFunc) (int *skill_id, int *skill_lv);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_item_any_flag_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_get_item_any_flag_pre[hIndex].func;
+ retVal___ = preHookFunc(&skill_id, &skill_lv);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.skill.get_item_any_flag(skill_id, skill_lv);
+ }
+ if (HPMHooks.count.HP_skill_get_item_any_flag_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int skill_id, int skill_lv);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_item_any_flag_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_get_item_any_flag_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, skill_id, skill_lv);
+ }
+ }
+ return retVal___;
+}
+int HP_skill_get_equip_id(int skill_id, int item_idx) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_skill_get_equip_id_pre > 0) {
+ int (*preHookFunc) (int *skill_id, int *item_idx);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_equip_id_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_get_equip_id_pre[hIndex].func;
+ retVal___ = preHookFunc(&skill_id, &item_idx);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.skill.get_equip_id(skill_id, item_idx);
+ }
+ if (HPMHooks.count.HP_skill_get_equip_id_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id, int item_idx);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_equip_id_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_get_equip_id_post[hIndex].func;
retVal___ = postHookFunc(retVal___, skill_id, item_idx);
}
}
return retVal___;
}
+int HP_skill_get_equip_amount(int skill_id, int item_idx, int skill_lv) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_skill_get_equip_amount_pre > 0) {
+ int (*preHookFunc) (int *skill_id, int *item_idx, int *skill_lv);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_equip_amount_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_get_equip_amount_pre[hIndex].func;
+ retVal___ = preHookFunc(&skill_id, &item_idx, &skill_lv);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.skill.get_equip_amount(skill_id, item_idx, skill_lv);
+ }
+ if (HPMHooks.count.HP_skill_get_equip_amount_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id, int item_idx, int skill_lv);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_equip_amount_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_get_equip_amount_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, skill_id, item_idx, skill_lv);
+ }
+ }
+ return retVal___;
+}
+bool HP_skill_get_equip_any_flag(int skill_id, int skill_lv) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_skill_get_equip_any_flag_pre > 0) {
+ bool (*preHookFunc) (int *skill_id, int *skill_lv);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_equip_any_flag_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_get_equip_any_flag_pre[hIndex].func;
+ retVal___ = preHookFunc(&skill_id, &skill_lv);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.skill.get_equip_any_flag(skill_id, skill_lv);
+ }
+ if (HPMHooks.count.HP_skill_get_equip_any_flag_post > 0) {
+ bool (*postHookFunc) (bool retVal___, int skill_id, int skill_lv);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_equip_any_flag_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_get_equip_any_flag_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, skill_id, skill_lv);
+ }
+ }
+ return retVal___;
+}
int HP_skill_get_zeny(int skill_id, int skill_lv) {
int hIndex = 0;
int retVal___ = 0;
@@ -76867,15 +77740,15 @@ int HP_skill_get_delaynodex(int skill_id, int skill_lv) {
}
return retVal___;
}
-int HP_skill_get_castdef(int skill_id) {
+int HP_skill_get_castdef(int skill_id, int skill_lv) {
int hIndex = 0;
int retVal___ = 0;
if (HPMHooks.count.HP_skill_get_castdef_pre > 0) {
- int (*preHookFunc) (int *skill_id);
+ int (*preHookFunc) (int *skill_id, int *skill_lv);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_castdef_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_castdef_pre[hIndex].func;
- retVal___ = preHookFunc(&skill_id);
+ retVal___ = preHookFunc(&skill_id, &skill_lv);
}
if (*HPMforce_return) {
*HPMforce_return = false;
@@ -76883,13 +77756,13 @@ int HP_skill_get_castdef(int skill_id) {
}
}
{
- retVal___ = HPMHooks.source.skill.get_castdef(skill_id);
+ retVal___ = HPMHooks.source.skill.get_castdef(skill_id, skill_lv);
}
if (HPMHooks.count.HP_skill_get_castdef_post > 0) {
- int (*postHookFunc) (int retVal___, int skill_id);
+ int (*postHookFunc) (int retVal___, int skill_id, int skill_lv);
for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_castdef_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_castdef_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, skill_id);
+ retVal___ = postHookFunc(retVal___, skill_id, skill_lv);
}
}
return retVal___;
@@ -76975,15 +77848,15 @@ int HP_skill_get_ammo_qty(int skill_id, int skill_lv) {
}
return retVal___;
}
-int HP_skill_get_unit_id(int skill_id, int flag) {
+int HP_skill_get_unit_id(int skill_id, int skill_lv, int flag) {
int hIndex = 0;
int retVal___ = 0;
if (HPMHooks.count.HP_skill_get_unit_id_pre > 0) {
- int (*preHookFunc) (int *skill_id, int *flag);
+ int (*preHookFunc) (int *skill_id, int *skill_lv, int *flag);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_unit_id_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_unit_id_pre[hIndex].func;
- retVal___ = preHookFunc(&skill_id, &flag);
+ retVal___ = preHookFunc(&skill_id, &skill_lv, &flag);
}
if (*HPMforce_return) {
*HPMforce_return = false;
@@ -76991,13 +77864,13 @@ int HP_skill_get_unit_id(int skill_id, int flag) {
}
}
{
- retVal___ = HPMHooks.source.skill.get_unit_id(skill_id, flag);
+ retVal___ = HPMHooks.source.skill.get_unit_id(skill_id, skill_lv, flag);
}
if (HPMHooks.count.HP_skill_get_unit_id_post > 0) {
- int (*postHookFunc) (int retVal___, int skill_id, int flag);
+ int (*postHookFunc) (int retVal___, int skill_id, int skill_lv, int flag);
for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_unit_id_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_unit_id_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, skill_id, flag);
+ retVal___ = postHookFunc(retVal___, skill_id, skill_lv, flag);
}
}
return retVal___;
@@ -77029,15 +77902,15 @@ int HP_skill_get_inf2(int skill_id) {
}
return retVal___;
}
-int HP_skill_get_castcancel(int skill_id) {
+int HP_skill_get_castcancel(int skill_id, int skill_lv) {
int hIndex = 0;
int retVal___ = 0;
if (HPMHooks.count.HP_skill_get_castcancel_pre > 0) {
- int (*preHookFunc) (int *skill_id);
+ int (*preHookFunc) (int *skill_id, int *skill_lv);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_castcancel_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_castcancel_pre[hIndex].func;
- retVal___ = preHookFunc(&skill_id);
+ retVal___ = preHookFunc(&skill_id, &skill_lv);
}
if (*HPMforce_return) {
*HPMforce_return = false;
@@ -77045,13 +77918,13 @@ int HP_skill_get_castcancel(int skill_id) {
}
}
{
- retVal___ = HPMHooks.source.skill.get_castcancel(skill_id);
+ retVal___ = HPMHooks.source.skill.get_castcancel(skill_id, skill_lv);
}
if (HPMHooks.count.HP_skill_get_castcancel_post > 0) {
- int (*postHookFunc) (int retVal___, int skill_id);
+ int (*postHookFunc) (int retVal___, int skill_id, int skill_lv);
for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_castcancel_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_castcancel_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, skill_id);
+ retVal___ = postHookFunc(retVal___, skill_id, skill_lv);
}
}
return retVal___;
@@ -77137,15 +78010,15 @@ int HP_skill_get_unit_flag(int skill_id) {
}
return retVal___;
}
-int HP_skill_get_unit_target(int skill_id) {
+int HP_skill_get_unit_target(int skill_id, int skill_lv) {
int hIndex = 0;
int retVal___ = 0;
if (HPMHooks.count.HP_skill_get_unit_target_pre > 0) {
- int (*preHookFunc) (int *skill_id);
+ int (*preHookFunc) (int *skill_id, int *skill_lv);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_unit_target_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_unit_target_pre[hIndex].func;
- retVal___ = preHookFunc(&skill_id);
+ retVal___ = preHookFunc(&skill_id, &skill_lv);
}
if (*HPMforce_return) {
*HPMforce_return = false;
@@ -77153,26 +78026,26 @@ int HP_skill_get_unit_target(int skill_id) {
}
}
{
- retVal___ = HPMHooks.source.skill.get_unit_target(skill_id);
+ retVal___ = HPMHooks.source.skill.get_unit_target(skill_id, skill_lv);
}
if (HPMHooks.count.HP_skill_get_unit_target_post > 0) {
- int (*postHookFunc) (int retVal___, int skill_id);
+ int (*postHookFunc) (int retVal___, int skill_id, int skill_lv);
for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_unit_target_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_unit_target_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, skill_id);
+ retVal___ = postHookFunc(retVal___, skill_id, skill_lv);
}
}
return retVal___;
}
-int HP_skill_get_unit_interval(int skill_id) {
+int HP_skill_get_unit_interval(int skill_id, int skill_lv) {
int hIndex = 0;
int retVal___ = 0;
if (HPMHooks.count.HP_skill_get_unit_interval_pre > 0) {
- int (*preHookFunc) (int *skill_id);
+ int (*preHookFunc) (int *skill_id, int *skill_lv);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_unit_interval_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_unit_interval_pre[hIndex].func;
- retVal___ = preHookFunc(&skill_id);
+ retVal___ = preHookFunc(&skill_id, &skill_lv);
}
if (*HPMforce_return) {
*HPMforce_return = false;
@@ -77180,26 +78053,26 @@ int HP_skill_get_unit_interval(int skill_id) {
}
}
{
- retVal___ = HPMHooks.source.skill.get_unit_interval(skill_id);
+ retVal___ = HPMHooks.source.skill.get_unit_interval(skill_id, skill_lv);
}
if (HPMHooks.count.HP_skill_get_unit_interval_post > 0) {
- int (*postHookFunc) (int retVal___, int skill_id);
+ int (*postHookFunc) (int retVal___, int skill_id, int skill_lv);
for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_unit_interval_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_unit_interval_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, skill_id);
+ retVal___ = postHookFunc(retVal___, skill_id, skill_lv);
}
}
return retVal___;
}
-int HP_skill_get_unit_bl_target(int skill_id) {
+int HP_skill_get_unit_bl_target(int skill_id, int skill_lv) {
int hIndex = 0;
int retVal___ = 0;
if (HPMHooks.count.HP_skill_get_unit_bl_target_pre > 0) {
- int (*preHookFunc) (int *skill_id);
+ int (*preHookFunc) (int *skill_id, int *skill_lv);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_unit_bl_target_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_get_unit_bl_target_pre[hIndex].func;
- retVal___ = preHookFunc(&skill_id);
+ retVal___ = preHookFunc(&skill_id, &skill_lv);
}
if (*HPMforce_return) {
*HPMforce_return = false;
@@ -77207,13 +78080,13 @@ int HP_skill_get_unit_bl_target(int skill_id) {
}
}
{
- retVal___ = HPMHooks.source.skill.get_unit_bl_target(skill_id);
+ retVal___ = HPMHooks.source.skill.get_unit_bl_target(skill_id, skill_lv);
}
if (HPMHooks.count.HP_skill_get_unit_bl_target_post > 0) {
- int (*postHookFunc) (int retVal___, int skill_id);
+ int (*postHookFunc) (int retVal___, int skill_id, int skill_lv);
for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_unit_bl_target_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_get_unit_bl_target_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, skill_id);
+ retVal___ = postHookFunc(retVal___, skill_id, skill_lv);
}
}
return retVal___;
@@ -77488,15 +78361,15 @@ int HP_skill_name2id(const char *name) {
}
return retVal___;
}
-int HP_skill_isammotype(struct map_session_data *sd, int skill_id) {
+int HP_skill_isammotype(struct map_session_data *sd, int skill_id, int skill_lv) {
int hIndex = 0;
int retVal___ = 0;
if (HPMHooks.count.HP_skill_isammotype_pre > 0) {
- int (*preHookFunc) (struct map_session_data **sd, int *skill_id);
+ int (*preHookFunc) (struct map_session_data **sd, int *skill_id, int *skill_lv);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_isammotype_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_isammotype_pre[hIndex].func;
- retVal___ = preHookFunc(&sd, &skill_id);
+ retVal___ = preHookFunc(&sd, &skill_id, &skill_lv);
}
if (*HPMforce_return) {
*HPMforce_return = false;
@@ -77504,13 +78377,13 @@ int HP_skill_isammotype(struct map_session_data *sd, int skill_id) {
}
}
{
- retVal___ = HPMHooks.source.skill.isammotype(sd, skill_id);
+ retVal___ = HPMHooks.source.skill.isammotype(sd, skill_id, skill_lv);
}
if (HPMHooks.count.HP_skill_isammotype_post > 0) {
- int (*postHookFunc) (int retVal___, struct map_session_data *sd, int skill_id);
+ int (*postHookFunc) (int retVal___, struct map_session_data *sd, int skill_id, int skill_lv);
for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_isammotype_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_isammotype_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, sd, skill_id);
+ retVal___ = postHookFunc(retVal___, sd, skill_id, skill_lv);
}
}
return retVal___;
@@ -77704,11 +78577,11 @@ int HP_skill_counter_additional_effect(struct block_list *src, struct block_list
}
return retVal___;
}
-int HP_skill_blown(struct block_list *src, struct block_list *target, int count, int8 dir, int flag) {
+int HP_skill_blown(struct block_list *src, struct block_list *target, int count, enum unit_dir dir, int flag) {
int hIndex = 0;
int retVal___ = 0;
if (HPMHooks.count.HP_skill_blown_pre > 0) {
- int (*preHookFunc) (struct block_list **src, struct block_list **target, int *count, int8 *dir, int *flag);
+ int (*preHookFunc) (struct block_list **src, struct block_list **target, int *count, enum unit_dir *dir, int *flag);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_blown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_blown_pre[hIndex].func;
@@ -77723,7 +78596,7 @@ int HP_skill_blown(struct block_list *src, struct block_list *target, int count,
retVal___ = HPMHooks.source.skill.blown(src, target, count, dir, flag);
}
if (HPMHooks.count.HP_skill_blown_post > 0) {
- int (*postHookFunc) (int retVal___, struct block_list *src, struct block_list *target, int count, int8 dir, int flag);
+ int (*postHookFunc) (int retVal___, struct block_list *src, struct block_list *target, int count, enum unit_dir dir, int flag);
for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_blown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_blown_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, target, count, dir, flag);
@@ -77920,15 +78793,15 @@ struct skill_unit_group* HP_skill_init_unitgroup(struct block_list *src, int cou
}
return retVal___;
}
-int HP_skill_del_unitgroup(struct skill_unit_group *group, const char *file, int line, const char *func) {
+int HP_skill_del_unitgroup(struct skill_unit_group *group) {
int hIndex = 0;
int retVal___ = 0;
if (HPMHooks.count.HP_skill_del_unitgroup_pre > 0) {
- int (*preHookFunc) (struct skill_unit_group **group, const char **file, int *line, const char **func);
+ int (*preHookFunc) (struct skill_unit_group **group);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_del_unitgroup_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_del_unitgroup_pre[hIndex].func;
- retVal___ = preHookFunc(&group, &file, &line, &func);
+ retVal___ = preHookFunc(&group);
}
if (*HPMforce_return) {
*HPMforce_return = false;
@@ -77936,13 +78809,13 @@ int HP_skill_del_unitgroup(struct skill_unit_group *group, const char *file, int
}
}
{
- retVal___ = HPMHooks.source.skill.del_unitgroup(group, file, line, func);
+ retVal___ = HPMHooks.source.skill.del_unitgroup(group);
}
if (HPMHooks.count.HP_skill_del_unitgroup_post > 0) {
- int (*postHookFunc) (int retVal___, struct skill_unit_group *group, const char *file, int line, const char *func);
+ int (*postHookFunc) (int retVal___, struct skill_unit_group *group);
for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_del_unitgroup_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_del_unitgroup_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, group, file, line, func);
+ retVal___ = postHookFunc(retVal___, group);
}
}
return retVal___;
@@ -78163,14 +79036,14 @@ int HP_skill_delay_fix(struct block_list *bl, uint16 skill_id, uint16 skill_lv)
}
return retVal___;
}
-bool HP_skill_is_item_skill(struct map_session_data *sd, int skill_id, int skill_lv) {
+int HP_skill_check_condition_required_equip(struct map_session_data *sd, int skill_id, int skill_lv) {
int hIndex = 0;
- bool retVal___ = false;
- if (HPMHooks.count.HP_skill_is_item_skill_pre > 0) {
- bool (*preHookFunc) (struct map_session_data **sd, int *skill_id, int *skill_lv);
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_skill_check_condition_required_equip_pre > 0) {
+ int (*preHookFunc) (struct map_session_data **sd, int *skill_id, int *skill_lv);
*HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_is_item_skill_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_skill_is_item_skill_pre[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_required_equip_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_check_condition_required_equip_pre[hIndex].func;
retVal___ = preHookFunc(&sd, &skill_id, &skill_lv);
}
if (*HPMforce_return) {
@@ -78179,12 +79052,12 @@ bool HP_skill_is_item_skill(struct map_session_data *sd, int skill_id, int skill
}
}
{
- retVal___ = HPMHooks.source.skill.is_item_skill(sd, skill_id, skill_lv);
+ retVal___ = HPMHooks.source.skill.check_condition_required_equip(sd, skill_id, skill_lv);
}
- if (HPMHooks.count.HP_skill_is_item_skill_post > 0) {
- bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, int skill_id, int skill_lv);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_is_item_skill_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_skill_is_item_skill_post[hIndex].func;
+ if (HPMHooks.count.HP_skill_check_condition_required_equip_post > 0) {
+ int (*postHookFunc) (int retVal___, struct map_session_data *sd, int skill_id, int skill_lv);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_required_equip_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_check_condition_required_equip_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, skill_id, skill_lv);
}
}
@@ -78217,6 +79090,60 @@ int HP_skill_check_condition_castbegin(struct map_session_data *sd, uint16 skill
}
return retVal___;
}
+int HP_skill_check_condition_required_items(struct map_session_data *sd, int skill_id, int skill_lv) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_skill_check_condition_required_items_pre > 0) {
+ int (*preHookFunc) (struct map_session_data **sd, int *skill_id, int *skill_lv);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_required_items_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_check_condition_required_items_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd, &skill_id, &skill_lv);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.skill.check_condition_required_items(sd, skill_id, skill_lv);
+ }
+ if (HPMHooks.count.HP_skill_check_condition_required_items_post > 0) {
+ int (*postHookFunc) (int retVal___, struct map_session_data *sd, int skill_id, int skill_lv);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_check_condition_required_items_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_check_condition_required_items_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd, skill_id, skill_lv);
+ }
+ }
+ return retVal___;
+}
+bool HP_skill_items_required(struct map_session_data *sd, int skill_id, int skill_lv) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_skill_items_required_pre > 0) {
+ bool (*preHookFunc) (struct map_session_data **sd, int *skill_id, int *skill_lv);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_items_required_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_items_required_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd, &skill_id, &skill_lv);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.skill.items_required(sd, skill_id, skill_lv);
+ }
+ if (HPMHooks.count.HP_skill_items_required_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, int skill_id, int skill_lv);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_items_required_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_items_required_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd, skill_id, skill_lv);
+ }
+ }
+ return retVal___;
+}
int HP_skill_check_condition_castend(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv) {
int hIndex = 0;
int retVal___ = 0;
@@ -78244,6 +79171,33 @@ int HP_skill_check_condition_castend(struct map_session_data *sd, uint16 skill_i
}
return retVal___;
}
+int HP_skill_get_any_item_index(struct map_session_data *sd, int skill_id, int skill_lv) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_skill_get_any_item_index_pre > 0) {
+ int (*preHookFunc) (struct map_session_data **sd, int *skill_id, int *skill_lv);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_any_item_index_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_get_any_item_index_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd, &skill_id, &skill_lv);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.skill.get_any_item_index(sd, skill_id, skill_lv);
+ }
+ if (HPMHooks.count.HP_skill_get_any_item_index_post > 0) {
+ int (*postHookFunc) (int retVal___, struct map_session_data *sd, int skill_id, int skill_lv);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_any_item_index_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_get_any_item_index_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd, skill_id, skill_lv);
+ }
+ }
+ return retVal___;
+}
int HP_skill_consume_requirement(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv, short type) {
int hIndex = 0;
int retVal___ = 0;
@@ -78867,6 +79821,32 @@ int HP_skill_not_ok_mercenary(uint16 skill_id, struct mercenary_data *md) {
}
return retVal___;
}
+void HP_skill_validate_autocast_data(struct map_session_data *sd, int skill_id, int skill_lv) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_skill_validate_autocast_data_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, int *skill_id, int *skill_lv);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_autocast_data_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_autocast_data_pre[hIndex].func;
+ preHookFunc(&sd, &skill_id, &skill_lv);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.skill.validate_autocast_data(sd, skill_id, skill_lv);
+ }
+ if (HPMHooks.count.HP_skill_validate_autocast_data_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, int skill_id, int skill_lv);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_autocast_data_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_autocast_data_post[hIndex].func;
+ postHookFunc(sd, skill_id, skill_lv);
+ }
+ }
+ return;
+}
int HP_skill_chastle_mob_changetarget(struct block_list *bl, va_list ap) {
int hIndex = 0;
int retVal___ = 0;
@@ -79409,14 +80389,14 @@ int HP_skill_check_unit_range2_sub(struct block_list *bl, va_list ap) {
}
return retVal___;
}
-void HP_skill_toggle_magicpower(struct block_list *bl, uint16 skill_id) {
+void HP_skill_toggle_magicpower(struct block_list *bl, uint16 skill_id, int skill_lv) {
int hIndex = 0;
if (HPMHooks.count.HP_skill_toggle_magicpower_pre > 0) {
- void (*preHookFunc) (struct block_list **bl, uint16 *skill_id);
+ void (*preHookFunc) (struct block_list **bl, uint16 *skill_id, int *skill_lv);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_toggle_magicpower_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_toggle_magicpower_pre[hIndex].func;
- preHookFunc(&bl, &skill_id);
+ preHookFunc(&bl, &skill_id, &skill_lv);
}
if (*HPMforce_return) {
*HPMforce_return = false;
@@ -79424,13 +80404,13 @@ void HP_skill_toggle_magicpower(struct block_list *bl, uint16 skill_id) {
}
}
{
- HPMHooks.source.skill.toggle_magicpower(bl, skill_id);
+ HPMHooks.source.skill.toggle_magicpower(bl, skill_id, skill_lv);
}
if (HPMHooks.count.HP_skill_toggle_magicpower_post > 0) {
- void (*postHookFunc) (struct block_list *bl, uint16 skill_id);
+ void (*postHookFunc) (struct block_list *bl, uint16 skill_id, int skill_lv);
for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_toggle_magicpower_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_toggle_magicpower_post[hIndex].func;
- postHookFunc(bl, skill_id);
+ postHookFunc(bl, skill_id, skill_lv);
}
}
return;
@@ -80034,10 +81014,10 @@ int HP_skill_check_condition_mob_master_sub(struct block_list *bl, va_list ap) {
}
return retVal___;
}
-void HP_skill_brandishspear_first(struct square *tc, uint8 dir, int16 x, int16 y) {
+void HP_skill_brandishspear_first(struct square *tc, enum unit_dir dir, int16 x, int16 y) {
int hIndex = 0;
if (HPMHooks.count.HP_skill_brandishspear_first_pre > 0) {
- void (*preHookFunc) (struct square **tc, uint8 *dir, int16 *x, int16 *y);
+ void (*preHookFunc) (struct square **tc, enum unit_dir *dir, int16 *x, int16 *y);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_brandishspear_first_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_brandishspear_first_pre[hIndex].func;
@@ -80052,7 +81032,7 @@ void HP_skill_brandishspear_first(struct square *tc, uint8 dir, int16 x, int16 y
HPMHooks.source.skill.brandishspear_first(tc, dir, x, y);
}
if (HPMHooks.count.HP_skill_brandishspear_first_post > 0) {
- void (*postHookFunc) (struct square *tc, uint8 dir, int16 x, int16 y);
+ void (*postHookFunc) (struct square *tc, enum unit_dir dir, int16 x, int16 y);
for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_brandishspear_first_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_brandishspear_first_post[hIndex].func;
postHookFunc(tc, dir, x, y);
@@ -80060,10 +81040,10 @@ void HP_skill_brandishspear_first(struct square *tc, uint8 dir, int16 x, int16 y
}
return;
}
-void HP_skill_brandishspear_dir(struct square *tc, uint8 dir, int are) {
+void HP_skill_brandishspear_dir(struct square *tc, enum unit_dir dir, int are) {
int hIndex = 0;
if (HPMHooks.count.HP_skill_brandishspear_dir_pre > 0) {
- void (*preHookFunc) (struct square **tc, uint8 *dir, int *are);
+ void (*preHookFunc) (struct square **tc, enum unit_dir *dir, int *are);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_brandishspear_dir_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_brandishspear_dir_pre[hIndex].func;
@@ -80078,7 +81058,7 @@ void HP_skill_brandishspear_dir(struct square *tc, uint8 dir, int are) {
HPMHooks.source.skill.brandishspear_dir(tc, dir, are);
}
if (HPMHooks.count.HP_skill_brandishspear_dir_post > 0) {
- void (*postHookFunc) (struct square *tc, uint8 dir, int are);
+ void (*postHookFunc) (struct square *tc, enum unit_dir dir, int are);
for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_brandishspear_dir_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_brandishspear_dir_post[hIndex].func;
postHookFunc(tc, dir, are);
@@ -80610,6 +81590,163 @@ void HP_skill_init_unit_layout_unknown(int skill_idx, int pos) {
}
return;
}
+void HP_skill_validate_id(struct config_setting_t *conf, struct s_skill_db *sk, int conf_index) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_skill_validate_id_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk, int *conf_index);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_id_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_id_pre[hIndex].func;
+ preHookFunc(&conf, &sk, &conf_index);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.skill.validate_id(conf, sk, conf_index);
+ }
+ if (HPMHooks.count.HP_skill_validate_id_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk, int conf_index);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_id_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_id_post[hIndex].func;
+ postHookFunc(conf, sk, conf_index);
+ }
+ }
+ return;
+}
+bool HP_skill_name_contains_invalid_character(const char *name) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_skill_name_contains_invalid_character_pre > 0) {
+ bool (*preHookFunc) (const char **name);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_name_contains_invalid_character_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_name_contains_invalid_character_pre[hIndex].func;
+ retVal___ = preHookFunc(&name);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.skill.name_contains_invalid_character(name);
+ }
+ if (HPMHooks.count.HP_skill_name_contains_invalid_character_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const char *name);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_name_contains_invalid_character_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_name_contains_invalid_character_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, name);
+ }
+ }
+ return retVal___;
+}
+void HP_skill_validate_name(struct config_setting_t *conf, struct s_skill_db *sk) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_skill_validate_name_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_name_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_name_pre[hIndex].func;
+ preHookFunc(&conf, &sk);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.skill.validate_name(conf, sk);
+ }
+ if (HPMHooks.count.HP_skill_validate_name_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_name_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_name_post[hIndex].func;
+ postHookFunc(conf, sk);
+ }
+ }
+ return;
+}
+void HP_skill_validate_max_level(struct config_setting_t *conf, struct s_skill_db *sk) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_skill_validate_max_level_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_max_level_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_max_level_pre[hIndex].func;
+ preHookFunc(&conf, &sk);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.skill.validate_max_level(conf, sk);
+ }
+ if (HPMHooks.count.HP_skill_validate_max_level_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_max_level_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_max_level_post[hIndex].func;
+ postHookFunc(conf, sk);
+ }
+ }
+ return;
+}
+void HP_skill_validate_description(struct config_setting_t *conf, struct s_skill_db *sk) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_skill_validate_description_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_description_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_description_pre[hIndex].func;
+ preHookFunc(&conf, &sk);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.skill.validate_description(conf, sk);
+ }
+ if (HPMHooks.count.HP_skill_validate_description_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_description_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_description_post[hIndex].func;
+ postHookFunc(conf, sk);
+ }
+ }
+ return;
+}
+void HP_skill_validate_range(struct config_setting_t *conf, struct s_skill_db *sk) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_skill_validate_range_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_range_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_range_pre[hIndex].func;
+ preHookFunc(&conf, &sk);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.skill.validate_range(conf, sk);
+ }
+ if (HPMHooks.count.HP_skill_validate_range_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_range_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_range_post[hIndex].func;
+ postHookFunc(conf, sk);
+ }
+ }
+ return;
+}
void HP_skill_validate_hittype(struct config_setting_t *conf, struct s_skill_db *sk) {
int hIndex = 0;
if (HPMHooks.count.HP_skill_validate_hittype_pre > 0) {
@@ -80662,6 +81799,32 @@ void HP_skill_validate_skilltype(struct config_setting_t *conf, struct s_skill_d
}
return;
}
+void HP_skill_validate_skillinfo(struct config_setting_t *conf, struct s_skill_db *sk) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_skill_validate_skillinfo_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_skillinfo_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_skillinfo_pre[hIndex].func;
+ preHookFunc(&conf, &sk);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.skill.validate_skillinfo(conf, sk);
+ }
+ if (HPMHooks.count.HP_skill_validate_skillinfo_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_skillinfo_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_skillinfo_post[hIndex].func;
+ postHookFunc(conf, sk);
+ }
+ }
+ return;
+}
void HP_skill_validate_attacktype(struct config_setting_t *conf, struct s_skill_db *sk) {
int hIndex = 0;
if (HPMHooks.count.HP_skill_validate_attacktype_pre > 0) {
@@ -80714,13 +81877,13 @@ void HP_skill_validate_element(struct config_setting_t *conf, struct s_skill_db
}
return;
}
-void HP_skill_validate_skillinfo(struct config_setting_t *conf, struct s_skill_db *sk) {
+void HP_skill_validate_damagetype(struct config_setting_t *conf, struct s_skill_db *sk) {
int hIndex = 0;
- if (HPMHooks.count.HP_skill_validate_skillinfo_pre > 0) {
+ if (HPMHooks.count.HP_skill_validate_damagetype_pre > 0) {
void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
*HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_skillinfo_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_skill_validate_skillinfo_pre[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_damagetype_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_damagetype_pre[hIndex].func;
preHookFunc(&conf, &sk);
}
if (*HPMforce_return) {
@@ -80729,24 +81892,24 @@ void HP_skill_validate_skillinfo(struct config_setting_t *conf, struct s_skill_d
}
}
{
- HPMHooks.source.skill.validate_skillinfo(conf, sk);
+ HPMHooks.source.skill.validate_damagetype(conf, sk);
}
- if (HPMHooks.count.HP_skill_validate_skillinfo_post > 0) {
+ if (HPMHooks.count.HP_skill_validate_damagetype_post > 0) {
void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_skillinfo_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_skill_validate_skillinfo_post[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_damagetype_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_damagetype_post[hIndex].func;
postHookFunc(conf, sk);
}
}
return;
}
-void HP_skill_validate_damagetype(struct config_setting_t *conf, struct s_skill_db *sk) {
+void HP_skill_validate_splash_range(struct config_setting_t *conf, struct s_skill_db *sk) {
int hIndex = 0;
- if (HPMHooks.count.HP_skill_validate_damagetype_pre > 0) {
+ if (HPMHooks.count.HP_skill_validate_splash_range_pre > 0) {
void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
*HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_damagetype_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_skill_validate_damagetype_pre[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_splash_range_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_splash_range_pre[hIndex].func;
preHookFunc(&conf, &sk);
}
if (*HPMforce_return) {
@@ -80755,12 +81918,324 @@ void HP_skill_validate_damagetype(struct config_setting_t *conf, struct s_skill_
}
}
{
- HPMHooks.source.skill.validate_damagetype(conf, sk);
+ HPMHooks.source.skill.validate_splash_range(conf, sk);
}
- if (HPMHooks.count.HP_skill_validate_damagetype_post > 0) {
+ if (HPMHooks.count.HP_skill_validate_splash_range_post > 0) {
void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_damagetype_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_skill_validate_damagetype_post[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_splash_range_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_splash_range_post[hIndex].func;
+ postHookFunc(conf, sk);
+ }
+ }
+ return;
+}
+void HP_skill_validate_number_of_hits(struct config_setting_t *conf, struct s_skill_db *sk) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_skill_validate_number_of_hits_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_number_of_hits_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_number_of_hits_pre[hIndex].func;
+ preHookFunc(&conf, &sk);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.skill.validate_number_of_hits(conf, sk);
+ }
+ if (HPMHooks.count.HP_skill_validate_number_of_hits_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_number_of_hits_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_number_of_hits_post[hIndex].func;
+ postHookFunc(conf, sk);
+ }
+ }
+ return;
+}
+void HP_skill_validate_interrupt_cast(struct config_setting_t *conf, struct s_skill_db *sk) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_skill_validate_interrupt_cast_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_interrupt_cast_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_interrupt_cast_pre[hIndex].func;
+ preHookFunc(&conf, &sk);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.skill.validate_interrupt_cast(conf, sk);
+ }
+ if (HPMHooks.count.HP_skill_validate_interrupt_cast_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_interrupt_cast_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_interrupt_cast_post[hIndex].func;
+ postHookFunc(conf, sk);
+ }
+ }
+ return;
+}
+void HP_skill_validate_cast_def_rate(struct config_setting_t *conf, struct s_skill_db *sk) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_skill_validate_cast_def_rate_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_cast_def_rate_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_cast_def_rate_pre[hIndex].func;
+ preHookFunc(&conf, &sk);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.skill.validate_cast_def_rate(conf, sk);
+ }
+ if (HPMHooks.count.HP_skill_validate_cast_def_rate_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_cast_def_rate_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_cast_def_rate_post[hIndex].func;
+ postHookFunc(conf, sk);
+ }
+ }
+ return;
+}
+void HP_skill_validate_number_of_instances(struct config_setting_t *conf, struct s_skill_db *sk) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_skill_validate_number_of_instances_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_number_of_instances_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_number_of_instances_pre[hIndex].func;
+ preHookFunc(&conf, &sk);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.skill.validate_number_of_instances(conf, sk);
+ }
+ if (HPMHooks.count.HP_skill_validate_number_of_instances_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_number_of_instances_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_number_of_instances_post[hIndex].func;
+ postHookFunc(conf, sk);
+ }
+ }
+ return;
+}
+void HP_skill_validate_knock_back_tiles(struct config_setting_t *conf, struct s_skill_db *sk) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_skill_validate_knock_back_tiles_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_knock_back_tiles_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_knock_back_tiles_pre[hIndex].func;
+ preHookFunc(&conf, &sk);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.skill.validate_knock_back_tiles(conf, sk);
+ }
+ if (HPMHooks.count.HP_skill_validate_knock_back_tiles_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_knock_back_tiles_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_knock_back_tiles_post[hIndex].func;
+ postHookFunc(conf, sk);
+ }
+ }
+ return;
+}
+void HP_skill_validate_cast_time(struct config_setting_t *conf, struct s_skill_db *sk) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_skill_validate_cast_time_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_cast_time_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_cast_time_pre[hIndex].func;
+ preHookFunc(&conf, &sk);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.skill.validate_cast_time(conf, sk);
+ }
+ if (HPMHooks.count.HP_skill_validate_cast_time_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_cast_time_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_cast_time_post[hIndex].func;
+ postHookFunc(conf, sk);
+ }
+ }
+ return;
+}
+void HP_skill_validate_act_delay(struct config_setting_t *conf, struct s_skill_db *sk) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_skill_validate_act_delay_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_act_delay_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_act_delay_pre[hIndex].func;
+ preHookFunc(&conf, &sk);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.skill.validate_act_delay(conf, sk);
+ }
+ if (HPMHooks.count.HP_skill_validate_act_delay_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_act_delay_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_act_delay_post[hIndex].func;
+ postHookFunc(conf, sk);
+ }
+ }
+ return;
+}
+void HP_skill_validate_walk_delay(struct config_setting_t *conf, struct s_skill_db *sk) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_skill_validate_walk_delay_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_walk_delay_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_walk_delay_pre[hIndex].func;
+ preHookFunc(&conf, &sk);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.skill.validate_walk_delay(conf, sk);
+ }
+ if (HPMHooks.count.HP_skill_validate_walk_delay_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_walk_delay_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_walk_delay_post[hIndex].func;
+ postHookFunc(conf, sk);
+ }
+ }
+ return;
+}
+void HP_skill_validate_skill_data1(struct config_setting_t *conf, struct s_skill_db *sk) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_skill_validate_skill_data1_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_skill_data1_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_skill_data1_pre[hIndex].func;
+ preHookFunc(&conf, &sk);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.skill.validate_skill_data1(conf, sk);
+ }
+ if (HPMHooks.count.HP_skill_validate_skill_data1_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_skill_data1_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_skill_data1_post[hIndex].func;
+ postHookFunc(conf, sk);
+ }
+ }
+ return;
+}
+void HP_skill_validate_skill_data2(struct config_setting_t *conf, struct s_skill_db *sk) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_skill_validate_skill_data2_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_skill_data2_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_skill_data2_pre[hIndex].func;
+ preHookFunc(&conf, &sk);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.skill.validate_skill_data2(conf, sk);
+ }
+ if (HPMHooks.count.HP_skill_validate_skill_data2_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_skill_data2_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_skill_data2_post[hIndex].func;
+ postHookFunc(conf, sk);
+ }
+ }
+ return;
+}
+void HP_skill_validate_cooldown(struct config_setting_t *conf, struct s_skill_db *sk) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_skill_validate_cooldown_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_cooldown_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_cooldown_pre[hIndex].func;
+ preHookFunc(&conf, &sk);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.skill.validate_cooldown(conf, sk);
+ }
+ if (HPMHooks.count.HP_skill_validate_cooldown_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_cooldown_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_cooldown_post[hIndex].func;
+ postHookFunc(conf, sk);
+ }
+ }
+ return;
+}
+void HP_skill_validate_fixed_cast_time(struct config_setting_t *conf, struct s_skill_db *sk) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_skill_validate_fixed_cast_time_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_fixed_cast_time_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_fixed_cast_time_pre[hIndex].func;
+ preHookFunc(&conf, &sk);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.skill.validate_fixed_cast_time(conf, sk);
+ }
+ if (HPMHooks.count.HP_skill_validate_fixed_cast_time_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_fixed_cast_time_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_fixed_cast_time_post[hIndex].func;
postHookFunc(conf, sk);
}
}
@@ -80792,6 +82267,215 @@ void HP_skill_validate_castnodex(struct config_setting_t *conf, struct s_skill_d
}
return;
}
+void HP_skill_validate_hp_cost(struct config_setting_t *conf, struct s_skill_db *sk) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_skill_validate_hp_cost_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_hp_cost_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_hp_cost_pre[hIndex].func;
+ preHookFunc(&conf, &sk);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.skill.validate_hp_cost(conf, sk);
+ }
+ if (HPMHooks.count.HP_skill_validate_hp_cost_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_hp_cost_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_hp_cost_post[hIndex].func;
+ postHookFunc(conf, sk);
+ }
+ }
+ return;
+}
+void HP_skill_validate_sp_cost(struct config_setting_t *conf, struct s_skill_db *sk) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_skill_validate_sp_cost_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_sp_cost_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_sp_cost_pre[hIndex].func;
+ preHookFunc(&conf, &sk);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.skill.validate_sp_cost(conf, sk);
+ }
+ if (HPMHooks.count.HP_skill_validate_sp_cost_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_sp_cost_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_sp_cost_post[hIndex].func;
+ postHookFunc(conf, sk);
+ }
+ }
+ return;
+}
+void HP_skill_validate_hp_rate_cost(struct config_setting_t *conf, struct s_skill_db *sk) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_skill_validate_hp_rate_cost_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_hp_rate_cost_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_hp_rate_cost_pre[hIndex].func;
+ preHookFunc(&conf, &sk);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.skill.validate_hp_rate_cost(conf, sk);
+ }
+ if (HPMHooks.count.HP_skill_validate_hp_rate_cost_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_hp_rate_cost_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_hp_rate_cost_post[hIndex].func;
+ postHookFunc(conf, sk);
+ }
+ }
+ return;
+}
+void HP_skill_validate_sp_rate_cost(struct config_setting_t *conf, struct s_skill_db *sk) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_skill_validate_sp_rate_cost_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_sp_rate_cost_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_sp_rate_cost_pre[hIndex].func;
+ preHookFunc(&conf, &sk);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.skill.validate_sp_rate_cost(conf, sk);
+ }
+ if (HPMHooks.count.HP_skill_validate_sp_rate_cost_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_sp_rate_cost_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_sp_rate_cost_post[hIndex].func;
+ postHookFunc(conf, sk);
+ }
+ }
+ return;
+}
+void HP_skill_validate_max_hp_trigger(struct config_setting_t *conf, struct s_skill_db *sk) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_skill_validate_max_hp_trigger_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_max_hp_trigger_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_max_hp_trigger_pre[hIndex].func;
+ preHookFunc(&conf, &sk);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.skill.validate_max_hp_trigger(conf, sk);
+ }
+ if (HPMHooks.count.HP_skill_validate_max_hp_trigger_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_max_hp_trigger_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_max_hp_trigger_post[hIndex].func;
+ postHookFunc(conf, sk);
+ }
+ }
+ return;
+}
+void HP_skill_validate_max_sp_trigger(struct config_setting_t *conf, struct s_skill_db *sk) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_skill_validate_max_sp_trigger_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_max_sp_trigger_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_max_sp_trigger_pre[hIndex].func;
+ preHookFunc(&conf, &sk);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.skill.validate_max_sp_trigger(conf, sk);
+ }
+ if (HPMHooks.count.HP_skill_validate_max_sp_trigger_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_max_sp_trigger_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_max_sp_trigger_post[hIndex].func;
+ postHookFunc(conf, sk);
+ }
+ }
+ return;
+}
+void HP_skill_validate_zeny_cost(struct config_setting_t *conf, struct s_skill_db *sk) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_skill_validate_zeny_cost_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_zeny_cost_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_zeny_cost_pre[hIndex].func;
+ preHookFunc(&conf, &sk);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.skill.validate_zeny_cost(conf, sk);
+ }
+ if (HPMHooks.count.HP_skill_validate_zeny_cost_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_zeny_cost_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_zeny_cost_post[hIndex].func;
+ postHookFunc(conf, sk);
+ }
+ }
+ return;
+}
+int HP_skill_validate_weapontype_sub(const char *type, bool on, struct s_skill_db *sk) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_skill_validate_weapontype_sub_pre > 0) {
+ int (*preHookFunc) (const char **type, bool *on, struct s_skill_db **sk);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_weapontype_sub_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_weapontype_sub_pre[hIndex].func;
+ retVal___ = preHookFunc(&type, &on, &sk);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.skill.validate_weapontype_sub(type, on, sk);
+ }
+ if (HPMHooks.count.HP_skill_validate_weapontype_sub_post > 0) {
+ int (*postHookFunc) (int retVal___, const char *type, bool on, struct s_skill_db *sk);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_weapontype_sub_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_weapontype_sub_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, type, on, sk);
+ }
+ }
+ return retVal___;
+}
void HP_skill_validate_weapontype(struct config_setting_t *conf, struct s_skill_db *sk) {
int hIndex = 0;
if (HPMHooks.count.HP_skill_validate_weapontype_pre > 0) {
@@ -80818,6 +82502,33 @@ void HP_skill_validate_weapontype(struct config_setting_t *conf, struct s_skill_
}
return;
}
+int HP_skill_validate_ammotype_sub(const char *type, bool on, struct s_skill_db *sk) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_skill_validate_ammotype_sub_pre > 0) {
+ int (*preHookFunc) (const char **type, bool *on, struct s_skill_db **sk);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_ammotype_sub_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_ammotype_sub_pre[hIndex].func;
+ retVal___ = preHookFunc(&type, &on, &sk);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.skill.validate_ammotype_sub(type, on, sk);
+ }
+ if (HPMHooks.count.HP_skill_validate_ammotype_sub_post > 0) {
+ int (*postHookFunc) (int retVal___, const char *type, bool on, struct s_skill_db *sk);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_ammotype_sub_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_ammotype_sub_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, type, on, sk);
+ }
+ }
+ return retVal___;
+}
void HP_skill_validate_ammotype(struct config_setting_t *conf, struct s_skill_db *sk) {
int hIndex = 0;
if (HPMHooks.count.HP_skill_validate_ammotype_pre > 0) {
@@ -80844,6 +82555,59 @@ void HP_skill_validate_ammotype(struct config_setting_t *conf, struct s_skill_db
}
return;
}
+void HP_skill_validate_ammo_amount(struct config_setting_t *conf, struct s_skill_db *sk) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_skill_validate_ammo_amount_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_ammo_amount_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_ammo_amount_pre[hIndex].func;
+ preHookFunc(&conf, &sk);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.skill.validate_ammo_amount(conf, sk);
+ }
+ if (HPMHooks.count.HP_skill_validate_ammo_amount_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_ammo_amount_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_ammo_amount_post[hIndex].func;
+ postHookFunc(conf, sk);
+ }
+ }
+ return;
+}
+int HP_skill_validate_state_sub(const char *state) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_skill_validate_state_sub_pre > 0) {
+ int (*preHookFunc) (const char **state);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_state_sub_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_state_sub_pre[hIndex].func;
+ retVal___ = preHookFunc(&state);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.skill.validate_state_sub(state);
+ }
+ if (HPMHooks.count.HP_skill_validate_state_sub_post > 0) {
+ int (*postHookFunc) (int retVal___, const char *state);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_state_sub_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_state_sub_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, state);
+ }
+ }
+ return retVal___;
+}
void HP_skill_validate_state(struct config_setting_t *conf, struct s_skill_db *sk) {
int hIndex = 0;
if (HPMHooks.count.HP_skill_validate_state_pre > 0) {
@@ -80870,6 +82634,110 @@ void HP_skill_validate_state(struct config_setting_t *conf, struct s_skill_db *s
}
return;
}
+void HP_skill_validate_spirit_sphere_cost(struct config_setting_t *conf, struct s_skill_db *sk) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_skill_validate_spirit_sphere_cost_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_spirit_sphere_cost_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_spirit_sphere_cost_pre[hIndex].func;
+ preHookFunc(&conf, &sk);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.skill.validate_spirit_sphere_cost(conf, sk);
+ }
+ if (HPMHooks.count.HP_skill_validate_spirit_sphere_cost_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_spirit_sphere_cost_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_spirit_sphere_cost_post[hIndex].func;
+ postHookFunc(conf, sk);
+ }
+ }
+ return;
+}
+void HP_skill_validate_item_requirements_sub_item_amount(struct config_setting_t *conf, struct s_skill_db *sk, int item_index) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_skill_validate_item_requirements_sub_item_amount_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk, int *item_index);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_item_requirements_sub_item_amount_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_item_requirements_sub_item_amount_pre[hIndex].func;
+ preHookFunc(&conf, &sk, &item_index);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.skill.validate_item_requirements_sub_item_amount(conf, sk, item_index);
+ }
+ if (HPMHooks.count.HP_skill_validate_item_requirements_sub_item_amount_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk, int item_index);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_item_requirements_sub_item_amount_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_item_requirements_sub_item_amount_post[hIndex].func;
+ postHookFunc(conf, sk, item_index);
+ }
+ }
+ return;
+}
+void HP_skill_validate_item_requirements_sub_items(struct config_setting_t *conf, struct s_skill_db *sk) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_skill_validate_item_requirements_sub_items_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_item_requirements_sub_items_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_item_requirements_sub_items_pre[hIndex].func;
+ preHookFunc(&conf, &sk);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.skill.validate_item_requirements_sub_items(conf, sk);
+ }
+ if (HPMHooks.count.HP_skill_validate_item_requirements_sub_items_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_item_requirements_sub_items_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_item_requirements_sub_items_post[hIndex].func;
+ postHookFunc(conf, sk);
+ }
+ }
+ return;
+}
+void HP_skill_validate_item_requirements_sub_any_flag(struct config_setting_t *conf, struct s_skill_db *sk) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_skill_validate_item_requirements_sub_any_flag_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_item_requirements_sub_any_flag_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_item_requirements_sub_any_flag_pre[hIndex].func;
+ preHookFunc(&conf, &sk);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.skill.validate_item_requirements_sub_any_flag(conf, sk);
+ }
+ if (HPMHooks.count.HP_skill_validate_item_requirements_sub_any_flag_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_item_requirements_sub_any_flag_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_item_requirements_sub_any_flag_post[hIndex].func;
+ postHookFunc(conf, sk);
+ }
+ }
+ return;
+}
void HP_skill_validate_item_requirements(struct config_setting_t *conf, struct s_skill_db *sk) {
int hIndex = 0;
if (HPMHooks.count.HP_skill_validate_item_requirements_pre > 0) {
@@ -80896,13 +82764,39 @@ void HP_skill_validate_item_requirements(struct config_setting_t *conf, struct s
}
return;
}
-void HP_skill_validate_unit_target(struct config_setting_t *conf, struct s_skill_db *sk) {
+void HP_skill_validate_equip_requirements_sub_item_amount(struct config_setting_t *conf, struct s_skill_db *sk, int item_index) {
int hIndex = 0;
- if (HPMHooks.count.HP_skill_validate_unit_target_pre > 0) {
+ if (HPMHooks.count.HP_skill_validate_equip_requirements_sub_item_amount_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk, int *item_index);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_equip_requirements_sub_item_amount_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_equip_requirements_sub_item_amount_pre[hIndex].func;
+ preHookFunc(&conf, &sk, &item_index);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.skill.validate_equip_requirements_sub_item_amount(conf, sk, item_index);
+ }
+ if (HPMHooks.count.HP_skill_validate_equip_requirements_sub_item_amount_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk, int item_index);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_equip_requirements_sub_item_amount_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_equip_requirements_sub_item_amount_post[hIndex].func;
+ postHookFunc(conf, sk, item_index);
+ }
+ }
+ return;
+}
+void HP_skill_validate_equip_requirements_sub_items(struct config_setting_t *conf, struct s_skill_db *sk) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_skill_validate_equip_requirements_sub_items_pre > 0) {
void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
*HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_unit_target_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_skill_validate_unit_target_pre[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_equip_requirements_sub_items_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_equip_requirements_sub_items_pre[hIndex].func;
preHookFunc(&conf, &sk);
}
if (*HPMforce_return) {
@@ -80911,24 +82805,24 @@ void HP_skill_validate_unit_target(struct config_setting_t *conf, struct s_skill
}
}
{
- HPMHooks.source.skill.validate_unit_target(conf, sk);
+ HPMHooks.source.skill.validate_equip_requirements_sub_items(conf, sk);
}
- if (HPMHooks.count.HP_skill_validate_unit_target_post > 0) {
+ if (HPMHooks.count.HP_skill_validate_equip_requirements_sub_items_post > 0) {
void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_unit_target_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_skill_validate_unit_target_post[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_equip_requirements_sub_items_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_equip_requirements_sub_items_post[hIndex].func;
postHookFunc(conf, sk);
}
}
return;
}
-void HP_skill_validate_unit_flag(struct config_setting_t *conf, struct s_skill_db *sk) {
+void HP_skill_validate_equip_requirements_sub_any_flag(struct config_setting_t *conf, struct s_skill_db *sk) {
int hIndex = 0;
- if (HPMHooks.count.HP_skill_validate_unit_flag_pre > 0) {
+ if (HPMHooks.count.HP_skill_validate_equip_requirements_sub_any_flag_pre > 0) {
void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
*HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_unit_flag_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_skill_validate_unit_flag_pre[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_equip_requirements_sub_any_flag_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_equip_requirements_sub_any_flag_pre[hIndex].func;
preHookFunc(&conf, &sk);
}
if (*HPMforce_return) {
@@ -80937,24 +82831,24 @@ void HP_skill_validate_unit_flag(struct config_setting_t *conf, struct s_skill_d
}
}
{
- HPMHooks.source.skill.validate_unit_flag(conf, sk);
+ HPMHooks.source.skill.validate_equip_requirements_sub_any_flag(conf, sk);
}
- if (HPMHooks.count.HP_skill_validate_unit_flag_post > 0) {
+ if (HPMHooks.count.HP_skill_validate_equip_requirements_sub_any_flag_post > 0) {
void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_unit_flag_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_skill_validate_unit_flag_post[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_equip_requirements_sub_any_flag_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_equip_requirements_sub_any_flag_post[hIndex].func;
postHookFunc(conf, sk);
}
}
return;
}
-void HP_skill_validate_additional_fields(struct config_setting_t *conf, struct s_skill_db *sk) {
+void HP_skill_validate_equip_requirements(struct config_setting_t *conf, struct s_skill_db *sk) {
int hIndex = 0;
- if (HPMHooks.count.HP_skill_validate_additional_fields_pre > 0) {
+ if (HPMHooks.count.HP_skill_validate_equip_requirements_pre > 0) {
void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
*HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_additional_fields_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_skill_validate_additional_fields_pre[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_equip_requirements_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_equip_requirements_pre[hIndex].func;
preHookFunc(&conf, &sk);
}
if (*HPMforce_return) {
@@ -80963,26 +82857,26 @@ void HP_skill_validate_additional_fields(struct config_setting_t *conf, struct s
}
}
{
- HPMHooks.source.skill.validate_additional_fields(conf, sk);
+ HPMHooks.source.skill.validate_equip_requirements(conf, sk);
}
- if (HPMHooks.count.HP_skill_validate_additional_fields_post > 0) {
+ if (HPMHooks.count.HP_skill_validate_equip_requirements_post > 0) {
void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_additional_fields_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_skill_validate_additional_fields_post[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_equip_requirements_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_equip_requirements_post[hIndex].func;
postHookFunc(conf, sk);
}
}
return;
}
-bool HP_skill_validate_skilldb(struct s_skill_db *skt, const char *source) {
+int HP_skill_validate_requirements_item_name(const char *name) {
int hIndex = 0;
- bool retVal___ = false;
- if (HPMHooks.count.HP_skill_validate_skilldb_pre > 0) {
- bool (*preHookFunc) (struct s_skill_db **skt, const char **source);
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_skill_validate_requirements_item_name_pre > 0) {
+ int (*preHookFunc) (const char **name);
*HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_skilldb_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_skill_validate_skilldb_pre[hIndex].func;
- retVal___ = preHookFunc(&skt, &source);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_requirements_item_name_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_requirements_item_name_pre[hIndex].func;
+ retVal___ = preHookFunc(&name);
}
if (*HPMforce_return) {
*HPMforce_return = false;
@@ -80990,53 +82884,52 @@ bool HP_skill_validate_skilldb(struct s_skill_db *skt, const char *source) {
}
}
{
- retVal___ = HPMHooks.source.skill.validate_skilldb(skt, source);
+ retVal___ = HPMHooks.source.skill.validate_requirements_item_name(name);
}
- if (HPMHooks.count.HP_skill_validate_skilldb_post > 0) {
- bool (*postHookFunc) (bool retVal___, struct s_skill_db *skt, const char *source);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_skilldb_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_skill_validate_skilldb_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, skt, source);
+ if (HPMHooks.count.HP_skill_validate_requirements_item_name_post > 0) {
+ int (*postHookFunc) (int retVal___, const char *name);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_requirements_item_name_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_requirements_item_name_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, name);
}
}
return retVal___;
}
-int HP_skill_validate_weapontype_sub(const char *type, bool on, struct s_skill_db *sk) {
+void HP_skill_validate_requirements(struct config_setting_t *conf, struct s_skill_db *sk) {
int hIndex = 0;
- int retVal___ = 0;
- if (HPMHooks.count.HP_skill_validate_weapontype_sub_pre > 0) {
- int (*preHookFunc) (const char **type, bool *on, struct s_skill_db **sk);
+ if (HPMHooks.count.HP_skill_validate_requirements_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
*HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_weapontype_sub_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_skill_validate_weapontype_sub_pre[hIndex].func;
- retVal___ = preHookFunc(&type, &on, &sk);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_requirements_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_requirements_pre[hIndex].func;
+ preHookFunc(&conf, &sk);
}
if (*HPMforce_return) {
*HPMforce_return = false;
- return retVal___;
+ return;
}
}
{
- retVal___ = HPMHooks.source.skill.validate_weapontype_sub(type, on, sk);
+ HPMHooks.source.skill.validate_requirements(conf, sk);
}
- if (HPMHooks.count.HP_skill_validate_weapontype_sub_post > 0) {
- int (*postHookFunc) (int retVal___, const char *type, bool on, struct s_skill_db *sk);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_weapontype_sub_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_skill_validate_weapontype_sub_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, type, on, sk);
+ if (HPMHooks.count.HP_skill_validate_requirements_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_requirements_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_requirements_post[hIndex].func;
+ postHookFunc(conf, sk);
}
}
- return retVal___;
+ return;
}
-int HP_skill_validate_ammotype_sub(const char *type, bool on, struct s_skill_db *sk) {
+int HP_skill_validate_unit_id_sub(int unit_id) {
int hIndex = 0;
int retVal___ = 0;
- if (HPMHooks.count.HP_skill_validate_ammotype_sub_pre > 0) {
- int (*preHookFunc) (const char **type, bool *on, struct s_skill_db **sk);
+ if (HPMHooks.count.HP_skill_validate_unit_id_sub_pre > 0) {
+ int (*preHookFunc) (int *unit_id);
*HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_ammotype_sub_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_skill_validate_ammotype_sub_pre[hIndex].func;
- retVal___ = preHookFunc(&type, &on, &sk);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_unit_id_sub_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_unit_id_sub_pre[hIndex].func;
+ retVal___ = preHookFunc(&unit_id);
}
if (*HPMforce_return) {
*HPMforce_return = false;
@@ -81044,17 +82937,121 @@ int HP_skill_validate_ammotype_sub(const char *type, bool on, struct s_skill_db
}
}
{
- retVal___ = HPMHooks.source.skill.validate_ammotype_sub(type, on, sk);
+ retVal___ = HPMHooks.source.skill.validate_unit_id_sub(unit_id);
}
- if (HPMHooks.count.HP_skill_validate_ammotype_sub_post > 0) {
- int (*postHookFunc) (int retVal___, const char *type, bool on, struct s_skill_db *sk);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_ammotype_sub_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_skill_validate_ammotype_sub_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, type, on, sk);
+ if (HPMHooks.count.HP_skill_validate_unit_id_sub_post > 0) {
+ int (*postHookFunc) (int retVal___, int unit_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_unit_id_sub_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_unit_id_sub_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, unit_id);
}
}
return retVal___;
}
+void HP_skill_validate_unit_id(struct config_setting_t *conf, struct s_skill_db *sk) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_skill_validate_unit_id_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_unit_id_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_unit_id_pre[hIndex].func;
+ preHookFunc(&conf, &sk);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.skill.validate_unit_id(conf, sk);
+ }
+ if (HPMHooks.count.HP_skill_validate_unit_id_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_unit_id_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_unit_id_post[hIndex].func;
+ postHookFunc(conf, sk);
+ }
+ }
+ return;
+}
+void HP_skill_validate_unit_layout(struct config_setting_t *conf, struct s_skill_db *sk) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_skill_validate_unit_layout_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_unit_layout_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_unit_layout_pre[hIndex].func;
+ preHookFunc(&conf, &sk);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.skill.validate_unit_layout(conf, sk);
+ }
+ if (HPMHooks.count.HP_skill_validate_unit_layout_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_unit_layout_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_unit_layout_post[hIndex].func;
+ postHookFunc(conf, sk);
+ }
+ }
+ return;
+}
+void HP_skill_validate_unit_range(struct config_setting_t *conf, struct s_skill_db *sk) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_skill_validate_unit_range_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_unit_range_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_unit_range_pre[hIndex].func;
+ preHookFunc(&conf, &sk);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.skill.validate_unit_range(conf, sk);
+ }
+ if (HPMHooks.count.HP_skill_validate_unit_range_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_unit_range_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_unit_range_post[hIndex].func;
+ postHookFunc(conf, sk);
+ }
+ }
+ return;
+}
+void HP_skill_validate_unit_interval(struct config_setting_t *conf, struct s_skill_db *sk) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_skill_validate_unit_interval_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_unit_interval_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_unit_interval_pre[hIndex].func;
+ preHookFunc(&conf, &sk);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.skill.validate_unit_interval(conf, sk);
+ }
+ if (HPMHooks.count.HP_skill_validate_unit_interval_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_unit_interval_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_unit_interval_post[hIndex].func;
+ postHookFunc(conf, sk);
+ }
+ }
+ return;
+}
int HP_skill_validate_unit_flag_sub(const char *type, bool on, struct s_skill_db *sk) {
int hIndex = 0;
int retVal___ = 0;
@@ -81082,6 +83079,137 @@ int HP_skill_validate_unit_flag_sub(const char *type, bool on, struct s_skill_db
}
return retVal___;
}
+void HP_skill_validate_unit_flag(struct config_setting_t *conf, struct s_skill_db *sk) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_skill_validate_unit_flag_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_unit_flag_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_unit_flag_pre[hIndex].func;
+ preHookFunc(&conf, &sk);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.skill.validate_unit_flag(conf, sk);
+ }
+ if (HPMHooks.count.HP_skill_validate_unit_flag_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_unit_flag_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_unit_flag_post[hIndex].func;
+ postHookFunc(conf, sk);
+ }
+ }
+ return;
+}
+int HP_skill_validate_unit_target_sub(const char *target) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_skill_validate_unit_target_sub_pre > 0) {
+ int (*preHookFunc) (const char **target);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_unit_target_sub_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_unit_target_sub_pre[hIndex].func;
+ retVal___ = preHookFunc(&target);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.skill.validate_unit_target_sub(target);
+ }
+ if (HPMHooks.count.HP_skill_validate_unit_target_sub_post > 0) {
+ int (*postHookFunc) (int retVal___, const char *target);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_unit_target_sub_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_unit_target_sub_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, target);
+ }
+ }
+ return retVal___;
+}
+void HP_skill_validate_unit_target(struct config_setting_t *conf, struct s_skill_db *sk) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_skill_validate_unit_target_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_unit_target_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_unit_target_pre[hIndex].func;
+ preHookFunc(&conf, &sk);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.skill.validate_unit_target(conf, sk);
+ }
+ if (HPMHooks.count.HP_skill_validate_unit_target_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_unit_target_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_unit_target_post[hIndex].func;
+ postHookFunc(conf, sk);
+ }
+ }
+ return;
+}
+void HP_skill_validate_unit(struct config_setting_t *conf, struct s_skill_db *sk) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_skill_validate_unit_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_unit_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_unit_pre[hIndex].func;
+ preHookFunc(&conf, &sk);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.skill.validate_unit(conf, sk);
+ }
+ if (HPMHooks.count.HP_skill_validate_unit_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_unit_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_unit_post[hIndex].func;
+ postHookFunc(conf, sk);
+ }
+ }
+ return;
+}
+void HP_skill_validate_additional_fields(struct config_setting_t *conf, struct s_skill_db *sk) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_skill_validate_additional_fields_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **conf, struct s_skill_db **sk);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_additional_fields_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_validate_additional_fields_pre[hIndex].func;
+ preHookFunc(&conf, &sk);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.skill.validate_additional_fields(conf, sk);
+ }
+ if (HPMHooks.count.HP_skill_validate_additional_fields_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *conf, struct s_skill_db *sk);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_validate_additional_fields_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_validate_additional_fields_post[hIndex].func;
+ postHookFunc(conf, sk);
+ }
+ }
+ return;
+}
bool HP_skill_read_skilldb(const char *filename) {
int hIndex = 0;
bool retVal___ = false;
@@ -81995,10 +84123,10 @@ int HP_skill_attack_dir_unknown(int *attack_type, struct block_list *src, struct
}
return retVal___;
}
-void HP_skill_attack_blow_unknown(int *attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, int *type, struct Damage *dmg, int64 *damage, int8 *dir) {
+void HP_skill_attack_blow_unknown(int *attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, int *type, struct Damage *dmg, int64 *damage, enum unit_dir *dir) {
int hIndex = 0;
if (HPMHooks.count.HP_skill_attack_blow_unknown_pre > 0) {
- void (*preHookFunc) (int **attack_type, struct block_list **src, struct block_list **dsrc, struct block_list **bl, uint16 **skill_id, uint16 **skill_lv, int64 **tick, int **flag, int **type, struct Damage **dmg, int64 **damage, int8 **dir);
+ void (*preHookFunc) (int **attack_type, struct block_list **src, struct block_list **dsrc, struct block_list **bl, uint16 **skill_id, uint16 **skill_lv, int64 **tick, int **flag, int **type, struct Damage **dmg, int64 **damage, enum unit_dir **dir);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_attack_blow_unknown_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_skill_attack_blow_unknown_pre[hIndex].func;
@@ -82013,7 +84141,7 @@ void HP_skill_attack_blow_unknown(int *attack_type, struct block_list *src, stru
HPMHooks.source.skill.attack_blow_unknown(attack_type, src, dsrc, bl, skill_id, skill_lv, tick, flag, type, dmg, damage, dir);
}
if (HPMHooks.count.HP_skill_attack_blow_unknown_post > 0) {
- void (*postHookFunc) (int *attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, int *type, struct Damage *dmg, int64 *damage, int8 *dir);
+ void (*postHookFunc) (int *attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, int *type, struct Damage *dmg, int64 *damage, enum unit_dir *dir);
for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_attack_blow_unknown_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_skill_attack_blow_unknown_post[hIndex].func;
postHookFunc(attack_type, src, dsrc, bl, skill_id, skill_lv, tick, flag, type, dmg, damage, dir);
@@ -82727,6 +84855,33 @@ int HP_skill_count_wos(struct block_list *bl, va_list ap) {
}
return retVal___;
}
+int HP_skill_get_linked_song_dance_id(int skill_id) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_skill_get_linked_song_dance_id_pre > 0) {
+ int (*preHookFunc) (int *skill_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_linked_song_dance_id_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_skill_get_linked_song_dance_id_pre[hIndex].func;
+ retVal___ = preHookFunc(&skill_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.skill.get_linked_song_dance_id(skill_id);
+ }
+ if (HPMHooks.count.HP_skill_get_linked_song_dance_id_post > 0) {
+ int (*postHookFunc) (int retVal___, int skill_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_skill_get_linked_song_dance_id_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_skill_get_linked_song_dance_id_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, skill_id);
+ }
+ }
+ return retVal___;
+}
/* socket_interface */
void HP_sockt_init(void) {
int hIndex = 0;
@@ -85475,15 +87630,15 @@ int HP_status_change_start_sub(struct block_list *src, struct block_list *bl, en
}
return retVal___;
}
-int HP_status_change_end_(struct block_list *bl, enum sc_type type, int tid, const char *file, int line) {
+int HP_status_change_end_(struct block_list *bl, enum sc_type type, int tid) {
int hIndex = 0;
int retVal___ = 0;
if (HPMHooks.count.HP_status_change_end__pre > 0) {
- int (*preHookFunc) (struct block_list **bl, enum sc_type *type, int *tid, const char **file, int *line);
+ int (*preHookFunc) (struct block_list **bl, enum sc_type *type, int *tid);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_status_change_end__pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_status_change_end__pre[hIndex].func;
- retVal___ = preHookFunc(&bl, &type, &tid, &file, &line);
+ retVal___ = preHookFunc(&bl, &type, &tid);
}
if (*HPMforce_return) {
*HPMforce_return = false;
@@ -85491,13 +87646,13 @@ int HP_status_change_end_(struct block_list *bl, enum sc_type type, int tid, con
}
}
{
- retVal___ = HPMHooks.source.status.change_end_(bl, type, tid, file, line);
+ retVal___ = HPMHooks.source.status.change_end_(bl, type, tid);
}
if (HPMHooks.count.HP_status_change_end__post > 0) {
- int (*postHookFunc) (int retVal___, struct block_list *bl, enum sc_type type, int tid, const char *file, int line);
+ int (*postHookFunc) (int retVal___, struct block_list *bl, enum sc_type type, int tid);
for (hIndex = 0; hIndex < HPMHooks.count.HP_status_change_end__post; hIndex++) {
postHookFunc = HPMHooks.list.HP_status_change_end__post[hIndex].func;
- retVal___ = postHookFunc(retVal___, bl, type, tid, file, line);
+ retVal___ = postHookFunc(retVal___, bl, type, tid);
}
}
return retVal___;
@@ -90806,6 +92961,33 @@ struct unit_data* HP_unit_bl2ud(struct block_list *bl) {
}
return retVal___;
}
+const struct unit_data* HP_unit_cbl2ud(const struct block_list *bl) {
+ int hIndex = 0;
+ const struct unit_data* retVal___ = NULL;
+ if (HPMHooks.count.HP_unit_cbl2ud_pre > 0) {
+ const struct unit_data* (*preHookFunc) (const struct block_list **bl);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_cbl2ud_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_unit_cbl2ud_pre[hIndex].func;
+ retVal___ = preHookFunc(&bl);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.unit.cbl2ud(bl);
+ }
+ if (HPMHooks.count.HP_unit_cbl2ud_post > 0) {
+ const struct unit_data* (*postHookFunc) (const struct unit_data* retVal___, const struct block_list *bl);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_cbl2ud_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_unit_cbl2ud_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, bl);
+ }
+ }
+ return retVal___;
+}
struct unit_data* HP_unit_bl2ud2(struct block_list *bl) {
int hIndex = 0;
struct unit_data* retVal___ = NULL;
@@ -90886,14 +93068,14 @@ int HP_unit_attack_timer(int tid, int64 tick, int id, intptr_t data) {
}
return retVal___;
}
-int HP_unit_walktoxy_timer(int tid, int64 tick, int id, intptr_t data) {
+int HP_unit_walk_toxy_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if (HPMHooks.count.HP_unit_walktoxy_timer_pre > 0) {
+ if (HPMHooks.count.HP_unit_walk_toxy_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_walktoxy_timer_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_unit_walktoxy_timer_pre[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_walk_toxy_timer_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_unit_walk_toxy_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
if (*HPMforce_return) {
@@ -90902,25 +93084,25 @@ int HP_unit_walktoxy_timer(int tid, int64 tick, int id, intptr_t data) {
}
}
{
- retVal___ = HPMHooks.source.unit.walktoxy_timer(tid, tick, id, data);
+ retVal___ = HPMHooks.source.unit.walk_toxy_timer(tid, tick, id, data);
}
- if (HPMHooks.count.HP_unit_walktoxy_timer_post > 0) {
+ if (HPMHooks.count.HP_unit_walk_toxy_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_walktoxy_timer_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_unit_walktoxy_timer_post[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_walk_toxy_timer_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_unit_walk_toxy_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
}
return retVal___;
}
-int HP_unit_walktoxy_sub(struct block_list *bl) {
+int HP_unit_walk_toxy_sub(struct block_list *bl) {
int hIndex = 0;
int retVal___ = 0;
- if (HPMHooks.count.HP_unit_walktoxy_sub_pre > 0) {
+ if (HPMHooks.count.HP_unit_walk_toxy_sub_pre > 0) {
int (*preHookFunc) (struct block_list **bl);
*HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_walktoxy_sub_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_unit_walktoxy_sub_pre[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_walk_toxy_sub_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_unit_walk_toxy_sub_pre[hIndex].func;
retVal___ = preHookFunc(&bl);
}
if (*HPMforce_return) {
@@ -90929,25 +93111,25 @@ int HP_unit_walktoxy_sub(struct block_list *bl) {
}
}
{
- retVal___ = HPMHooks.source.unit.walktoxy_sub(bl);
+ retVal___ = HPMHooks.source.unit.walk_toxy_sub(bl);
}
- if (HPMHooks.count.HP_unit_walktoxy_sub_post > 0) {
+ if (HPMHooks.count.HP_unit_walk_toxy_sub_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_walktoxy_sub_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_unit_walktoxy_sub_post[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_walk_toxy_sub_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_unit_walk_toxy_sub_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl);
}
}
return retVal___;
}
-int HP_unit_delay_walktoxy_timer(int tid, int64 tick, int id, intptr_t data) {
+int HP_unit_delay_walk_toxy_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if (HPMHooks.count.HP_unit_delay_walktoxy_timer_pre > 0) {
+ if (HPMHooks.count.HP_unit_delay_walk_toxy_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_delay_walktoxy_timer_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_unit_delay_walktoxy_timer_pre[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_delay_walk_toxy_timer_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_unit_delay_walk_toxy_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
if (*HPMforce_return) {
@@ -90956,25 +93138,25 @@ int HP_unit_delay_walktoxy_timer(int tid, int64 tick, int id, intptr_t data) {
}
}
{
- retVal___ = HPMHooks.source.unit.delay_walktoxy_timer(tid, tick, id, data);
+ retVal___ = HPMHooks.source.unit.delay_walk_toxy_timer(tid, tick, id, data);
}
- if (HPMHooks.count.HP_unit_delay_walktoxy_timer_post > 0) {
+ if (HPMHooks.count.HP_unit_delay_walk_toxy_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_delay_walktoxy_timer_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_unit_delay_walktoxy_timer_post[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_delay_walk_toxy_timer_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_unit_delay_walk_toxy_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
}
return retVal___;
}
-int HP_unit_walktoxy(struct block_list *bl, short x, short y, int flag) {
+int HP_unit_walk_toxy(struct block_list *bl, short x, short y, int flag) {
int hIndex = 0;
int retVal___ = 0;
- if (HPMHooks.count.HP_unit_walktoxy_pre > 0) {
+ if (HPMHooks.count.HP_unit_walk_toxy_pre > 0) {
int (*preHookFunc) (struct block_list **bl, short *x, short *y, int *flag);
*HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_walktoxy_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_unit_walktoxy_pre[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_walk_toxy_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_unit_walk_toxy_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &x, &y, &flag);
}
if (*HPMforce_return) {
@@ -90983,25 +93165,25 @@ int HP_unit_walktoxy(struct block_list *bl, short x, short y, int flag) {
}
}
{
- retVal___ = HPMHooks.source.unit.walktoxy(bl, x, y, flag);
+ retVal___ = HPMHooks.source.unit.walk_toxy(bl, x, y, flag);
}
- if (HPMHooks.count.HP_unit_walktoxy_post > 0) {
+ if (HPMHooks.count.HP_unit_walk_toxy_post > 0) {
int (*postHookFunc) (int retVal___, struct block_list *bl, short x, short y, int flag);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_walktoxy_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_unit_walktoxy_post[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_walk_toxy_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_unit_walk_toxy_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, x, y, flag);
}
}
return retVal___;
}
-int HP_unit_walktobl_sub(int tid, int64 tick, int id, intptr_t data) {
+int HP_unit_walktobl_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if (HPMHooks.count.HP_unit_walktobl_sub_pre > 0) {
+ if (HPMHooks.count.HP_unit_walktobl_timer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_walktobl_sub_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_unit_walktobl_sub_pre[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_walktobl_timer_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_unit_walktobl_timer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
if (*HPMforce_return) {
@@ -91010,12 +93192,12 @@ int HP_unit_walktobl_sub(int tid, int64 tick, int id, intptr_t data) {
}
}
{
- retVal___ = HPMHooks.source.unit.walktobl_sub(tid, tick, id, data);
+ retVal___ = HPMHooks.source.unit.walktobl_timer(tid, tick, id, data);
}
- if (HPMHooks.count.HP_unit_walktobl_sub_post > 0) {
+ if (HPMHooks.count.HP_unit_walktobl_timer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_walktobl_sub_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_unit_walktobl_sub_post[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_walktobl_timer_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_unit_walktobl_timer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
}
@@ -91155,14 +93337,14 @@ int HP_unit_movepos(struct block_list *bl, short dst_x, short dst_y, int easy, b
}
return retVal___;
}
-int HP_unit_setdir(struct block_list *bl, unsigned char dir) {
+int HP_unit_set_dir(struct block_list *bl, enum unit_dir dir) {
int hIndex = 0;
int retVal___ = 0;
- if (HPMHooks.count.HP_unit_setdir_pre > 0) {
- int (*preHookFunc) (struct block_list **bl, unsigned char *dir);
+ if (HPMHooks.count.HP_unit_set_dir_pre > 0) {
+ int (*preHookFunc) (struct block_list **bl, enum unit_dir *dir);
*HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_setdir_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_unit_setdir_pre[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_set_dir_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_unit_set_dir_pre[hIndex].func;
retVal___ = preHookFunc(&bl, &dir);
}
if (*HPMforce_return) {
@@ -91171,22 +93353,22 @@ int HP_unit_setdir(struct block_list *bl, unsigned char dir) {
}
}
{
- retVal___ = HPMHooks.source.unit.setdir(bl, dir);
+ retVal___ = HPMHooks.source.unit.set_dir(bl, dir);
}
- if (HPMHooks.count.HP_unit_setdir_post > 0) {
- int (*postHookFunc) (int retVal___, struct block_list *bl, unsigned char dir);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_setdir_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_unit_setdir_post[hIndex].func;
+ if (HPMHooks.count.HP_unit_set_dir_post > 0) {
+ int (*postHookFunc) (int retVal___, struct block_list *bl, enum unit_dir dir);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_set_dir_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_unit_set_dir_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, dir);
}
}
return retVal___;
}
-uint8 HP_unit_getdir(struct block_list *bl) {
+enum unit_dir HP_unit_getdir(const struct block_list *bl) {
int hIndex = 0;
- uint8 retVal___ = 0;
+ enum unit_dir retVal___ = UNIT_DIR_UNDEFINED;
if (HPMHooks.count.HP_unit_getdir_pre > 0) {
- uint8 (*preHookFunc) (struct block_list **bl);
+ enum unit_dir (*preHookFunc) (const struct block_list **bl);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_getdir_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_getdir_pre[hIndex].func;
@@ -91201,7 +93383,7 @@ uint8 HP_unit_getdir(struct block_list *bl) {
retVal___ = HPMHooks.source.unit.getdir(bl);
}
if (HPMHooks.count.HP_unit_getdir_post > 0) {
- uint8 (*postHookFunc) (uint8 retVal___, struct block_list *bl);
+ enum unit_dir (*postHookFunc) (enum unit_dir retVal___, const struct block_list *bl);
for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_getdir_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_getdir_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl);
@@ -91263,6 +93445,33 @@ int HP_unit_warp(struct block_list *bl, short m, short x, short y, enum clr_type
}
return retVal___;
}
+int HP_unit_warpto_master(struct block_list *master_bl, struct block_list *slave_bl) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_unit_warpto_master_pre > 0) {
+ int (*preHookFunc) (struct block_list **master_bl, struct block_list **slave_bl);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_warpto_master_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_unit_warpto_master_pre[hIndex].func;
+ retVal___ = preHookFunc(&master_bl, &slave_bl);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.unit.warpto_master(master_bl, slave_bl);
+ }
+ if (HPMHooks.count.HP_unit_warpto_master_post > 0) {
+ int (*postHookFunc) (int retVal___, struct block_list *master_bl, struct block_list *slave_bl);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_warpto_master_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_unit_warpto_master_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, master_bl, slave_bl);
+ }
+ }
+ return retVal___;
+}
int HP_unit_stop_walking(struct block_list *bl, int type) {
int hIndex = 0;
int retVal___ = 0;
@@ -91317,14 +93526,14 @@ int HP_unit_skilluse_id(struct block_list *src, int target_id, uint16 skill_id,
}
return retVal___;
}
-int HP_unit_step_timer(int tid, int64 tick, int id, intptr_t data) {
+int HP_unit_steptimer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;
- if (HPMHooks.count.HP_unit_step_timer_pre > 0) {
+ if (HPMHooks.count.HP_unit_steptimer_pre > 0) {
int (*preHookFunc) (int *tid, int64 *tick, int *id, intptr_t *data);
*HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_step_timer_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_unit_step_timer_pre[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_steptimer_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_unit_steptimer_pre[hIndex].func;
retVal___ = preHookFunc(&tid, &tick, &id, &data);
}
if (*HPMforce_return) {
@@ -91333,12 +93542,12 @@ int HP_unit_step_timer(int tid, int64 tick, int id, intptr_t data) {
}
}
{
- retVal___ = HPMHooks.source.unit.step_timer(tid, tick, id, data);
+ retVal___ = HPMHooks.source.unit.steptimer(tid, tick, id, data);
}
- if (HPMHooks.count.HP_unit_step_timer_post > 0) {
+ if (HPMHooks.count.HP_unit_steptimer_post > 0) {
int (*postHookFunc) (int retVal___, int tid, int64 tick, int id, intptr_t data);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_step_timer_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_unit_step_timer_post[hIndex].func;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_steptimer_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_unit_steptimer_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tid, tick, id, data);
}
}
@@ -91747,11 +93956,11 @@ bool HP_unit_can_reach_bl(struct block_list *bl, struct block_list *tbl, int ran
}
return retVal___;
}
-int HP_unit_calc_pos(struct block_list *bl, int tx, int ty, uint8 dir) {
+int HP_unit_calc_pos(struct block_list *bl, int tx, int ty, enum unit_dir dir) {
int hIndex = 0;
int retVal___ = 0;
if (HPMHooks.count.HP_unit_calc_pos_pre > 0) {
- int (*preHookFunc) (struct block_list **bl, int *tx, int *ty, uint8 *dir);
+ int (*preHookFunc) (struct block_list **bl, int *tx, int *ty, enum unit_dir *dir);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_calc_pos_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_unit_calc_pos_pre[hIndex].func;
@@ -91766,7 +93975,7 @@ int HP_unit_calc_pos(struct block_list *bl, int tx, int ty, uint8 dir) {
retVal___ = HPMHooks.source.unit.calc_pos(bl, tx, ty, dir);
}
if (HPMHooks.count.HP_unit_calc_pos_post > 0) {
- int (*postHookFunc) (int retVal___, struct block_list *bl, int tx, int ty, uint8 dir);
+ int (*postHookFunc) (int retVal___, struct block_list *bl, int tx, int ty, enum unit_dir dir);
for (hIndex = 0; hIndex < HPMHooks.count.HP_unit_calc_pos_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_unit_calc_pos_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bl, tx, ty, dir);
diff --git a/src/plugins/Makefile.in b/src/plugins/Makefile.in
index 5527ceb2f..073cd8d41 100644
--- a/src/plugins/Makefile.in
+++ b/src/plugins/Makefile.in
@@ -43,7 +43,7 @@ HPMHOOKING = $(addprefix HPMHooking_, login char map)
ALLPLUGINS = $(filter-out HPMHooking, $(basename $(wildcard *.c))) $(HPMHOOKING)
# Plugins that will be built through 'make plugins' or 'make all'
-PLUGINS = sample db2sql HPMHooking_char HPMHooking_login HPMHooking_map $(MYPLUGINS)
+PLUGINS = sample db2sql constdb2doc generate-translations mapcache script_mapquit HPMHooking_char HPMHooking_login HPMHooking_map $(MYPLUGINS)
COMMON_D = ../common
# Includes private headers (plugins might need them)
@@ -103,7 +103,7 @@ Makefile: Makefile.in
../../plugins/%@DLLEXT@: %.c $(ALL_H) $$(shell ls %/* 2>/dev/null)
@echo " CC $<"
- @$(CC) $(COMMON_INCLUDE) $(THIRDPARTY_INCLUDE) @PLUGINSTATIC@ @DEFS@ @CFLAGS@ @CPPFLAGS@ @LDFLAGS@ @SOFLAGS@ -o $@ $<
+ @$(CC) $(COMMON_INCLUDE) $(THIRDPARTY_INCLUDE) @PLUGINSTATIC@ @DEFS@ @CFLAGS@ @CPPFLAGS@ @LDFLAGS@ @SOFLAGS@ @LIBS@ @MYSQL_LIBS@ -o $@ $<
../../plugins/HPMHooking_login@DLLEXT@: HPMHOOKINGTYPE = LOGIN
../../plugins/HPMHooking_char@DLLEXT@: HPMHOOKINGTYPE = CHAR
diff --git a/src/plugins/db2sql.c b/src/plugins/db2sql.c
index 6ca52a593..8d83c25e2 100644
--- a/src/plugins/db2sql.c
+++ b/src/plugins/db2sql.c
@@ -65,6 +65,8 @@ struct {
bool itemdb2sql_torun = false;
/// Whether the mob_db converter will automatically run.
bool mobdb2sql_torun = false;
+/// mysql handle for escape strings
+static struct Sql *sql_handle = NULL;
/// Backup of the original item_db parser function pointer.
int (*itemdb_readdb_libconfig_sub) (struct config_setting_t *it, int n, const char *source);
@@ -249,11 +251,11 @@ int itemdb2sql_sub(struct config_setting_t *entry, int n, const char *source)
StrBuf->Printf(&buf, "'%u',", (uint32)it->nameid);
// name_english
- SQL->EscapeString(NULL, e_name, it->name);
+ SQL->EscapeString(sql_handle, e_name, it->name);
StrBuf->Printf(&buf, "'%s',", e_name);
// name_japanese
- SQL->EscapeString(NULL, e_name, it->jname);
+ SQL->EscapeString(sql_handle, e_name, it->jname);
StrBuf->Printf(&buf, "'%s',", e_name);
// type
@@ -397,7 +399,7 @@ int itemdb2sql_sub(struct config_setting_t *entry, int n, const char *source)
tosql.buf[0].len = tosql.buf[0].len + strlen(str) + 1000;
RECREATE(tosql.buf[0].p,char,tosql.buf[0].len);
}
- SQL->EscapeString(NULL, tosql.buf[0].p, str);
+ SQL->EscapeString(sql_handle, tosql.buf[0].p, str);
StrBuf->Printf(&buf, "'%s',", tosql.buf[0].p);
} else {
StrBuf->AppendStr(&buf, "'',");
@@ -411,7 +413,7 @@ int itemdb2sql_sub(struct config_setting_t *entry, int n, const char *source)
tosql.buf[1].len = tosql.buf[1].len + strlen(str) + 1000;
RECREATE(tosql.buf[1].p,char,tosql.buf[1].len);
}
- SQL->EscapeString(NULL, tosql.buf[1].p, str);
+ SQL->EscapeString(sql_handle, tosql.buf[1].p, str);
StrBuf->Printf(&buf, "'%s',", tosql.buf[1].p);
} else {
StrBuf->AppendStr(&buf, "'',");
@@ -425,7 +427,7 @@ int itemdb2sql_sub(struct config_setting_t *entry, int n, const char *source)
tosql.buf[2].len = tosql.buf[2].len + strlen(str) + 1000;
RECREATE(tosql.buf[2].p,char,tosql.buf[2].len);
}
- SQL->EscapeString(NULL, tosql.buf[2].p, str);
+ SQL->EscapeString(sql_handle, tosql.buf[2].p, str);
StrBuf->Printf(&buf, "'%s'", tosql.buf[2].p);
} else {
StrBuf->AppendStr(&buf, "''");
@@ -563,15 +565,15 @@ int mobdb2sql_sub(struct config_setting_t *mobt, int n, const char *source)
StrBuf->Printf(&buf, "%d,", md->mob_id);
// Sprite
- SQL->EscapeString(NULL, e_name, md->sprite);
+ SQL->EscapeString(sql_handle, e_name, md->sprite);
StrBuf->Printf(&buf, "'%s',", e_name);
// kName
- SQL->EscapeString(NULL, e_name, md->name);
+ SQL->EscapeString(sql_handle, e_name, md->name);
StrBuf->Printf(&buf, "'%s',", e_name);
// iName
- SQL->EscapeString(NULL, e_name, md->jname);
+ SQL->EscapeString(sql_handle, e_name, md->jname);
StrBuf->Printf(&buf, "'%s',", e_name);
// LV
@@ -967,7 +969,7 @@ bool mobskilldb2sql_sub(struct config_setting_t *it, int n, int mob_id)
StrBuf->Printf(&buf, "%d,", mob_id);
// Info
- SQL->EscapeString(NULL, e_name, md->name);
+ SQL->EscapeString(sql_handle, e_name, md->name);
StrBuf->Printf(&buf, "'%s@%s',", e_name, name);
if (mob->lookup_const(it, "SkillState", &i32) && (i32 < MSS_ANY || i32 > MSS_ANYTARGET)) {
@@ -1215,8 +1217,15 @@ HPExport void plugin_init(void)
HPExport void server_online(void)
{
+ sql_handle = SQL->Malloc();
if (itemdb2sql_torun)
do_itemdb2sql();
if (mobdb2sql_torun)
do_mobdb2sql();
}
+
+HPExport void plugin_final (void)
+{
+ SQL->Free(sql_handle);
+ sql_handle = NULL;
+}
diff --git a/src/plugins/mapcache.c b/src/plugins/mapcache.c
index 3dc6e3b34..2b8e4c6f8 100644
--- a/src/plugins/mapcache.c
+++ b/src/plugins/mapcache.c
@@ -402,7 +402,6 @@ bool fix_md5_truncation_sub(FILE *fp, const char *map_name)
fseek(fp, 0, SEEK_SET);
fwrite(&mheader, sizeof(mheader), 1, fp);
- fclose(fp);
return true;
}
diff --git a/src/test/Makefile.in b/src/test/Makefile.in
index 8399100f1..91263c939 100644
--- a/src/test/Makefile.in
+++ b/src/test/Makefile.in
@@ -36,6 +36,19 @@ LIBCONFIG_OBJ = $(addprefix $(LIBCONFIG_D)/, libconfig.o grammar.o scanctx.o \
LIBCONFIG_H = $(addprefix $(LIBCONFIG_D)/, libconfig.h grammar.h parsectx.h \
scanctx.h scanner.h strbuf.h wincompat.h)
+ifeq (@USE_LIBBACKTRACE@,yes)
+ LIBBACKTRACE_D = $(THIRDPARTY_D)/libbacktrace
+ LIBBACKTRACE_OBJ = $(addprefix $(LIBBACKTRACE_D)/, atomic.o backtrace.o \
+ dwarf.o @LIBBACKTRACE_FORMAT_FILE@ fileline.o mmapio.o mmap.o posix.o print.o \
+ simple.o sort.o state.o)
+ LIBBACKTRACE_H = $(addprefix $(LIBBACKTRACE_D)/, backtrace.h \
+ backtrace-supported.h config.h filenames.h internal.h)
+else
+ LIBBACKTRACE_D =
+ LIBBACKTRACE_OBJ =
+ LIBBACKTRACE_H =
+endif
+
MT19937AR_D = $(THIRDPARTY_D)/mt19937ar
MT19937AR_OBJ = $(MT19937AR_D)/mt19937ar.o
MT19937AR_H = $(MT19937AR_D)/mt19937ar.h
@@ -43,7 +56,7 @@ MT19937AR_H = $(MT19937AR_D)/mt19937ar.h
TEST_C = test_libconfig.c test_spinlock.c
TEST_OBJ = $(addprefix obj/, $(patsubst %c,%o,%(TEST_C)))
TEST_H =
-TEST_DEPENDS = $(COMMON_D)/obj_sql/common_sql.a $(COMMON_D)/obj_all/common.a $(MT19937AR_OBJ) $(LIBCONFIG_OBJ) $(SYSINFO_INC)
+TEST_DEPENDS = $(COMMON_D)/obj_sql/common_sql.a $(COMMON_D)/obj_all/common.a $(MT19937AR_OBJ) $(LIBCONFIG_OBJ) $(LIBBACKTRACE_OBJ) $(SYSINFO_INC)
TESTS_ALL = test_libconfig test_spinlock
@@ -70,7 +83,7 @@ clean: buildclean
Makefile: Makefile.in
@$(MAKE) -C ../.. src/test/Makefile
-$(SYSINFO_INC): $(TEST_C) $(TEST_H) $(COMMON_H) $(CONFIG_H) $(MT19937AR_H) $(LIBCONFIG_H)
+$(SYSINFO_INC): $(TEST_C) $(TEST_H) $(COMMON_H) $(CONFIG_H) $(MT19937AR_H) $(LIBCONFIG_H) $(LIBBACKTRACE_H)
@echo " MAKE $@"
@$(MAKE) -C ../.. sysinfo
@@ -88,11 +101,11 @@ $(TESTS_ALL): test_%: ../../test_%@EXEEXT@
../../test_%@EXEEXT@: obj/test_%.o $(TEST_DEPENDS) Makefile
@echo " LD $(notdir $@)"
@$(CC) @STATIC@ @LDFLAGS@ -o $@ $< $(COMMON_D)/obj_all/common.a $(COMMON_D)/obj_sql/common_sql.a \
- $(MT19937AR_OBJ) $(LIBCONFIG_OBJ) @LIBS@ @MYSQL_LIBS@
+ $(MT19937AR_OBJ) $(LIBCONFIG_OBJ) $(LIBBACKTRACE_OBJ) @LIBS@ @MYSQL_LIBS@
# object files
-obj/%.o: %.c $(TEST_H) $(COMMON_H) $(CONFIG_H) $(MT19937AR_H) $(LIBCONFIG_H) | obj
+obj/%.o: %.c $(TEST_H) $(COMMON_H) $(CONFIG_H) $(MT19937AR_H) $(LIBCONFIG_H) $(LIBBACKTRACE_H) | obj
@echo " CC $<"
@$(CC) @CFLAGS@ @DEFS@ $(COMMON_INCLUDE) $(THIRDPARTY_INCLUDE) @MYSQL_CFLAGS@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $<
@@ -112,3 +125,7 @@ $(MT19937AR_OBJ):
$(LIBCONFIG_OBJ):
@echo " MAKE $@"
@$(MAKE) -C $(LIBCONFIG_D)
+
+$(LIBBACKTRACE_OBJ):
+ @echo " MAKE $@"
+ @$(MAKE) -C $(LIBBACKTRACE_D)