summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.travis.yml68
-rw-r--r--CHANGELOG.md42
-rw-r--r--conf/common/inter-server.conf1
-rw-r--r--conf/map/battle/skill.conf5
-rwxr-xr-xconfigure42
-rw-r--r--configure.ac22
-rw-r--r--db/constants.conf6
-rw-r--r--doc/constants.md17
-rw-r--r--doc/item_bonus.md6
-rw-r--r--doc/sample/npc_trader_sample.txt8
-rw-r--r--doc/script_commands.txt37
-rw-r--r--npc/custom/bartershop.txt21
-rw-r--r--npc/custom/events/disguise.txt10
-rw-r--r--npc/re/jobs/3-2/sura.txt6
-rw-r--r--npc/scripts_custom.conf1
-rw-r--r--sql-files/item_db.sql2
-rw-r--r--sql-files/item_db2.sql2
-rw-r--r--sql-files/item_db_re.sql2
-rw-r--r--sql-files/main.sql10
-rw-r--r--sql-files/mob_db.sql2
-rw-r--r--sql-files/mob_db2.sql2
-rw-r--r--sql-files/mob_db_re.sql2
-rw-r--r--sql-files/mob_skill_db.sql2
-rw-r--r--sql-files/mob_skill_db2.sql2
-rw-r--r--sql-files/mob_skill_db_re.sql2
-rw-r--r--sql-files/upgrades/2018-12-29--07-51.sql29
-rw-r--r--sql-files/upgrades/index.txt1
-rw-r--r--src/char/char.c68
-rw-r--r--src/char/char.h3
-rw-r--r--src/char/int_guild.c4
-rw-r--r--src/char/int_guild.h2
-rw-r--r--src/char/int_pet.c2
-rw-r--r--src/char/int_pet.h2
-rw-r--r--src/char/int_rodex.c4
-rw-r--r--src/char/int_rodex.h2
-rw-r--r--src/char/inter.c4
-rw-r--r--src/char/mapif.c50
-rw-r--r--src/char/mapif.h4
-rw-r--r--src/common/HPMDataCheck.h4
-rw-r--r--src/common/HPMSymbols.inc.h2
-rw-r--r--src/common/mmo.h20
-rw-r--r--src/common/packets/packets2003_len_main.h4
-rw-r--r--src/common/packets/packets2003_len_sak.h4
-rw-r--r--src/common/packets/packets2004_len_ad.h4
-rw-r--r--src/common/packets/packets2004_len_main.h4
-rw-r--r--src/common/packets/packets2004_len_sak.h4
-rw-r--r--src/common/packets/packets2005_len_ad.h4
-rw-r--r--src/common/packets/packets2005_len_main.h4
-rw-r--r--src/common/packets/packets2005_len_sak.h4
-rw-r--r--src/common/packets/packets2006_len_ad.h4
-rw-r--r--src/common/packets/packets2006_len_main.h4
-rw-r--r--src/common/packets/packets2006_len_sak.h4
-rw-r--r--src/common/packets/packets2007_len_ad.h4
-rw-r--r--src/common/packets/packets2007_len_main.h4
-rw-r--r--src/common/packets/packets2007_len_sak.h4
-rw-r--r--src/common/packets/packets2008_len_ad.h4
-rw-r--r--src/common/packets/packets2008_len_main.h4
-rw-r--r--src/common/packets/packets2008_len_re.h4
-rw-r--r--src/common/packets/packets2008_len_sak.h4
-rw-r--r--src/common/packets/packets2009_len_main.h4
-rw-r--r--src/common/packets/packets2009_len_re.h4
-rw-r--r--src/common/packets/packets2009_len_sak.h4
-rw-r--r--src/common/packets/packets2010_len_main.h4
-rw-r--r--src/common/packets/packets2010_len_re.h4
-rw-r--r--src/common/packets/packets2011_len_main.h4
-rw-r--r--src/common/packets/packets2011_len_re.h4
-rw-r--r--src/common/packets/packets2012_len_main.h4
-rw-r--r--src/common/packets/packets2012_len_re.h4
-rw-r--r--src/common/packets/packets2013_len_main.h4
-rw-r--r--src/common/packets/packets2013_len_re.h4
-rw-r--r--src/common/packets/packets2014_len_main.h4
-rw-r--r--src/common/packets/packets2014_len_re.h4
-rw-r--r--src/common/packets/packets2015_len_main.h4
-rw-r--r--src/common/packets/packets2015_len_re.h4
-rw-r--r--src/common/packets/packets2016_len_main.h4
-rw-r--r--src/common/packets/packets2016_len_re.h4
-rw-r--r--src/common/packets/packets2017_len_main.h4
-rw-r--r--src/common/packets/packets2017_len_re.h4
-rw-r--r--src/common/packets/packets2017_len_zero.h4
-rw-r--r--src/common/packets/packets2018_len_main.h22
-rw-r--r--src/common/packets/packets2018_len_re.h22
-rw-r--r--src/common/packets/packets2018_len_zero.h4
-rw-r--r--src/common/packets/packets2019_len_main.h4381
-rw-r--r--src/common/packets/packets2019_len_re.h4387
-rw-r--r--src/common/packets/packets2019_len_zero.h4386
-rw-r--r--src/common/packets/packets_len_ad.h4
-rw-r--r--src/common/packets/packets_len_main.h8
-rw-r--r--src/common/packets/packets_len_re.h8
-rw-r--r--src/common/packets/packets_len_sak.h4
-rw-r--r--src/common/packets/packets_len_zero.h8
-rw-r--r--src/login/login.c15
-rw-r--r--src/map/atcommand.c2
-rw-r--r--src/map/battle.c5
-rw-r--r--src/map/battle.h2
-rw-r--r--src/map/clif.c145
-rw-r--r--src/map/clif.h15
-rw-r--r--src/map/guild.c2
-rw-r--r--src/map/guild.h2
-rw-r--r--src/map/homunculus.c2
-rw-r--r--src/map/homunculus.h2
-rw-r--r--src/map/intif.c50
-rw-r--r--src/map/intif.h4
-rw-r--r--src/map/itemdb.c32
-rw-r--r--src/map/itemdb.h1
-rw-r--r--src/map/map.c2
-rw-r--r--src/map/map.h5
-rw-r--r--src/map/messages_ad.h3
-rw-r--r--src/map/messages_main.h24
-rw-r--r--src/map/messages_re.h24
-rw-r--r--src/map/messages_sak.h3
-rw-r--r--src/map/messages_zero.h32
-rw-r--r--src/map/mob.h2
-rw-r--r--src/map/npc.c275
-rw-r--r--src/map/npc.h29
-rw-r--r--src/map/packets.h9
-rw-r--r--src/map/packets_keys_main.h13
-rw-r--r--src/map/packets_keys_zero.h13
-rw-r--r--src/map/packets_shuffle_main.h13
-rw-r--r--src/map/packets_shuffle_re.h13
-rw-r--r--src/map/packets_shuffle_zero.h13
-rw-r--r--src/map/packets_struct.h111
-rw-r--r--src/map/pc.c6
-rw-r--r--src/map/pc.h108
-rw-r--r--src/map/pet.c6
-rw-r--r--src/map/pet.h4
-rw-r--r--src/map/rodex.c2
-rw-r--r--src/map/rodex.h2
-rw-r--r--src/map/script.c227
-rw-r--r--src/map/skill.c15
-rw-r--r--src/map/status.c3
-rw-r--r--src/plugins/HPMHooking/HPMHooking.Defs.inc104
-rw-r--r--src/plugins/HPMHooking/HPMHooking_char.HPMHooksCore.inc6
-rw-r--r--src/plugins/HPMHooking/HPMHooking_char.HookingPoints.inc3
-rw-r--r--src/plugins/HPMHooking/HPMHooking_char.Hooks.inc64
-rw-r--r--src/plugins/HPMHooking/HPMHooking_char.sources.inc2
-rw-r--r--src/plugins/HPMHooking/HPMHooking_login.HPMHooksCore.inc2
-rw-r--r--src/plugins/HPMHooking/HPMHooking_login.HookingPoints.inc2
-rw-r--r--src/plugins/HPMHooking/HPMHooking_login.Hooks.inc2
-rw-r--r--src/plugins/HPMHooking/HPMHooking_login.sources.inc2
-rw-r--r--src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc42
-rw-r--r--src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc12
-rw-r--r--src/plugins/HPMHooking/HPMHooking_map.Hooks.inc354
-rw-r--r--src/plugins/HPMHooking/HPMHooking_map.sources.inc2
-rwxr-xr-xtools/ci/travis.sh8
-rw-r--r--vcproj-15/char-server.vcxproj2
-rw-r--r--vcproj-15/login-server.vcxproj2
-rw-r--r--vcproj-15/map-server.vcxproj2
-rw-r--r--vcproj-15/plugin-HPMHooking_char.vcxproj2
-rw-r--r--vcproj-15/plugin-HPMHooking_login.vcxproj2
-rw-r--r--vcproj-15/plugin-HPMHooking_map.vcxproj2
-rw-r--r--vcproj-15/plugin-sample.vcxproj2
151 files changed, 15165 insertions, 597 deletions
diff --git a/.travis.yml b/.travis.yml
index c20c0196e..b29668da3 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -11,6 +11,7 @@ install:
before_script:
- uname -a
+ - ulimit -c unlimited -S
- ./tools/ci/travis.sh createdb ragnarok root
- ./tools/ci/travis.sh importdb ragnarok root
- ./tools/ci/travis.sh adduser ragnarok travis travis root
@@ -38,25 +39,27 @@ matrix:
- compiler: false
include:
- compiler: gcc
- env: LDFLAGS="-fuse-ld=gold" CONFIGURE_FLAGS="--enable-debug CC=gcc-6 --disable-manager --enable-Werror --enable-packetver=20181212 --enable-packetver-re --enable-buildbot" HPM="1"
+ env: LDFLAGS="-fuse-ld=gold" CONFIGURE_FLAGS="--enable-debug CC=gcc-6 --disable-manager --enable-Werror --enable-packetver=20190123 --enable-packetver-re --enable-buildbot" HPM="1"
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
+ - gdb
- gcc-6
- doxygen
- libxml-simple-perl
- libxml-sax-perl
- libxml-parser-perl
- compiler: clang
- env: CONFIGURE_FLAGS="--enable-debug CC=clang-5.0 --enable-Werror --enable-packetver=20181212 --enable-packetver-re --enable-buildbot"
+ env: CONFIGURE_FLAGS="--enable-debug CC=clang-5.0 --enable-Werror --enable-packetver=20190123 --enable-packetver-re --enable-buildbot"
addons:
apt:
sources:
- llvm-toolchain-trusty-5.0
- ubuntu-toolchain-r-test
packages:
+ - gdb
- clang-5.0
- compiler: clang
env: CONFIGURE_FLAGS="--enable-debug CC=clang-5.0 --disable-renewal --enable-Werror --enable-buildbot"
@@ -66,15 +69,27 @@ matrix:
- llvm-toolchain-trusty-5.0
- ubuntu-toolchain-r-test
packages:
+ - gdb
- clang-5.0
- compiler: clang
- env: CONFIGURE_FLAGS="--enable-debug CC=clang-4.0 --enable-Werror --enable-packetver=20181212 --enable-packetver-re --enable-buildbot"
+ env: CONFIGURE_FLAGS="--enable-debug CC=clang-4.0 --enable-Werror --enable-packetver=20190123 --enable-packetver-re --enable-buildbot"
addons:
apt:
sources:
- llvm-toolchain-trusty-4.0
- ubuntu-toolchain-r-test
packages:
+ - gdb
+ - clang-4.0
+ - compiler: clang
+ env: CONFIGURE_FLAGS="--enable-debug CC=clang-4.0 --enable-Werror --enable-packetver=20130724 --enable-packetver-re --enable-buildbot"
+ addons:
+ apt:
+ sources:
+ - llvm-toolchain-trusty-4.0
+ - ubuntu-toolchain-r-test
+ packages:
+ - gdb
- clang-4.0
- compiler: clang
env: CONFIGURE_FLAGS="--enable-debug CC=clang-4.0 --disable-renewal --enable-Werror --enable-buildbot"
@@ -84,22 +99,24 @@ matrix:
- llvm-toolchain-trusty-4.0
- ubuntu-toolchain-r-test
packages:
+ - gdb
- clang-4.0
- compiler: clang
env: CONFIGURE_FLAGS="--enable-debug --enable-Werror --enable-buildbot"
- compiler: clang
env: CONFIGURE_FLAGS="--enable-debug --disable-renewal --enable-Werror --enable-buildbot"
- compiler: gcc
- env: CONFIGURE_FLAGS="--enable-debug --enable-Werror --enable-packetver=20181212 --enable-packetver-re --enable-buildbot"
+ env: CONFIGURE_FLAGS="--enable-debug --enable-Werror --enable-packetver=20190123 --enable-packetver-re --enable-buildbot"
- compiler: gcc
env: CONFIGURE_FLAGS="--enable-debug --disable-renewal --enable-Werror --enable-buildbot"
- compiler: gcc
- env: LDFLAGS="-fuse-ld=gold" CONFIGURE_FLAGS="--enable-debug --enable-sanitize=full CC=gcc-5 --disable-manager --enable-Werror --enable-packetver=20181212 --enable-packetver-re --enable-buildbot"
+ env: LDFLAGS="-fuse-ld=gold" CONFIGURE_FLAGS="--enable-debug --enable-sanitize=full CC=gcc-5 --disable-manager --enable-Werror --enable-packetver=20190123 --enable-packetver-re --enable-buildbot"
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
+ - gdb
- gcc-5
- compiler: gcc
env: LDFLAGS="-fuse-ld=gold" CONFIGURE_FLAGS="--enable-debug --enable-sanitize=full CC=gcc-5 --disable-manager --disable-renewal --enable-Werror --enable-buildbot"
@@ -108,14 +125,16 @@ matrix:
sources:
- ubuntu-toolchain-r-test
packages:
+ - gdb
- gcc-5
- compiler: gcc
- env: LDFLAGS="-fuse-ld=gold" CONFIGURE_FLAGS="--enable-debug --enable-sanitize=full CC=gcc-6 --disable-manager --enable-Werror --enable-packetver=20181212 --enable-packetver-re --enable-buildbot"
+ env: LDFLAGS="-fuse-ld=gold" CONFIGURE_FLAGS="--enable-debug --enable-sanitize=full CC=gcc-6 --disable-manager --enable-Werror --enable-packetver=20190123 --enable-packetver-re --enable-buildbot"
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
+ - gdb
- gcc-6
- compiler: gcc
env: LDFLAGS="-fuse-ld=gold" CONFIGURE_FLAGS="--enable-debug --enable-sanitize=full CC=gcc-6 --disable-manager --disable-renewal --enable-Werror --enable-buildbot"
@@ -124,7 +143,44 @@ matrix:
sources:
- ubuntu-toolchain-r-test
packages:
+ - gdb
- gcc-6
+ - compiler: gcc
+ env: LDFLAGS="-fuse-ld=gold" CONFIGURE_FLAGS="--enable-debug CC=gcc-7 --disable-manager --enable-Werror --enable-packetver=20190123 --enable-packetver-re --enable-buildbot"
+ addons:
+ apt:
+ sources:
+ - ubuntu-toolchain-r-test
+ packages:
+ - gdb
+ - gcc-7
+ - compiler: gcc
+ env: LDFLAGS="-fuse-ld=gold" CONFIGURE_FLAGS="--enable-debug --enable-sanitize=full CC=gcc-7 --disable-manager --disable-renewal --enable-Werror --enable-buildbot"
+ addons:
+ apt:
+ sources:
+ - ubuntu-toolchain-r-test
+ packages:
+ - gdb
+ - gcc-7
+ - compiler: gcc
+ env: LDFLAGS="-fuse-ld=gold" CONFIGURE_FLAGS="--enable-debug --enable-sanitize=full CC=gcc-8 --disable-manager --enable-Werror --enable-packetver=20190123 --enable-packetver-re --enable-buildbot"
+ addons:
+ apt:
+ sources:
+ - ubuntu-toolchain-r-test
+ packages:
+ - gdb
+ - gcc-8
+ - compiler: gcc
+ env: LDFLAGS="-fuse-ld=gold" CONFIGURE_FLAGS="--enable-debug --enable-sanitize=full CC=gcc-8 --disable-manager --disable-renewal --enable-Werror --enable-buildbot"
+ addons:
+ apt:
+ sources:
+ - ubuntu-toolchain-r-test
+ packages:
+ - gdb
+ - gcc-8
notifications:
email: false
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1be687911..9fe7a2450 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,9 +9,46 @@ and this project does not adhere to [Semantic Versioning](http://semver.org/spec
If you are reading this in a text editor, simply ignore this section
-->
+## [v2019.02.10+1] `February 10 2019` `PATCH 1`
+
+### Fixed
+
+- Fixed a buffer size issue in inter server packets (#2365, issue #2369)
+
+## [v2019.02.10] `February 10 2019`
+
+### Added
+
+- Added/updated packets, encryption keys and message tables for clients up to 2019-01-09. (#2339)
+- Added support for the barter type shops. See `sellitem()`, `NST_BARTER` and the demo scripts in `doc/sample/npc_trader_sample.txt` and `npc/custom/bartershop.txt`. (part of #2339)
+- Added the `countnameditem()` script command. (#2307)
+- Added/updated packets, encryption keys and message tables for clients up to 2019-01-30. (#2353)
+
+### Changed
+
+- Improved the response codes and error messages related to the login/char server authentication. (#2151, issue #737)
+- Changed the character creation to use `FIXED_INVENTORY_SIZE` as default inventory size instead of relying on the SQL table default value. (part of #2353)
+- Changed the type of several variables from `short` to `int`. (#2364)
+
+### Fixed
+
+- Fixed a bug that caused the custom disguise event to run indefinitely. (#2351)
+- Fixed issues (item db loading, item search by name) for item IDs higher than 65535. (#2337)
+- Fixed an issue while sending the last page of `HC_ACK_CHARINFO_PER_PAGE`. (part of #2339)
+- Fixed the minimum duration of Voice of Siren. (#1631)
+- Fixed the Sura Job Change Quest getting stuck after the first attempt. (#1656, issue #1655)
+- Added support for recent MySQL versions that don't define the `my_bool` type. (#2365, issue #2363)
+
+## [v2018.12.16+1] `December 16 2018` `PATCH 1`
+
+### Fixed
+
+- Added a missing check in `run_script_main()`. (#2362)
+
## [v2018.12.16] `December 16 2018`
### Added
+
- Added/updated packets, encryption keys and message tables for clients up to 2018-12-12. (#2324)
- Added support for the `AC_LOGIN_OTP` packets. (part of #2324)
- Added script command `enchantitem()` and related packet `ZC_ENCHANT_EQUIPMENT`. (part of #2324)
@@ -41,8 +78,6 @@ If you are reading this in a text editor, simply ignore this section
- Fixed a 'Gungslinger' typo in `item_db2`. (#2335)
- Fixed delay-consumed items missing consumption after using Abracadabra/Improvised Song (#2298, issue #1169)
-### Deprecated
-
### Removed
- Removed unnecessary typedef from `clr_type`. The type is now only available as `enum clr_type`. (part of #2324)
@@ -561,6 +596,9 @@ If you are reading this in a text editor, simply ignore this section
- New versioning scheme and project changelogs/release notes (#1853)
[Unreleased]: https://github.com/HerculesWS/Hercules/compare/stable...master
+[v2019.02.10+1]: https://github.com/HerculesWS/Hercules/compare/v2019.02.10...v2019.10.10+1
+[v2019.02.10]: https://github.com/HerculesWS/Hercules/compare/v2018.12.16+1...v2019.02.10
+[v2018.12.16+1]: https://github.com/HerculesWS/Hercules/compare/v2018.12.16...v2018.12.16+1
[v2018.12.16]: https://github.com/HerculesWS/Hercules/compare/v2018.11.18+1...v2018.12.16
[v2018.11.18+1]: https://github.com/HerculesWS/Hercules/compare/v2018.11.18...v2018.11.18+1
[v2018.11.18]: https://github.com/HerculesWS/Hercules/compare/v2018.10.21...v2018.11.18
diff --git a/conf/common/inter-server.conf b/conf/common/inter-server.conf
index 1e738c587..cbeb6617d 100644
--- a/conf/common/inter-server.conf
+++ b/conf/common/inter-server.conf
@@ -117,6 +117,7 @@ inter_configuration: {
autotrade_merchants_db: "autotrade_merchants"
autotrade_data_db: "autotrade_data"
npc_market_data_db: "npc_market_data"
+ npc_barter_data_db: "npc_barter_data"
}
}
diff --git a/conf/map/battle/skill.conf b/conf/map/battle/skill.conf
index 64bba68b5..da8d1906d 100644
--- a/conf/map/battle/skill.conf
+++ b/conf/map/battle/skill.conf
@@ -330,3 +330,8 @@ bowling_bash_area: 0
// punch a hole into SG it will for example create a "suck in" effect.
// If you disable this setting, the knockback direction will be completely random (eAthena style).
stormgust_knockback: true
+
+// Magic Rod's animation behavior (Note 1)
+// 0 : (official) Magic Rod's animation occurs every time it is used.
+// 1 : Magic Rod's animation would not occur unless a spell was absorbed. (old behavior)
+magicrod_type: 0
diff --git a/configure b/configure
index 41b308828..4ab9057e8 100755
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
#! /bin/sh
-# From configure.ac e207bf99b.
+# From configure.ac 5b2340b4d.
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69.
#
@@ -9452,6 +9452,46 @@ else
fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether my_bool is supported (MySQL)" >&5
+$as_echo_n "checking whether my_bool is supported (MySQL)... " >&6; }
+if test "$cross_compiling" = yes; then :
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run test program while cross compiling
+See \`config.log' for more details" "$LINENO" 5; }
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ #ifdef WIN32
+ #include "common/winapi.h" // Needed before mysql.h
+ #endif
+ #include <mysql.h>
+ int main(int argc, char **argv){
+ my_bool val = (my_bool)0;
+ return (int)val;
+ }
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+else
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no (converting my_bool to bool)" >&5
+$as_echo "no (converting my_bool to bool)" >&6; }
+ MYSQL_CFLAGS="$MYSQL_CFLAGS -Dmy_bool=bool"
+
+
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
CPPFLAGS="$MYSQL_OLD_CPPFLAGS"
LIBS="$MYSQL_OLD_LIBS"
diff --git a/configure.ac b/configure.ac
index 9e88b618b..ec9e35cfe 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1597,6 +1597,28 @@ MYSQL_OLD_LIBS="$LIBS" ; LIBS="$LIBS $MYSQL_LIBS"
MYSQL_OLD_CPPFLAGS="$CPPFLAGS" ; CPPFLAGS="$CPPFLAGS $MYSQL_CFLAGS"
AC_CHECK_FUNC([mysql_init], [HAVE_MYSQL="yes"])
AC_CHECK_HEADER([mysql.h], [], [HAVE_MYSQL=""])
+
+AC_MSG_CHECKING([whether my_bool is supported (MySQL)])
+AC_RUN_IFELSE(
+ [AC_LANG_SOURCE([
+ #ifdef WIN32
+ #include "common/winapi.h" // Needed before mysql.h
+ #endif
+ #include <mysql.h>
+ int main(int argc, char **argv){
+ my_bool val = (my_bool)0;
+ return (int)val;
+ }
+ ])],
+ [
+ AC_MSG_RESULT([yes])
+ ],
+ [
+ AC_MSG_RESULT([no (converting my_bool to bool)])
+ MYSQL_CFLAGS="$MYSQL_CFLAGS -Dmy_bool=bool"
+ ]
+)
+
CPPFLAGS="$MYSQL_OLD_CPPFLAGS"
LIBS="$MYSQL_OLD_LIBS"
diff --git a/db/constants.conf b/db/constants.conf
index 502091a0f..598bc89c4 100644
--- a/db/constants.conf
+++ b/db/constants.conf
@@ -3742,12 +3742,6 @@ constants_db: {
IOT_PARTY: 2
IOT_GUILD: 3
- comment__: "tradertype"
- NST_ZENY: 0
- NST_CASH: 1
- NST_MARKET: 2
- NST_CUSTOM: 3
-
comment__: "strcharinfo"
PC_NAME: 0
PC_PARTY: 1
diff --git a/doc/constants.md b/doc/constants.md
index a67e476d7..69bb51ea4 100644
--- a/doc/constants.md
+++ b/doc/constants.md
@@ -3650,13 +3650,6 @@
- `IOT_PARTY`: 2
- `IOT_GUILD`: 3
-### tradertype
-
-- `NST_ZENY`: 0
-- `NST_CASH`: 1
-- `NST_MARKET`: 2
-- `NST_CUSTOM`: 3
-
### strcharinfo
- `PC_NAME`: 0
@@ -3998,6 +3991,8 @@
- `MAX_REFINE`: 20
- `MAX_MENU_OPTIONS`: 255
- `MAX_MENU_LENGTH`: 2048
+- `MOB_CLONE_START`: 4001
+- `MOB_CLONE_END`: 5000
### status options
@@ -4414,6 +4409,14 @@
- `EXPAND_INV_RESULT_MISSING_ITEM`: 3
- `EXPAND_INV_RESULT_MAX_SIZE`: 4
+### trader type
+
+- `NST_ZENY`: 0
+- `NST_CASH`: 1
+- `NST_MARKET`: 2
+- `NST_CUSTOM`: 3
+- `NST_BARTER`: 4
+
### Renewal
- `RENEWAL`: 1
diff --git a/doc/item_bonus.md b/doc/item_bonus.md
index b9fc17ee4..7c8547456 100644
--- a/doc/item_bonus.md
+++ b/doc/item_bonus.md
@@ -277,7 +277,7 @@ bonus3 bSubEle,`e`,`n`,`bf`; | +n% Damage reduction against element `e`.
bonus2 bAddDamageClass,`c`,`x`; | +n% extra physical damage against monsters of class `c`
bonus2 bAddMagicDamageClass,`c`,`x`; | +n% extra magical damage against monsters of class `c`
bonus2 bAddDefClass,`c`,`x`; | +n% physical damage reduction against monsters of class `c`
-bonus2 bAddMDefClass,`c`,`x`; | +n% magical damage reduction against monsters of class `c`
+bonus2 bAddMdefClass,`c`,`x`; | +n% magical damage reduction against monsters of class `c`
bonus2 bCriticalAddRace,`r`,`n`; | +`n` Critical Against race `r`
Attack/Def | Description
@@ -292,9 +292,9 @@ bonus4 bSetMDefRace,`r`,`n`,`t`,`y`; | Set MDEF to `y` of an enemy of race `r`
Ignore Def | Description
:-------------------------------- | :-------------------------
bonus bIgnoreDefRace,`r`; | Disregard DEF against enemies of race `r`
-bonus bIgnoreMDefRace,`r`; | Disregard MDEF against enemies of race `r`
+bonus bIgnoreMdefRace,`r`; | Disregard MDEF against enemies of race `r`
bonus bIgnoreDefEle,`e`; | Disregard DEF against enemies of element `e`
-bonus bIgnoreMDefEle,`e`; | Disregard MDEF against enemies of element `e`
+bonus bIgnoreMdefEle,`e`; | Disregard MDEF against enemies of element `e`
bonus2 bIgnoreDefRate,`r`,`n`; | Disregard `n`% of the target's DEF if the target belongs to race `r`
bonus2 bIgnoreMdefRate,`r`,`n`; | Disregard `n`% of the target's MDEF if the target belongs to race `r`
bonus bIgnoreMdefRate,`n`; | Disregard `n`% of the target's MDEF
diff --git a/doc/sample/npc_trader_sample.txt b/doc/sample/npc_trader_sample.txt
index 0d50af8c5..24c53330b 100644
--- a/doc/sample/npc_trader_sample.txt
+++ b/doc/sample/npc_trader_sample.txt
@@ -56,3 +56,11 @@ OnMyResupply:
sellitem Red_Potion,-1,49;
end;
}
+/* demonstrate barter shop */
+prontera,159,284,4 trader Barter Shop#prt 4_M_KID1,{
+OnInit:
+ tradertype(NST_BARTER);
+ sellitem White_Herb, 100, Red_Potion, 2;
+ sellitem Blue_Herb, 200, Orange_Potion, 3;
+ end;
+}
diff --git a/doc/script_commands.txt b/doc/script_commands.txt
index 57d47b1b5..55f5a9fe7 100644
--- a/doc/script_commands.txt
+++ b/doc/script_commands.txt
@@ -323,10 +323,12 @@ The types that a trader object can have are the following:
- NST_MARKET (2) Normal NPC Market Shop (where items have limited availability
and need to be refurbished)
- NST_CUSTOM (3) Custom Shop (any currency, item/var/etca, check sample)
+- NST_BARTER (4) Barter Shop (each item with own item currency)
Unless otherwise specified via *tradertype an trader object will be defined as
NST_ZENY.
Note: NST_MARKET is only available with PACKETVER 20131223 or newer.
+Note: NST_BARTER is only available with PACKETVER 20181226 zero or newer.
See '12 - NPC Trader-Related Commands' and /doc/sample/npc_trader_sample.txt for
more information regarding how to use this NPC type.
@@ -716,6 +718,8 @@ MAX_CHAT_USERS - Maximum Chat users
MAX_REFINE - Maximum Refine level
MAX_MENU_OPTIONS - Maximum NPC menu options
MAX_MENU_LENGTH - Maximum NPC menu string length
+MOB_CLONE_START - Clone ID start from this range
+MOB_CLONE_END - Clone ID end with this range
Send targets and status options are also hard-coded and can be found
in 'doc/constants.md'.
@@ -5342,6 +5346,30 @@ Check getitem2() to understand the arguments of the function.
---------------------------------------
+*countnameditem(<item id>, "<character name>")
+*countnameditem(<item id>, <character ID>)
+*countnameditem("<item name>", "<character name>")
+*countnameditem("<item name>", <character ID>)
+
+This function will return the number of signed items for the specified item ID
+that the invoking character has in their inventory.
+
+ mes("[Item Checker]");
+ if (countnameditem(Apple) > 0) {
+ mes("You have an apple with your name on it!");
+ } else {
+ mes("You do not have an apple with your name on it.");
+ }
+ next();
+ mes("[Item Checker]");
+ mesf("You have %d apples with John's name on it!", countnameditem(Apple, "John"));
+ close();
+
+Like getnameditem(), this function will also accept an 'english name' from the
+database as an argument.
+
+---------------------------------------
+
*groupranditem(<item id>)
Returns the item_id of a random item picked from the item container specified. There
@@ -6306,7 +6334,7 @@ Examples:
setpcblock(PCBLOCK_ATTACK|PCBLOCK_SKILL, true);
// Re-enables attack, skills and item use
- setpcblock(PCBLOCK_ATTACK|PCBLOCK_SKILL|PCBLOCK_ITEM, false);
+ setpcblock(PCBLOCK_ATTACK|PCBLOCK_SKILL|PCBLOCK_USEITEM, false);
// checkpcblock related checks
if ((checkpcblock() & PCBLOCK_IMMUNE) != 0)
@@ -9951,6 +9979,7 @@ when the optional NPC_Name param is used.
---------------------------------------
*sellitem(<Item_ID>{, <price>{, <qty>}})
+*sellitem(<Item_ID>, <qty>, <currency_id>, <currency_amount>)
adds (or modifies) <Item_ID> data to the shop,
when <price> is not provided (or when it is -1) itemdb default is used.
@@ -9959,11 +9988,15 @@ qty is only necessary for NST_MARKET trader types.
when <Item_ID> is already in the shop,
the previous data (price/qty), is overwritten with the new.
+currency_id and currency_amount can be used only with shop type NST_BARTER
+
---------------------------------------
*stopselling(<Item_ID>)
+*stopselling(<Item_ID>{, <currency_id>, <currency_amount>})
attempts to remove <Item_ID> from the current shop list.
+currency_id and currency_amount can be used only with shop type NST_BARTER
---------------------------------------
@@ -10128,7 +10161,7 @@ Applicable Data types (available as constants) -
UDT_LIFETIME: LifeTime (int) - for summons.
UDT_MERC_KILLCOUNT: Kill count for mercenaries (int).
-returns 0 if value could not be retrieved.
+returns -1 if value could not be retrieved.
---------------------------------------
diff --git a/npc/custom/bartershop.txt b/npc/custom/bartershop.txt
new file mode 100644
index 000000000..bcb61795e
--- /dev/null
+++ b/npc/custom/bartershop.txt
@@ -0,0 +1,21 @@
+//===== Hercules Script ======================================
+//= Barter shop demo
+//===== By: ==================================================
+//= 4144
+//===== Current Version: =====================================
+//= 1.0
+//===== Description: =========================================
+//= Barter shop demo in prontera.
+//============================================================
+
+prontera,159,284,4 trader Barter Shop#prt 4_M_KID1,{
+OnInit:
+ tradertype(NST_BARTER);
+ sellitem White_Herb, 100, Red_Potion, 2;
+ sellitem Blue_Herb, 200, Orange_Potion, 3;
+ sellitem Green_Herb, 100, Red_Potion, 4;
+ sellitem White_Herb, 100, Orange_Potion, 1;
+ sellitem Apple, -1, Orange_Potion, 1;
+ sellitem Praetorian_Shield, 100, Berserk_Potion, 10;
+ end;
+}
diff --git a/npc/custom/events/disguise.txt b/npc/custom/events/disguise.txt
index b9071d162..fde5e544a 100644
--- a/npc/custom/events/disguise.txt
+++ b/npc/custom/events/disguise.txt
@@ -8,6 +8,7 @@
//= Note: This script requires PCRE to run properly.
//= 5.0 Last update by GmOcean.
//= 5.1 Cleaned and standardized, mostly. [Euphy]
+//= 5.2 Fix a bug that causes this event run indefinitely [AnnieRuru]
//============================================================
prontera,160,155,4 script Disguise Event 4_M_NFDEADMAN,{
@@ -183,6 +184,15 @@ OnTimer30000:
deletepset 1;
stopnpctimer;
setnpctimer 0;
+ ++.RoundCount;
+ if (.RoundCount >= .Rounds) {
+ setnpcdisplay "Disguise Event", 4_M_NFDEADMAN;
+ .RoundCount = 0;
+ .Change = 0;
+ .EventON = 0;
+ npctalk "Thank you all for playing. That was the last round of the Disguise Event. Come play again later.";
+ end;
+ }
initnpctimer;
end;
OnTimer60000:
diff --git a/npc/re/jobs/3-2/sura.txt b/npc/re/jobs/3-2/sura.txt
index 63e689acc..4e0108fd8 100644
--- a/npc/re/jobs/3-2/sura.txt
+++ b/npc/re/jobs/3-2/sura.txt
@@ -654,14 +654,14 @@ OnTimer305000:
OnTimer315000:
mapannounce "sword_2-1","Come on here.",bc_map;
donpcevent "Buddy#job_shuaneh::OnDisable";
- donpcevent "#Sura_garajjom::OnEnable";
+ // donpcevent "#Sura_garajjom::OnEnable"; // Commented to prevent #Sura_garajjom allowing player to success the test at any case (even when failing it).
end;
OnTimer320000:
mapannounce "sword_2-1","I guess you're not ready to meet the master yet...",bc_map;
mapwarp "sword_2-1","yuno_fild07",255,178;
- donpcevent "#Sura_garajjom::OnDisable";
- donpcevent "Drawing Room::OnEnable";
+ // donpcevent "#Sura_garajjom::OnDisable";
donpcevent "Buddy#Sura_Salon::OnDisable";
+ donpcevent "Drawing Room::OnEnable";
end;
}
diff --git a/npc/scripts_custom.conf b/npc/scripts_custom.conf
index 14384fd17..a5aad9767 100644
--- a/npc/scripts_custom.conf
+++ b/npc/scripts_custom.conf
@@ -50,6 +50,7 @@
//"npc/custom/card_remover.txt",
//"npc/custom/item_signer.txt",
//"npc/custom/woe_controller.txt",
+//"npc/custom/bartershop.txt",
//================= Other Scripts =========================================
// -- MVP Arena
diff --git a/sql-files/item_db.sql b/sql-files/item_db.sql
index 614e00b66..3ebd77ed3 100644
--- a/sql-files/item_db.sql
+++ b/sql-files/item_db.sql
@@ -1,7 +1,7 @@
-- This file is part of Hercules.
-- http://herc.ws - http://github.com/HerculesWS/Hercules
--
--- Copyright (C) 2013-2018 Hercules Dev Team
+-- Copyright (C) 2013-2019 Hercules Dev Team
--
-- Hercules is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
diff --git a/sql-files/item_db2.sql b/sql-files/item_db2.sql
index 4df23a4d0..3b4f58219 100644
--- a/sql-files/item_db2.sql
+++ b/sql-files/item_db2.sql
@@ -1,7 +1,7 @@
-- This file is part of Hercules.
-- http://herc.ws - http://github.com/HerculesWS/Hercules
--
--- Copyright (C) 2013-2018 Hercules Dev Team
+-- Copyright (C) 2013-2019 Hercules Dev Team
--
-- Hercules is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
diff --git a/sql-files/item_db_re.sql b/sql-files/item_db_re.sql
index c8d12eb0d..c2a017a8d 100644
--- a/sql-files/item_db_re.sql
+++ b/sql-files/item_db_re.sql
@@ -1,7 +1,7 @@
-- This file is part of Hercules.
-- http://herc.ws - http://github.com/HerculesWS/Hercules
--
--- Copyright (C) 2013-2018 Hercules Dev Team
+-- Copyright (C) 2013-2019 Hercules Dev Team
--
-- Hercules is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
diff --git a/sql-files/main.sql b/sql-files/main.sql
index f322d1cda..a08ec60ba 100644
--- a/sql-files/main.sql
+++ b/sql-files/main.sql
@@ -924,6 +924,7 @@ INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1528180320); -- 2018-06-0
INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1532403228); -- 2018-07-24--03-23.sql
INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1535865732); -- 2018-09-01--05-22.sql
INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1544738447); -- 2018-12-14--01-02.sql
+INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1546059075); -- 2018-12-29--07-51.sql
--
-- Table structure for table `storage`
@@ -1012,3 +1013,12 @@ CREATE TABLE IF NOT EXISTS `rodex_mail` (
KEY `send_date` (`send_date`),
KEY `expire_date` (`expire_date`)
) ENGINE=MyISAM;
+
+CREATE TABLE IF NOT EXISTS `npc_barter_data` (
+ `name` VARCHAR(24) NOT NULL DEFAULT '',
+ `itemId` INT(11) UNSIGNED NOT NULL DEFAULT '0',
+ `amount` INT(11) UNSIGNED NOT NULL DEFAULT '0',
+ `priceId` INT(11) UNSIGNED NOT NULL DEFAULT '0',
+ `priceAmount` INT(11) UNSIGNED NOT NULL DEFAULT '0',
+ PRIMARY KEY (`name`, `itemid`, `priceId`, `priceAmount`)
+) ENGINE=MyISAM;
diff --git a/sql-files/mob_db.sql b/sql-files/mob_db.sql
index d62f804a9..349a84272 100644
--- a/sql-files/mob_db.sql
+++ b/sql-files/mob_db.sql
@@ -1,7 +1,7 @@
-- This file is part of Hercules.
-- http://herc.ws - http://github.com/HerculesWS/Hercules
--
--- Copyright (C) 2013-2018 Hercules Dev Team
+-- Copyright (C) 2013-2019 Hercules Dev Team
--
-- Hercules is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
diff --git a/sql-files/mob_db2.sql b/sql-files/mob_db2.sql
index ac3d63985..e602db599 100644
--- a/sql-files/mob_db2.sql
+++ b/sql-files/mob_db2.sql
@@ -1,7 +1,7 @@
-- This file is part of Hercules.
-- http://herc.ws - http://github.com/HerculesWS/Hercules
--
--- Copyright (C) 2013-2018 Hercules Dev Team
+-- Copyright (C) 2013-2019 Hercules Dev Team
--
-- Hercules is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
diff --git a/sql-files/mob_db_re.sql b/sql-files/mob_db_re.sql
index c6ec23d1e..66b161f4c 100644
--- a/sql-files/mob_db_re.sql
+++ b/sql-files/mob_db_re.sql
@@ -1,7 +1,7 @@
-- This file is part of Hercules.
-- http://herc.ws - http://github.com/HerculesWS/Hercules
--
--- Copyright (C) 2013-2018 Hercules Dev Team
+-- Copyright (C) 2013-2019 Hercules Dev Team
--
-- Hercules is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
diff --git a/sql-files/mob_skill_db.sql b/sql-files/mob_skill_db.sql
index fb286310b..c5c51ca77 100644
--- a/sql-files/mob_skill_db.sql
+++ b/sql-files/mob_skill_db.sql
@@ -1,7 +1,7 @@
-- This file is part of Hercules.
-- http://herc.ws - http://github.com/HerculesWS/Hercules
--
--- Copyright (C) 2013-2018 Hercules Dev Team
+-- Copyright (C) 2013-2019 Hercules Dev Team
--
-- Hercules is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
diff --git a/sql-files/mob_skill_db2.sql b/sql-files/mob_skill_db2.sql
index 45a92ebfb..e55be9d6d 100644
--- a/sql-files/mob_skill_db2.sql
+++ b/sql-files/mob_skill_db2.sql
@@ -1,7 +1,7 @@
-- This file is part of Hercules.
-- http://herc.ws - http://github.com/HerculesWS/Hercules
--
--- Copyright (C) 2013-2018 Hercules Dev Team
+-- Copyright (C) 2013-2019 Hercules Dev Team
--
-- Hercules is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
diff --git a/sql-files/mob_skill_db_re.sql b/sql-files/mob_skill_db_re.sql
index 3aea9b650..1eb0fbff7 100644
--- a/sql-files/mob_skill_db_re.sql
+++ b/sql-files/mob_skill_db_re.sql
@@ -1,7 +1,7 @@
-- This file is part of Hercules.
-- http://herc.ws - http://github.com/HerculesWS/Hercules
--
--- Copyright (C) 2013-2018 Hercules Dev Team
+-- Copyright (C) 2013-2019 Hercules Dev Team
--
-- Hercules is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
diff --git a/sql-files/upgrades/2018-12-29--07-51.sql b/sql-files/upgrades/2018-12-29--07-51.sql
new file mode 100644
index 000000000..641179399
--- /dev/null
+++ b/sql-files/upgrades/2018-12-29--07-51.sql
@@ -0,0 +1,29 @@
+#1546059075
+
+-- This file is part of Hercules.
+-- http://herc.ws - http://github.com/HerculesWS/Hercules
+--
+-- Copyright (C) 2013-2015 Hercules Dev Team
+--
+-- Hercules is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+CREATE TABLE IF NOT EXISTS `npc_barter_data` (
+ `name` VARCHAR(24) NOT NULL DEFAULT '',
+ `itemId` INT(11) UNSIGNED NOT NULL DEFAULT '0',
+ `amount` INT(11) UNSIGNED NOT NULL DEFAULT '0',
+ `priceId` INT(11) UNSIGNED NOT NULL DEFAULT '0',
+ `priceAmount` INT(11) UNSIGNED NOT NULL DEFAULT '0',
+ PRIMARY KEY (`name`, `itemid`, `priceId`, `priceAmount`)
+) ENGINE=MyISAM;
+INSERT INTO `sql_updates` (`timestamp`) VALUES (1546059075);
diff --git a/sql-files/upgrades/index.txt b/sql-files/upgrades/index.txt
index ed892df12..3a2fc4c33 100644
--- a/sql-files/upgrades/index.txt
+++ b/sql-files/upgrades/index.txt
@@ -51,3 +51,4 @@
2018-07-24--03-23.sql
2018-09-01--05-22.sql
2018-12-14--01-02.sql
+2018-12-29--07-51.sql
diff --git a/src/char/char.c b/src/char/char.c
index 0546e49df..34a3ea7a8 100644
--- a/src/char/char.c
+++ b/src/char/char.c
@@ -1098,7 +1098,7 @@ static int char_mmo_chars_fromsql(struct char_session_data *sd, uint8 *buf, int
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 0, SQLDT_INT, &p.char_id, sizeof p.char_id, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 1, SQLDT_UCHAR, &p.slot, sizeof p.slot, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 2, SQLDT_STRING, &p.name, sizeof p.name, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 3, SQLDT_INT16, &p.class, sizeof p.class, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 3, SQLDT_INT, &p.class, sizeof p.class, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 4, SQLDT_INT, &p.base_level, sizeof p.base_level, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 5, SQLDT_INT, &p.job_level, sizeof p.job_level, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 6, SQLDT_UINT64, &p.base_exp, sizeof p.base_exp, NULL, NULL)
@@ -1221,7 +1221,7 @@ static int char_mmo_char_fromsql(int char_id, struct mmo_charstatus *p, bool loa
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 1, SQLDT_INT, &p->account_id, sizeof p->account_id, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 2, SQLDT_UCHAR, &p->slot, sizeof p->slot, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 3, SQLDT_STRING, &p->name, sizeof p->name, NULL, NULL)
- || SQL_ERROR == SQL->StmtBindColumn(stmt, 4, SQLDT_INT16, &p->class, sizeof p->class, NULL, NULL)
+ || SQL_ERROR == SQL->StmtBindColumn(stmt, 4, SQLDT_INT, &p->class, sizeof p->class, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 5, SQLDT_INT, &p->base_level, sizeof p->base_level, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 6, SQLDT_INT, &p->job_level, sizeof p->job_level, NULL, NULL)
|| SQL_ERROR == SQL->StmtBindColumn(stmt, 7, SQLDT_UINT64, &p->base_exp, sizeof p->base_exp, NULL, NULL)
@@ -1705,7 +1705,7 @@ static int char_check_char_name(const char *name, const char *esc_name)
* -5: 'Symbols in Character Names are forbidden'
* char_id: Success
**/
-static int char_make_new_char_sql(struct char_session_data *sd, const char *name_, int str, int agi, int vit, int int_, int dex, int luk, int slot, int hair_color, int hair_style, int16 starting_class, uint8 sex)
+static int char_make_new_char_sql(struct char_session_data *sd, const char *name_, int str, int agi, int vit, int int_, int dex, int luk, int slot, int hair_color, int hair_style, int starting_class, uint8 sex)
{
char name[NAME_LENGTH];
char esc_name[NAME_LENGTH*2+1];
@@ -1752,22 +1752,22 @@ static int char_make_new_char_sql(struct char_session_data *sd, const char *name
#if PACKETVER >= 20120307
// Insert the new char entry to the database
if (SQL_ERROR == SQL->Query(inter->sql_handle, "INSERT INTO `%s` (`account_id`, `char_num`, `name`, `class`, `zeny`, `status_point`,`str`, `agi`, `vit`, `int`, `dex`, `luk`, `max_hp`, `hp`,"
- "`max_sp`, `sp`, `hair`, `hair_color`, `last_map`, `last_x`, `last_y`, `save_map`, `save_x`, `save_y`, `sex`) VALUES ("
- "'%d', '%d', '%s', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d','%d', '%d','%d', '%d', '%s', '%d', '%d', '%s', '%d', '%d', '%c')",
+ "`max_sp`, `sp`, `hair`, `hair_color`, `last_map`, `last_x`, `last_y`, `save_map`, `save_x`, `save_y`, `sex`, `inventory_size`) VALUES ("
+ "'%d', '%d', '%s', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d','%d', '%d','%d', '%d', '%s', '%d', '%d', '%s', '%d', '%d', '%c', '%d')",
char_db, sd->account_id , slot, esc_name, starting_class, start_zeny, 48, str, agi, vit, int_, dex, luk,
(40 * (100 + vit)/100) , (40 * (100 + vit)/100 ), (11 * (100 + int_)/100), (11 * (100 + int_)/100), hair_style, hair_color,
- mapindex_id2name(start_point.map), start_point.x, start_point.y, mapindex_id2name(start_point.map), start_point.x, start_point.y, sex)) {
+ mapindex_id2name(start_point.map), start_point.x, start_point.y, mapindex_id2name(start_point.map), start_point.x, start_point.y, sex, FIXED_INVENTORY_SIZE)) {
Sql_ShowDebug(inter->sql_handle);
return -2; //No, stop the procedure!
}
#else
//Insert the new char entry to the database
if( SQL_ERROR == SQL->Query(inter->sql_handle, "INSERT INTO `%s` (`account_id`, `char_num`, `name`, `class`, `zeny`, `str`, `agi`, `vit`, `int`, `dex`, `luk`, `max_hp`, `hp`,"
- "`max_sp`, `sp`, `hair`, `hair_color`, `last_map`, `last_x`, `last_y`, `save_map`, `save_x`, `save_y`) VALUES ("
- "'%d', '%d', '%s', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d','%d', '%d','%d', '%d', '%s', '%d', '%d', '%s', '%d', '%d')",
+ "`max_sp`, `sp`, `hair`, `hair_color`, `last_map`, `last_x`, `last_y`, `save_map`, `save_x`, `save_y`, `inventory_size`) VALUES ("
+ "'%d', '%d', '%s', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d','%d', '%d','%d', '%d', '%s', '%d', '%d', '%s', '%d', '%d', '%d')",
char_db, sd->account_id , slot, esc_name, starting_class, start_zeny, str, agi, vit, int_, dex, luk,
(40 * (100 + vit)/100) , (40 * (100 + vit)/100 ), (11 * (100 + int_)/100), (11 * (100 + int_)/100), hair_style, hair_color,
- mapindex_id2name(start_point.map), start_point.x, start_point.y, mapindex_id2name(start_point.map), start_point.x, start_point.y) )
+ mapindex_id2name(start_point.map), start_point.x, start_point.y, mapindex_id2name(start_point.map), start_point.x, start_point.y, FIXED_INVENTORY_SIZE) )
{
Sql_ShowDebug(inter->sql_handle);
return -2; //No, stop the procedure!
@@ -2139,17 +2139,22 @@ static void char_send_HC_ACK_CHARINFO_PER_PAGE(int fd, struct char_session_data
p->packetId = HEADER_HC_ACK_CHARINFO_PER_PAGE;
p->packetLen = chr->mmo_chars_fromsql(sd, WFIFOP(fd, 4), &count) + sizeof(struct PACKET_HC_ACK_CHARINFO_PER_PAGE);
WFIFOSET(fd, p->packetLen);
- // send empty packet if chars count is 3*N, for trigger final code in client
- if (count % 3 != 0) {
- WFIFOHEAD(fd, sizeof(struct PACKET_HC_ACK_CHARINFO_PER_PAGE));
- p = WFIFOP(fd, 0);
- p->packetId = HEADER_HC_ACK_CHARINFO_PER_PAGE;
- p->packetLen = sizeof(struct PACKET_HC_ACK_CHARINFO_PER_PAGE);
- WFIFOSET(fd, p->packetLen);
+ // send empty packet if chars count is 3, for trigger final code in client
+ if (count == 3) {
+ chr->send_HC_ACK_CHARINFO_PER_PAGE_tail(fd, sd);
}
#endif
}
+static void char_send_HC_ACK_CHARINFO_PER_PAGE_tail(int fd, struct char_session_data *sd)
+{
+ WFIFOHEAD(fd, sizeof(struct PACKET_HC_ACK_CHARINFO_PER_PAGE));
+ struct PACKET_HC_ACK_CHARINFO_PER_PAGE *p = WFIFOP(fd, 0);
+ p->packetId = HEADER_HC_ACK_CHARINFO_PER_PAGE;
+ p->packetLen = sizeof(struct PACKET_HC_ACK_CHARINFO_PER_PAGE);
+ WFIFOSET(fd, p->packetLen);
+}
+
/* Sends character ban list */
/* Made Possible by Yommy~! <3 */
static void char_mmo_char_send_ban_list(int fd, struct char_session_data *sd)
@@ -2381,19 +2386,29 @@ static void char_ping_login_server(int fd)
static int char_parse_fromlogin_connection_state(int fd)
{
- if (RFIFOB(fd,2)) {
- //printf("connect login server error : %d\n", RFIFOB(fd,2));
+ switch (RFIFOB(fd,2)) {
+ case 0:
+ ShowStatus("Connected to login-server (connection #%d).\n", fd);
+ loginif->on_ready();
+ break;
+ case 1: // Invalid username/password
ShowError("Can not connect to login-server.\n");
ShowError("The server communication passwords (default s1/p1) are probably invalid.\n");
ShowError("Also, please make sure your login db has the correct communication username/passwords and the gender of the account is S.\n");
ShowError("The communication passwords are set in /conf/map/map-server.conf and /conf/char/char-server.conf\n");
sockt->eof(fd);
return 1;
- } else {
- ShowStatus("Connected to login-server (connection #%d).\n", fd);
- loginif->on_ready();
+ case 2: // IP not allowed
+ ShowError("Can not connect to login-server.\n");
+ ShowError("Please make sure your IP is allowed in conf/network.conf\n");
+ sockt->eof(fd);
+ return 1;
+ default:
+ ShowError("Invalid response from the login-server. Error code: %d\n", (int)RFIFOB(fd,2));
+ sockt->eof(fd);
+ return 1;
}
- RFIFOSKIP(fd,3);
+ RFIFOSKIP(fd, 3);
return 0;
}
@@ -4444,6 +4459,7 @@ static void char_parse_char_connect(int fd, struct char_session_data *sd, uint32
if( core->runflag != CHARSERVER_ST_RUNNING ) {
chr->auth_error(fd, 0);
+ sockt->eof(fd);
return;
}
@@ -4458,11 +4474,13 @@ static void char_parse_char_connect(int fd, struct char_session_data *sd, uint32
/* restrictions apply */
if( chr->server_type == CST_MAINTENANCE && node->group_id < char_maintenance_min_group_id ) {
chr->auth_error(fd, 0);
+ sockt->eof(fd);
return;
}
/* the client will already deny this request, this check is to avoid someone bypassing. */
if( chr->server_type == CST_PAYING && (time_t)node->expiration_time < time(NULL) ) {
chr->auth_error(fd, 0);
+ sockt->eof(fd);
return;
}
idb_remove(auth_db, account_id);
@@ -4474,6 +4492,7 @@ static void char_parse_char_connect(int fd, struct char_session_data *sd, uint32
loginif->auth(fd, sd, ipl);
} else { // if no login-server, we must refuse connection
chr->auth_error(fd, 0);
+ sockt->eof(fd);
}
}
}
@@ -4694,7 +4713,8 @@ static void char_creation_failed(int fd, int result)
/* Others I found [Ind] */
/* 0x02 = Symbols in Character Names are forbidden */
/* 0x03 = You are not eligible to open the Character Slot. */
- /* 0x0B = This service is only available for premium users. */
+ /* 0x0B = This service is only available for premium users. */
+ /* 0x0C = Character name is invalid. */
switch (result) {
case -1: WFIFOB(fd,2) = 0x00; break; // 'Charname already exists'
case -2: WFIFOB(fd,2) = 0xFF; break; // 'Char creation denied'
@@ -4994,6 +5014,7 @@ static void char_parse_char_login_map_server(int fd, uint32 ipl)
!sockt->allowed_ip_check(ipl))
{
chr->login_map_server_ack(fd, 3); // Failure
+ sockt->eof(fd);
} else {
chr->login_map_server_ack(fd, 0); // Success
@@ -6468,6 +6489,7 @@ void char_defaults(void)
chr->count_users = char_count_users;
chr->mmo_char_tobuf = char_mmo_char_tobuf;
chr->send_HC_ACK_CHARINFO_PER_PAGE = char_send_HC_ACK_CHARINFO_PER_PAGE;
+ chr->send_HC_ACK_CHARINFO_PER_PAGE_tail = char_send_HC_ACK_CHARINFO_PER_PAGE_tail;
chr->mmo_char_send_ban_list = char_mmo_char_send_ban_list;
chr->mmo_char_send_slots_info = char_mmo_char_send_slots_info;
chr->mmo_char_send_characters = char_mmo_char_send_characters;
diff --git a/src/char/char.h b/src/char/char.h
index 914530537..5de3e2a80 100644
--- a/src/char/char.h
+++ b/src/char/char.h
@@ -149,11 +149,12 @@ struct char_interface {
int (*rename_char_sql) (struct char_session_data *sd, int char_id);
bool (*name_exists) (const char *name, const char *esc_name);
int (*check_char_name) (const char *name, const char *esc_name);
- int (*make_new_char_sql) (struct char_session_data *sd, const char *name_, int str, int agi, int vit, int int_, int dex, int luk, int slot, int hair_color, int hair_style, short starting_job, uint8 sex);
+ int (*make_new_char_sql) (struct char_session_data *sd, const char *name_, int str, int agi, int vit, int int_, int dex, int luk, int slot, int hair_color, int hair_style, int starting_job, uint8 sex);
int (*divorce_char_sql) (int partner_id1, int partner_id2);
int (*count_users) (void);
int (*mmo_char_tobuf) (uint8* buffer, struct mmo_charstatus* p);
void (*send_HC_ACK_CHARINFO_PER_PAGE) (int fd, struct char_session_data *sd);
+ void (*send_HC_ACK_CHARINFO_PER_PAGE_tail) (int fd, struct char_session_data *sd);
void (*mmo_char_send_ban_list) (int fd, struct char_session_data *sd);
void (*mmo_char_send_slots_info) (int fd, struct char_session_data* sd);
int (*mmo_char_send_characters) (int fd, struct char_session_data* sd);
diff --git a/src/char/int_guild.c b/src/char/int_guild.c
index 56e1c1ba3..9c0be1629 100644
--- a/src/char/int_guild.c
+++ b/src/char/int_guild.c
@@ -1060,7 +1060,7 @@ static bool inter_guild_leave(int guild_id, int account_id, int char_id, int fla
}
// Change member info
-static bool inter_guild_update_member_info_short(int guild_id, int account_id, int char_id, int online, int lv, int16 class)
+static bool inter_guild_update_member_info_short(int guild_id, int account_id, int char_id, int online, int lv, int class)
{
// Could speed up by manipulating only guild_member
struct guild *g;
@@ -1602,7 +1602,7 @@ static int inter_guild_parse_frommap(int fd)
case 0x3032: mapif->parse_GuildAddMember(fd, RFIFOL(fd,4), RFIFOP(fd,8)); break;
case 0x3033: mapif->parse_GuildMasterChange(fd, RFIFOL(fd,4), RFIFOP(fd,8), RFIFOW(fd,2)-8); break;
case 0x3034: mapif->parse_GuildLeave(fd, RFIFOL(fd,2), RFIFOL(fd,6), RFIFOL(fd,10), RFIFOB(fd,14), RFIFOP(fd,15)); break;
- case 0x3035: mapif->parse_GuildChangeMemberInfoShort(fd,RFIFOL(fd,2),RFIFOL(fd,6),RFIFOL(fd,10),RFIFOB(fd,14),RFIFOW(fd,15),RFIFOW(fd,17)); break;
+ case 0x3035: mapif->parse_GuildChangeMemberInfoShort(fd,RFIFOL(fd,2),RFIFOL(fd,6),RFIFOL(fd,10),RFIFOB(fd,14),RFIFOL(fd,15),RFIFOL(fd,19)); break;
case 0x3036: mapif->parse_BreakGuild(fd,RFIFOL(fd,2)); break;
case 0x3037: mapif->parse_GuildMessage(fd, RFIFOL(fd,4), RFIFOL(fd,8), RFIFOP(fd,12), RFIFOW(fd,2)-12); break;
case 0x3039: mapif->parse_GuildBasicInfoChange(fd, RFIFOL(fd,4), RFIFOW(fd,8), RFIFOP(fd,10), RFIFOW(fd,2)-10); break;
diff --git a/src/char/int_guild.h b/src/char/int_guild.h
index 33873edcd..4ed0f526e 100644
--- a/src/char/int_guild.h
+++ b/src/char/int_guild.h
@@ -72,7 +72,7 @@ struct inter_guild_interface {
struct guild *(*create) (const char *name, const struct guild_member *master);
bool (*add_member) (int guild_id, const struct guild_member *member, int map_fd);
bool (*leave) (int guild_id, int account_id, int char_id, int flag, const char *mes, int map_fd);
- bool (*update_member_info_short) (int guild_id, int account_id, int char_id, int online, int lv, int16 class);
+ bool (*update_member_info_short) (int guild_id, int account_id, int char_id, int online, int lv, int class);
bool (*update_member_info) (int guild_id, int account_id, int char_id, int type, const char *data, int len);
bool (*disband) (int guild_id);
bool (*update_basic_info) (int guild_id, int type, const void *data, int len);
diff --git a/src/char/int_pet.c b/src/char/int_pet.c
index 8f87becff..d31e7545c 100644
--- a/src/char/int_pet.c
+++ b/src/char/int_pet.c
@@ -160,7 +160,7 @@ static int inter_pet_delete(int pet_id)
return 0;
}
//------------------------------------------------------
-static struct s_pet *inter_pet_create(int account_id, int char_id, short pet_class, short pet_lv, int pet_egg_id,
+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)
{
nullpo_ret(pet_name);
diff --git a/src/char/int_pet.h b/src/char/int_pet.h
index 104771735..b5852d441 100644
--- a/src/char/int_pet.h
+++ b/src/char/int_pet.h
@@ -37,7 +37,7 @@ struct inter_pet_interface {
int (*delete_) (int pet_id);
int (*parse_frommap) (int fd);
- struct s_pet *(*create) (int account_id, int char_id, short pet_class, short pet_lv, int pet_egg_id,
+ struct s_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);
struct s_pet *(*load) (int account_id, int char_id, int pet_id);
};
diff --git a/src/char/int_rodex.c b/src/char/int_rodex.c
index 18c277574..5725c3777 100644
--- a/src/char/int_rodex.c
+++ b/src/char/int_rodex.c
@@ -268,7 +268,7 @@ static bool inter_rodex_hasnew(int char_id, int account_id)
}
/// Checks player name and retrieves some data
-static bool inter_rodex_checkname(const char *name, int *target_char_id, short *target_class, int *target_level)
+static bool inter_rodex_checkname(const char *name, int *target_char_id, int *target_class, int *target_level)
{
char esc_name[NAME_LENGTH * 2 + 1];
bool found = false;
@@ -286,7 +286,7 @@ static bool inter_rodex_checkname(const char *name, int *target_char_id, short *
if (SQL_SUCCESS == SQL->NextRow(inter->sql_handle)) {
char *data;
SQL->GetData(inter->sql_handle, 0, &data, NULL); *target_char_id = atoi(data);
- SQL->GetData(inter->sql_handle, 1, &data, NULL); *target_class = (short)atoi(data);
+ SQL->GetData(inter->sql_handle, 1, &data, NULL); *target_class = atoi(data);
SQL->GetData(inter->sql_handle, 2, &data, NULL); *target_level = atoi(data);
found = true;
}
diff --git a/src/char/int_rodex.h b/src/char/int_rodex.h
index 43e2d891c..7fae77d8d 100644
--- a/src/char/int_rodex.h
+++ b/src/char/int_rodex.h
@@ -34,7 +34,7 @@ struct inter_rodex_interface {
int (*parse_frommap) (int fd);
int (*fromsql) (int char_id, int account_id, int8 opentype, int64 mail_id, struct rodex_maillist *mails);
bool (*hasnew) (int char_id, int account_id);
- bool (*checkname) (const char *name, int *target_char_id, short *target_class, int *target_level);
+ bool (*checkname) (const char *name, int *target_char_id, int *target_class, int *target_level);
int64 (*savemessage) (struct rodex_message* msg);
bool (*updatemail) (int64 mail_id, int8 flag);
};
diff --git a/src/char/inter.c b/src/char/inter.c
index 418c9b0a1..1f1750e32 100644
--- a/src/char/inter.c
+++ b/src/char/inter.c
@@ -73,12 +73,12 @@ static int inter_recv_packet_length[] = {
-1,-1, 7,-1, -1,13,36, (2 + 4 + 4 + 4 + NAME_LENGTH), 0, 0, 0, 0, 0, 0, 0, 0, // 3000-
6,-1, 6,-1, 0, 0, 0, 0, 10,-1, 0, 0, 0, 0, 0, 0, // 3010- Account Storage, Achievements [Smokexyz]
-1,10,-1,14, 14,19, 6,-1, 14,14, 0, 0, 0, 0, 0, 0, // 3020- Party
- -1, 6,-1,-1, 55,19, 6,-1, 14,-1,-1,-1, 18,19,186,-1, // 3030-
+ -1, 6,-1,-1, 55,23, 6,-1, 14,-1,-1,-1, 18,19,186,-1, // 3030-
-1, 9, 0, 0, 10,10, 0, 0, 7, 6,10,10, 10,-1, 0, 0, // 3040- Clan System(3044-3045)
-1,-1,10,10, 0,-1,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 3050- Auction System [Zephyrus], Item Bound [Mhalicot]
6,-1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 3060- Quest system [Kevin] [Inkfish]
-1,10, 6,-1, 0, 0, 0, 0, 0, 0, 0, 0, -1,10, 6,-1, // 3070- Mercenary packets [Zephyrus], Elemental packets [pakpil]
- 52,14,-1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 3080-
+ 56,14,-1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 3080-
-1,10,-1, 6, 0, 20,10,11, -1,6 + NAME_LENGTH, 0, 0, 0, 0, 0, 0, // 3090- Homunculus packets [albator], RoDEX packets
};
diff --git a/src/char/mapif.c b/src/char/mapif.c
index dc5735550..fb904a46d 100644
--- a/src/char/mapif.c
+++ b/src/char/mapif.c
@@ -569,7 +569,7 @@ static int mapif_guild_withdraw(int guild_id, int account_id, int char_id, int f
// Send short member's info
static int mapif_guild_memberinfoshort(struct guild *g, int idx)
{
- unsigned char buf[23];
+ unsigned char buf[25];
nullpo_ret(g);
Assert_ret(idx >= 0 && idx < MAX_GUILD);
WBUFW(buf, 0) = 0x3835;
@@ -578,9 +578,9 @@ static int mapif_guild_memberinfoshort(struct guild *g, int idx)
WBUFL(buf, 10) = g->member[idx].char_id;
WBUFB(buf, 14) = (unsigned char)g->member[idx].online;
WBUFW(buf, 15) = g->member[idx].lv;
- WBUFW(buf, 17) = g->member[idx].class;
- WBUFL(buf, 19) = g->member[idx].last_login;
- mapif->sendall(buf, 23);
+ WBUFL(buf, 17) = g->member[idx].class;
+ WBUFL(buf, 21) = g->member[idx].last_login;
+ mapif->sendall(buf, 25);
return 0;
}
@@ -797,7 +797,7 @@ static int mapif_parse_GuildLeave(int fd, int guild_id, int account_id, int char
}
// Change member info
-static int mapif_parse_GuildChangeMemberInfoShort(int fd, int guild_id, int account_id, int char_id, int online, int lv, int16 class)
+static int mapif_parse_GuildChangeMemberInfoShort(int fd, int guild_id, int account_id, int char_id, int online, int lv, int class)
{
inter_guild->update_member_info_short(guild_id, account_id, char_id, online, lv, class);
return 0;
@@ -1423,18 +1423,18 @@ static int mapif_parse_PartyLeaderChange(int fd, int party_id, int account_id, i
static int mapif_pet_created(int fd, int account_id, struct s_pet *p)
{
- WFIFOHEAD(fd, 12);
+ WFIFOHEAD(fd, 14);
WFIFOW(fd, 0) = 0x3880;
WFIFOL(fd, 2) = account_id;
if (p != NULL){
- WFIFOW(fd, 6) = p->class_;
- WFIFOL(fd, 8) = p->pet_id;
+ WFIFOL(fd, 6) = p->class_;
+ WFIFOL(fd, 10) = p->pet_id;
ShowInfo("int_pet: created pet %d - %s\n", p->pet_id, p->name);
} else {
- WFIFOB(fd, 6) = 0;
- WFIFOL(fd, 8) = 0;
+ WFIFOL(fd, 6) = 0;
+ WFIFOL(fd, 10) = 0;
}
- WFIFOSET(fd, 12);
+ WFIFOSET(fd, 14);
return 0;
}
@@ -1521,15 +1521,15 @@ static int mapif_parse_CreatePet(int fd)
account_id = RFIFOL(fd, 2);
pet = inter_pet->create(account_id,
RFIFOL(fd, 6),
- RFIFOW(fd, 10),
- RFIFOW(fd, 12),
+ RFIFOL(fd, 10),
RFIFOL(fd, 14),
RFIFOL(fd, 18),
- RFIFOW(fd, 22),
- RFIFOW(fd, 24),
- RFIFOB(fd, 26),
- RFIFOB(fd, 27),
- RFIFOP(fd, 28));
+ RFIFOL(fd, 22),
+ RFIFOW(fd, 26),
+ RFIFOW(fd, 28),
+ RFIFOB(fd, 30),
+ RFIFOB(fd, 31),
+ RFIFOP(fd, 32));
if (pet != NULL)
mapif->pet_created(fd, account_id, pet);
@@ -1789,7 +1789,7 @@ static void mapif_parse_rodex_checkname(int fd)
int reqchar_id = RFIFOL(fd, 2);
char name[NAME_LENGTH];
int target_char_id, target_level;
- short target_class;
+ int target_class;
safestrncpy(name, RFIFOP(fd, 6), NAME_LENGTH);
@@ -1799,20 +1799,20 @@ static void mapif_parse_rodex_checkname(int fd)
mapif->rodex_checkname(fd, reqchar_id, 0, 0, 0, name);
}
-static void mapif_rodex_checkname(int fd, int reqchar_id, int target_char_id, short target_class, int target_level, char *name)
+static void mapif_rodex_checkname(int fd, int reqchar_id, int target_char_id, int target_class, int target_level, char *name)
{
nullpo_retv(name);
Assert_retv(reqchar_id > 0);
Assert_retv(target_char_id >= 0);
- WFIFOHEAD(fd, 16 + NAME_LENGTH);
+ WFIFOHEAD(fd, 18 + NAME_LENGTH);
WFIFOW(fd, 0) = 0x3898;
WFIFOL(fd, 2) = reqchar_id;
WFIFOL(fd, 6) = target_char_id;
- WFIFOW(fd, 10) = target_class;
- WFIFOL(fd, 12) = target_level;
- safestrncpy(WFIFOP(fd, 16), name, NAME_LENGTH);
- WFIFOSET(fd, 16 + NAME_LENGTH);
+ WFIFOL(fd, 10) = target_class;
+ WFIFOL(fd, 14) = target_level;
+ safestrncpy(WFIFOP(fd, 18), name, NAME_LENGTH);
+ WFIFOSET(fd, 18 + NAME_LENGTH);
}
static int mapif_load_guild_storage(int fd, int account_id, int guild_id, char flag)
diff --git a/src/char/mapif.h b/src/char/mapif.h
index bfdefe4ea..f57748ac6 100644
--- a/src/char/mapif.h
+++ b/src/char/mapif.h
@@ -84,7 +84,7 @@ struct mapif_interface {
int (*parse_GuildInfo) (int fd, int guild_id);
int (*parse_GuildAddMember) (int fd, int guild_id, const struct guild_member *m);
int (*parse_GuildLeave) (int fd, int guild_id, int account_id, int char_id, int flag, const char *mes);
- int (*parse_GuildChangeMemberInfoShort) (int fd, int guild_id, int account_id, int char_id, int online, int lv, int16 class);
+ int (*parse_GuildChangeMemberInfoShort) (int fd, int guild_id, int account_id, int char_id, int online, int lv, int class);
int (*parse_BreakGuild) (int fd, int guild_id);
int (*parse_GuildMessage) (int fd, int guild_id, int account_id, const char *mes, int len);
int (*parse_GuildBasicInfoChange) (int fd, int guild_id, int type, const void *data, int len);
@@ -167,7 +167,7 @@ struct mapif_interface {
void (*parse_rodex_send) (int fd);
void (*rodex_send) (int fd, int sender_id, int receiver_id, int receiver_accountid, bool result);
void (*parse_rodex_checkname) (int fd);
- void (*rodex_checkname) (int fd, int reqchar_id, int target_char_id, short target_class, int target_level, char *name);
+ void (*rodex_checkname) (int fd, int reqchar_id, int target_char_id, int target_class, int target_level, char *name);
int (*load_guild_storage) (int fd, int account_id, int guild_id, char flag);
int (*save_guild_storage_ack) (int fd, int account_id, int guild_id, int fail);
int (*parse_LoadGuildStorage) (int fd);
diff --git a/src/common/HPMDataCheck.h b/src/common/HPMDataCheck.h
index 3c544a955..ecbfc9f2c 100644
--- a/src/common/HPMDataCheck.h
+++ b/src/common/HPMDataCheck.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2014-2018 Hercules Dev Team
+ * Copyright (C) 2014-2019 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -458,6 +458,8 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = {
#endif // MAP_CLAN_H
#ifdef MAP_CLIF_H
{ "attendance_entry", sizeof(struct attendance_entry), SERVER_TYPE_MAP },
+ { "barter_itemlist_entry", sizeof(struct barter_itemlist_entry), SERVER_TYPE_MAP },
+ { "barteritemlist", sizeof(struct barteritemlist), SERVER_TYPE_MAP },
{ "cdelayed_damage", sizeof(struct cdelayed_damage), SERVER_TYPE_MAP },
{ "clif_interface", sizeof(struct clif_interface), SERVER_TYPE_MAP },
{ "hCSData", sizeof(struct hCSData), SERVER_TYPE_MAP },
diff --git a/src/common/HPMSymbols.inc.h b/src/common/HPMSymbols.inc.h
index 146379508..6b02b005a 100644
--- a/src/common/HPMSymbols.inc.h
+++ b/src/common/HPMSymbols.inc.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2018 Hercules Dev Team
+ * Copyright (C) 2013-2019 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/common/mmo.h b/src/common/mmo.h
index 4b8f49fa2..3a0f73520 100644
--- a/src/common/mmo.h
+++ b/src/common/mmo.h
@@ -166,11 +166,11 @@
#define MAX_CARTS (MAX_BASE_CARTS + MAX_CARTDECORATION_CARTS)
#ifndef MAX_INVENTORY
-#if PACKETVER_ZERO_NUM >= 20181212
+#if PACKETVER_MAIN_NUM >= 20181219 || PACKETVER_RE_NUM >= 20181219 || PACKETVER_ZERO_NUM >= 20181212
#define MAX_INVENTORY 200
#else
#define MAX_INVENTORY 100
-#endif // PACKETVER_ZERO_NUM >= 20181212
+#endif // PACKETVER_MAIN_NUM >= 20181219 || PACKETVER_RE_NUM >= 20181219 || PACKETVER_ZERO_NUM >= 20181212
#endif // MAX_INVENTORY
#ifndef FIXED_INVENTORY_SIZE
@@ -590,7 +590,7 @@ struct s_pet {
int account_id;
int char_id;
int pet_id;
- short class_;
+ int class_;
short level;
int egg_id;//pet egg id
int equip;//pet equip name_id
@@ -606,8 +606,8 @@ struct s_homunculus { //[orn]
char name[NAME_LENGTH];
int hom_id;
int char_id;
- short class_;
- short prev_class;
+ int class_;
+ int prev_class;
int hp,max_hp,sp,max_sp;
unsigned int intimacy;
short hunger;
@@ -638,7 +638,7 @@ struct s_homunculus { //[orn]
struct s_mercenary {
int mercenary_id;
int char_id;
- short class_;
+ int class_;
int hp, sp;
unsigned int kill_count;
unsigned int life_time;
@@ -647,7 +647,7 @@ struct s_mercenary {
struct s_elemental {
int elemental_id;
int char_id;
- short class_;
+ int class_;
uint32 mode;
int hp, sp, max_hp, max_sp, matk, atk, atk2;
short hit, flee, amotion, def, mdef;
@@ -690,7 +690,7 @@ struct mmo_charstatus {
int zeny;
int bank_vault;
- int16 class;
+ int class;
int status_point, skill_point;
int hp,max_hp,sp,max_sp;
unsigned int option;
@@ -805,7 +805,7 @@ struct party_member {
int account_id;
int char_id;
char name[NAME_LENGTH];
- int16 class;
+ int class;
unsigned short map;
unsigned short lv;
unsigned leader : 1,
@@ -825,7 +825,7 @@ struct map_session_data;
struct guild_member {
int account_id, char_id;
short hair,hair_color,gender;
- int16 class;
+ int class;
short lv;
uint64 exp;
int exp_payper;
diff --git a/src/common/packets/packets2003_len_main.h b/src/common/packets/packets2003_len_main.h
index b7cc202ab..a4ff38e18 100644
--- a/src/common/packets/packets2003_len_main.h
+++ b/src/common/packets/packets2003_len_main.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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/packets2003_len_sak.h b/src/common/packets/packets2003_len_sak.h
index 90139e98c..9f393b8cf 100644
--- a/src/common/packets/packets2003_len_sak.h
+++ b/src/common/packets/packets2003_len_sak.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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/packets2004_len_ad.h b/src/common/packets/packets2004_len_ad.h
index 40a5e83de..18ab6d9ee 100644
--- a/src/common/packets/packets2004_len_ad.h
+++ b/src/common/packets/packets2004_len_ad.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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/packets2004_len_main.h b/src/common/packets/packets2004_len_main.h
index 27ae05058..3963dd0a2 100644
--- a/src/common/packets/packets2004_len_main.h
+++ b/src/common/packets/packets2004_len_main.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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/packets2004_len_sak.h b/src/common/packets/packets2004_len_sak.h
index cbf87487e..71573c376 100644
--- a/src/common/packets/packets2004_len_sak.h
+++ b/src/common/packets/packets2004_len_sak.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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/packets2005_len_ad.h b/src/common/packets/packets2005_len_ad.h
index e741928ec..fd428cef4 100644
--- a/src/common/packets/packets2005_len_ad.h
+++ b/src/common/packets/packets2005_len_ad.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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/packets2005_len_main.h b/src/common/packets/packets2005_len_main.h
index e7a06e509..bad35d459 100644
--- a/src/common/packets/packets2005_len_main.h
+++ b/src/common/packets/packets2005_len_main.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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/packets2005_len_sak.h b/src/common/packets/packets2005_len_sak.h
index 9e029766b..7684be048 100644
--- a/src/common/packets/packets2005_len_sak.h
+++ b/src/common/packets/packets2005_len_sak.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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/packets2006_len_ad.h b/src/common/packets/packets2006_len_ad.h
index a7997e885..a8eef10d5 100644
--- a/src/common/packets/packets2006_len_ad.h
+++ b/src/common/packets/packets2006_len_ad.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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/packets2006_len_main.h b/src/common/packets/packets2006_len_main.h
index 4185bbe16..1b6debfd0 100644
--- a/src/common/packets/packets2006_len_main.h
+++ b/src/common/packets/packets2006_len_main.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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/packets2006_len_sak.h b/src/common/packets/packets2006_len_sak.h
index c158acf5b..8b48e1d1d 100644
--- a/src/common/packets/packets2006_len_sak.h
+++ b/src/common/packets/packets2006_len_sak.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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/packets2007_len_ad.h b/src/common/packets/packets2007_len_ad.h
index f7c2a7e87..1d952b2da 100644
--- a/src/common/packets/packets2007_len_ad.h
+++ b/src/common/packets/packets2007_len_ad.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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/packets2007_len_main.h b/src/common/packets/packets2007_len_main.h
index 750ce6610..f7c5faaf0 100644
--- a/src/common/packets/packets2007_len_main.h
+++ b/src/common/packets/packets2007_len_main.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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/packets2007_len_sak.h b/src/common/packets/packets2007_len_sak.h
index 443613ef7..61bb5cd6d 100644
--- a/src/common/packets/packets2007_len_sak.h
+++ b/src/common/packets/packets2007_len_sak.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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/packets2008_len_ad.h b/src/common/packets/packets2008_len_ad.h
index 0d0aaf186..82679ec63 100644
--- a/src/common/packets/packets2008_len_ad.h
+++ b/src/common/packets/packets2008_len_ad.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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/packets2008_len_main.h b/src/common/packets/packets2008_len_main.h
index 1d6f253b3..4eafe5e89 100644
--- a/src/common/packets/packets2008_len_main.h
+++ b/src/common/packets/packets2008_len_main.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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/packets2008_len_re.h b/src/common/packets/packets2008_len_re.h
index 1068cd5f7..37ee848eb 100644
--- a/src/common/packets/packets2008_len_re.h
+++ b/src/common/packets/packets2008_len_re.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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/packets2008_len_sak.h b/src/common/packets/packets2008_len_sak.h
index 431f68506..cf20cf753 100644
--- a/src/common/packets/packets2008_len_sak.h
+++ b/src/common/packets/packets2008_len_sak.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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/packets2009_len_main.h b/src/common/packets/packets2009_len_main.h
index 82909b874..de9919468 100644
--- a/src/common/packets/packets2009_len_main.h
+++ b/src/common/packets/packets2009_len_main.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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/packets2009_len_re.h b/src/common/packets/packets2009_len_re.h
index 2b864d38d..4cd76c5ca 100644
--- a/src/common/packets/packets2009_len_re.h
+++ b/src/common/packets/packets2009_len_re.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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/packets2009_len_sak.h b/src/common/packets/packets2009_len_sak.h
index f65433c1a..f732fddea 100644
--- a/src/common/packets/packets2009_len_sak.h
+++ b/src/common/packets/packets2009_len_sak.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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/packets2010_len_main.h b/src/common/packets/packets2010_len_main.h
index 017c4d98b..32424bac8 100644
--- a/src/common/packets/packets2010_len_main.h
+++ b/src/common/packets/packets2010_len_main.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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/packets2010_len_re.h b/src/common/packets/packets2010_len_re.h
index 1788a9479..ef683fc04 100644
--- a/src/common/packets/packets2010_len_re.h
+++ b/src/common/packets/packets2010_len_re.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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/packets2011_len_main.h b/src/common/packets/packets2011_len_main.h
index f586ba54a..2728aeb61 100644
--- a/src/common/packets/packets2011_len_main.h
+++ b/src/common/packets/packets2011_len_main.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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/packets2011_len_re.h b/src/common/packets/packets2011_len_re.h
index c01af0123..58e647cac 100644
--- a/src/common/packets/packets2011_len_re.h
+++ b/src/common/packets/packets2011_len_re.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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/packets2012_len_main.h b/src/common/packets/packets2012_len_main.h
index 248eb77ec..7784ee39a 100644
--- a/src/common/packets/packets2012_len_main.h
+++ b/src/common/packets/packets2012_len_main.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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/packets2012_len_re.h b/src/common/packets/packets2012_len_re.h
index 3273a85f9..58a8eadf8 100644
--- a/src/common/packets/packets2012_len_re.h
+++ b/src/common/packets/packets2012_len_re.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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/packets2013_len_main.h b/src/common/packets/packets2013_len_main.h
index c2c7711e9..f7a60ade9 100644
--- a/src/common/packets/packets2013_len_main.h
+++ b/src/common/packets/packets2013_len_main.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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/packets2013_len_re.h b/src/common/packets/packets2013_len_re.h
index 6f3714e0f..2c7951f7b 100644
--- a/src/common/packets/packets2013_len_re.h
+++ b/src/common/packets/packets2013_len_re.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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/packets2014_len_main.h b/src/common/packets/packets2014_len_main.h
index 3faede09f..b58979cb7 100644
--- a/src/common/packets/packets2014_len_main.h
+++ b/src/common/packets/packets2014_len_main.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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/packets2014_len_re.h b/src/common/packets/packets2014_len_re.h
index 016aae42d..e71f4e975 100644
--- a/src/common/packets/packets2014_len_re.h
+++ b/src/common/packets/packets2014_len_re.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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/packets2015_len_main.h b/src/common/packets/packets2015_len_main.h
index dfc2caeb2..3144d5250 100644
--- a/src/common/packets/packets2015_len_main.h
+++ b/src/common/packets/packets2015_len_main.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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/packets2015_len_re.h b/src/common/packets/packets2015_len_re.h
index 16db2c94e..bd65d3eea 100644
--- a/src/common/packets/packets2015_len_re.h
+++ b/src/common/packets/packets2015_len_re.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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/packets2016_len_main.h b/src/common/packets/packets2016_len_main.h
index 09b8e153f..7625e55e9 100644
--- a/src/common/packets/packets2016_len_main.h
+++ b/src/common/packets/packets2016_len_main.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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/packets2016_len_re.h b/src/common/packets/packets2016_len_re.h
index 76c752edc..2a665f3f5 100644
--- a/src/common/packets/packets2016_len_re.h
+++ b/src/common/packets/packets2016_len_re.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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/packets2017_len_main.h b/src/common/packets/packets2017_len_main.h
index 572969174..ceca3d781 100644
--- a/src/common/packets/packets2017_len_main.h
+++ b/src/common/packets/packets2017_len_main.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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/packets2017_len_re.h b/src/common/packets/packets2017_len_re.h
index c2cbaa4aa..17751f090 100644
--- a/src/common/packets/packets2017_len_re.h
+++ b/src/common/packets/packets2017_len_re.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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/packets2017_len_zero.h b/src/common/packets/packets2017_len_zero.h
index dbe09dad6..910de7ca9 100644
--- a/src/common/packets/packets2017_len_zero.h
+++ b/src/common/packets/packets2017_len_zero.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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/packets2018_len_main.h b/src/common/packets/packets2018_len_main.h
index e91e8998d..c7f4c0972 100644
--- a/src/common/packets/packets2018_len_main.h
+++ b/src/common/packets/packets2018_len_main.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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
@@ -5717,12 +5717,12 @@ packetLen(0x0b0d, 10) // ZC_REMOVE_EFFECT
// Packet: 0x0b0e
#if PACKETVER >= 20180912
-packetLen(0x0b0e, -1)
+packetLen(0x0b0e, -1) // ZC_NPC_BARTER_OPEN
#endif
// Packet: 0x0b0f
#if PACKETVER >= 20180912
-packetLen(0x0b0f, -1)
+packetLen(0x0b0f, -1) // CZ_NPC_BARTER_PURCHASE
#endif
// Packet: 0x0b10
@@ -5737,7 +5737,7 @@ packetLen(0x0b11, 4) // CZ_STOP_USE_SKILL
// Packet: 0x0b12
#if PACKETVER >= 20181017
-packetLen(0x0b12, 2)
+packetLen(0x0b12, 2) // CZ_NPC_BARTER_CLOSE
#endif
// Packet: 0x0b13
@@ -5749,32 +5749,32 @@ packetLen(0x0b13, 40) // ZC_ITEM_PREVIEW
// Packet: 0x0b14
#if PACKETVER >= 20181031
-packetLen(0x0b14, 2)
+packetLen(0x0b14, 2) // CZ_INVENTORY_EXPAND
#endif
// Packet: 0x0b15
#if PACKETVER >= 20181031
-packetLen(0x0b15, 7)
+packetLen(0x0b15, 7) // ZC_ACK_INVENTORY_EXPAND
#endif
// Packet: 0x0b16
#if PACKETVER >= 20181031
-packetLen(0x0b16, 2)
+packetLen(0x0b16, 2) // CZ_INVENTORY_EXPAND_CONFIRMED
#endif
// Packet: 0x0b17
#if PACKETVER >= 20181031
-packetLen(0x0b17, 3)
+packetLen(0x0b17, 3) // ZC_ACK_INVENTORY_EXPAND_RESULT
#endif
// Packet: 0x0b18
#if PACKETVER >= 20181031
-packetLen(0x0b18, 4)
+packetLen(0x0b18, 4) // ZC_INVENTORY_EXPANSION_INFO
#endif
// Packet: 0x0b19
#if PACKETVER >= 20181031
-packetLen(0x0b19, 2)
+packetLen(0x0b19, 2) // CZ_INVENTORY_EXPAND_REJECTED
#endif
// Packet: 0x0b1a
diff --git a/src/common/packets/packets2018_len_re.h b/src/common/packets/packets2018_len_re.h
index 816dee241..42a417fea 100644
--- a/src/common/packets/packets2018_len_re.h
+++ b/src/common/packets/packets2018_len_re.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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
@@ -5603,12 +5603,12 @@ packetLen(0x0b0d, 10) // ZC_REMOVE_EFFECT
// Packet: 0x0b0e
#if PACKETVER >= 20180912
-packetLen(0x0b0e, -1)
+packetLen(0x0b0e, -1) // ZC_NPC_BARTER_OPEN
#endif
// Packet: 0x0b0f
#if PACKETVER >= 20180912
-packetLen(0x0b0f, -1)
+packetLen(0x0b0f, -1) // CZ_NPC_BARTER_PURCHASE
#endif
// Packet: 0x0b10
@@ -5623,7 +5623,7 @@ packetLen(0x0b11, 4) // CZ_STOP_USE_SKILL
// Packet: 0x0b12
#if PACKETVER >= 20181017
-packetLen(0x0b12, 2)
+packetLen(0x0b12, 2) // CZ_NPC_BARTER_CLOSE
#endif
// Packet: 0x0b13
@@ -5633,32 +5633,32 @@ packetLen(0x0b13, 48) // ZC_ITEM_PREVIEW
// Packet: 0x0b14
#if PACKETVER >= 20181031
-packetLen(0x0b14, 2)
+packetLen(0x0b14, 2) // CZ_INVENTORY_EXPAND
#endif
// Packet: 0x0b15
#if PACKETVER >= 20181031
-packetLen(0x0b15, 7)
+packetLen(0x0b15, 7) // ZC_ACK_INVENTORY_EXPAND
#endif
// Packet: 0x0b16
#if PACKETVER >= 20181031
-packetLen(0x0b16, 2)
+packetLen(0x0b16, 2) // CZ_INVENTORY_EXPAND_CONFIRMED
#endif
// Packet: 0x0b17
#if PACKETVER >= 20181031
-packetLen(0x0b17, 3)
+packetLen(0x0b17, 3) // ZC_ACK_INVENTORY_EXPAND_RESULT
#endif
// Packet: 0x0b18
#if PACKETVER >= 20181031
-packetLen(0x0b18, 4)
+packetLen(0x0b18, 4) // ZC_INVENTORY_EXPANSION_INFO
#endif
// Packet: 0x0b19
#if PACKETVER >= 20181031
-packetLen(0x0b19, 2)
+packetLen(0x0b19, 2) // CZ_INVENTORY_EXPAND_REJECTED
#endif
// Packet: 0x0b1a
diff --git a/src/common/packets/packets2018_len_zero.h b/src/common/packets/packets2018_len_zero.h
index 61b174600..39448930e 100644
--- a/src/common/packets/packets2018_len_zero.h
+++ b/src/common/packets/packets2018_len_zero.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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/packets2019_len_main.h b/src/common/packets/packets2019_len_main.h
new file mode 100644
index 000000000..f7ad59577
--- /dev/null
+++ b/src/common/packets/packets2019_len_main.h
@@ -0,0 +1,4381 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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
+ * 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 COMMON_PACKETS2019_LEN_MAIN_H
+#define COMMON_PACKETS2019_LEN_MAIN_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+packetLen(0x006d, 157) // HC_ACCEPT_MAKECHAR
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+packetLen(0x0072, 22) // CZ_ENTER
+
+// Packet: 0x0073
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+
+// Packet: 0x0078
+packetLen(0x0078, 55) // ZC_NOTIFY_STANDENTRY
+
+// Packet: 0x0079
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+
+// Packet: 0x007a
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+
+// Packet: 0x007b
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+
+// Packet: 0x007c
+packetLen(0x007c, 44) // ZC_NOTIFY_STANDENTRY_NPC
+
+// Packet: 0x007d
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+
+// Packet: 0x007e
+packetLen(0x007e, 105) // CZ_REQUEST_TIME
+
+// Packet: 0x007f
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+
+// Packet: 0x0080
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+packetLen(0x0085, 10) // CZ_REQUEST_MOVE
+
+// Packet: 0x0086
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+
+// Packet: 0x0087
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+
+// Packet: 0x0088
+packetLen(0x0088, 10) // ZC_STOPMOVE
+
+// Packet: 0x0089
+packetLen(0x0089, 11) // CZ_REQUEST_ACT
+
+// Packet: 0x008a
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+packetLen(0x008c, 14)
+
+// Packet: 0x008d
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+
+// Packet: 0x008e
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+
+// Packet: 0x0090
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+
+// Packet: 0x0091
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+
+// Packet: 0x0092
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0093
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+
+// Packet: 0x0094
+packetLen(0x0094, 19) // CZ_REQNAME
+
+// Packet: 0x0095
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+
+// Packet: 0x0096
+packetLen(0x0096, -1) // CZ_WHISPER
+
+// Packet: 0x0097
+packetLen(0x0097, -1) // ZC_WHISPER
+
+// Packet: 0x0098
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+
+// Packet: 0x0099
+packetLen(0x0099, -1) // CZ_BROADCAST
+
+// Packet: 0x009a
+packetLen(0x009a, -1) // ZC_BROADCAST
+
+// Packet: 0x009b
+packetLen(0x009b, 34) // CZ_CHANGE_DIRECTION
+
+// Packet: 0x009c
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+
+// Packet: 0x009d
+packetLen(0x009d, 19) // ZC_ITEM_ENTRY
+
+// Packet: 0x009e
+packetLen(0x009e, 19) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x009f
+packetLen(0x009f, 20) // CZ_ITEM_PICKUP
+
+// Packet: 0x00a0
+packetLen(0x00a0, 33) // ZC_ITEM_PICKUP_ACK
+
+// Packet: 0x00a1
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+
+// Packet: 0x00a2
+packetLen(0x00a2, 14) // CZ_ITEM_THROW
+
+// Packet: 0x00a3
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+
+// Packet: 0x00a4
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a5
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+
+// Packet: 0x00a6
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a7
+packetLen(0x00a7, 9)
+
+// Packet: 0x00a8
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+
+// Packet: 0x00a9
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+
+// Packet: 0x00aa
+packetLen(0x00aa, 9) // ZC_REQ_WEAR_EQUIP_ACK
+
+// Packet: 0x00ab
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+
+// Packet: 0x00ac
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+
+// Packet: 0x00b0
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+
+// Packet: 0x00b1
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+
+// Packet: 0x00b2
+packetLen(0x00b2, 3) // CZ_RESTART
+
+// Packet: 0x00b3
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+
+// Packet: 0x00b4
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+
+// Packet: 0x00b5
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+
+// Packet: 0x00b6
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+
+// Packet: 0x00b7
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+
+// Packet: 0x00b8
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+
+// Packet: 0x00b9
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+
+// Packet: 0x00bc
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+
+// Packet: 0x00bd
+packetLen(0x00bd, 44) // ZC_STATUS
+
+// Packet: 0x00be
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+
+// Packet: 0x00bf
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+
+// Packet: 0x00c0
+packetLen(0x00c0, 7) // ZC_EMOTION
+
+// Packet: 0x00c1
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+
+// Packet: 0x00c2
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+
+// Packet: 0x00c3
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+
+// Packet: 0x00c4
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+
+// Packet: 0x00c5
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+
+// Packet: 0x00c6
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c7
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+
+// Packet: 0x00c8
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c9
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+
+// Packet: 0x00ca
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+
+// Packet: 0x00cf
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+
+// Packet: 0x00d0
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+
+// Packet: 0x00d1
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+
+// Packet: 0x00d2
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+
+// Packet: 0x00d3
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+
+// Packet: 0x00d6
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+
+// Packet: 0x00d7
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+
+// Packet: 0x00d8
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+
+// Packet: 0x00d9
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+
+// Packet: 0x00da
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+
+// Packet: 0x00db
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+
+// Packet: 0x00dc
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+
+// Packet: 0x00dd
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+
+// Packet: 0x00de
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+
+// Packet: 0x00df
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+
+// Packet: 0x00e0
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+
+// Packet: 0x00e1
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+
+// Packet: 0x00e2
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+
+// Packet: 0x00e3
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+
+// Packet: 0x00e4
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e5
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e6
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e7
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e8
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00e9
+packetLen(0x00e9, 29) // ZC_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00ea
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00eb
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ec
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ed
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ee
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ef
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f0
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+
+// Packet: 0x00f3
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+
+// Packet: 0x00f4
+packetLen(0x00f4, 31) // ZC_ADD_ITEM_TO_STORE
+
+// Packet: 0x00f5
+packetLen(0x00f5, 11) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+
+// Packet: 0x00f6
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+
+// Packet: 0x00f7
+packetLen(0x00f7, 17) // CZ_REQUEST_TIME
+
+// Packet: 0x00f8
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+
+// Packet: 0x00f9
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+
+// Packet: 0x00fa
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+
+// Packet: 0x00fb
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+
+// Packet: 0x00fc
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+
+// Packet: 0x00fd
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+
+// Packet: 0x00fe
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+
+// Packet: 0x00ff
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+
+// Packet: 0x0100
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+
+// Packet: 0x0101
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+
+// Packet: 0x0102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+
+// Packet: 0x0103
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+
+// Packet: 0x0104
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0105
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+
+// Packet: 0x0106
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+
+// Packet: 0x0107
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+
+// Packet: 0x0108
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+
+// Packet: 0x0109
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+
+// Packet: 0x010a
+packetLen(0x010a, 6) // ZC_MVP_GETTING_ITEM
+
+// Packet: 0x010b
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+
+// Packet: 0x010c
+packetLen(0x010c, 6) // ZC_MVP
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+
+// Packet: 0x010f
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+
+// Packet: 0x0110
+packetLen(0x0110, 14) // ZC_ACK_TOUSESKILL
+
+// Packet: 0x0111
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+
+// Packet: 0x0112
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+
+// Packet: 0x0113
+packetLen(0x0113, 25) // CZ_USE_SKILL
+
+// Packet: 0x0114
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+packetLen(0x0116, 17) // CZ_USE_SKILL_TOGROUND
+
+// Packet: 0x0117
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+
+// Packet: 0x0118
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+
+// Packet: 0x0119
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+
+// Packet: 0x011a
+packetLen(0x011a, 15) // ZC_USE_SKILL
+
+// Packet: 0x011b
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+
+// Packet: 0x011c
+packetLen(0x011c, 68) // ZC_WARPLIST
+
+// Packet: 0x011d
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+
+// Packet: 0x011e
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+
+// Packet: 0x011f
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+
+// Packet: 0x0120
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+
+// Packet: 0x0121
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+
+// Packet: 0x0122
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+
+// Packet: 0x0123
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+
+// Packet: 0x0124
+packetLen(0x0124, 31) // ZC_ADD_ITEM_TO_CART
+
+// Packet: 0x0125
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+
+// Packet: 0x0126
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+
+// Packet: 0x0127
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+
+// Packet: 0x0128
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+
+// Packet: 0x0129
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+
+// Packet: 0x012a
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+
+// Packet: 0x012d
+packetLen(0x012d, 4) // ZC_OPENSTORE
+
+// Packet: 0x012e
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+
+// Packet: 0x0131
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+
+// Packet: 0x0132
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+
+// Packet: 0x0133
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0134
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0135
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+
+// Packet: 0x0136
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+
+// Packet: 0x0137
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+
+// Packet: 0x013a
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+
+// Packet: 0x013b
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+
+// Packet: 0x013c
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+
+// Packet: 0x013d
+packetLen(0x013d, 6) // ZC_RECOVERY
+
+// Packet: 0x013e
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+
+// Packet: 0x013f
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+
+// Packet: 0x0140
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+
+// Packet: 0x0141
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+
+// Packet: 0x0142
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+
+// Packet: 0x0143
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+
+// Packet: 0x0144
+packetLen(0x0144, 23) // ZC_COMPASS
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+
+// Packet: 0x0147
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+
+// Packet: 0x0148
+packetLen(0x0148, 8) // ZC_RESURRECTION
+
+// Packet: 0x0149
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+
+// Packet: 0x014d
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0155
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+
+// Packet: 0x015a
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+
+// Packet: 0x015b
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+
+// Packet: 0x015c
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+
+// Packet: 0x0161
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0162
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+
+// Packet: 0x0163
+packetLen(0x0163, -1) // ZC_BAN_LIST
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+
+// Packet: 0x0166
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+
+// Packet: 0x0167
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+
+// Packet: 0x0168
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+
+// Packet: 0x0169
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+
+// Packet: 0x016a
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+
+// Packet: 0x016b
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+
+// Packet: 0x016c
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+
+// Packet: 0x016d
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+
+// Packet: 0x016e
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+
+// Packet: 0x016f
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+
+// Packet: 0x0170
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+
+// Packet: 0x0171
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+
+// Packet: 0x0172
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+
+// Packet: 0x0178
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+
+// Packet: 0x0179
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+
+// Packet: 0x017a
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017b
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017c
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+
+// Packet: 0x017d
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+
+// Packet: 0x017e
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+
+// Packet: 0x017f
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+
+// Packet: 0x0189
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+
+// Packet: 0x018a
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+
+// Packet: 0x018b
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+
+// Packet: 0x018c
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+
+// Packet: 0x018d
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+
+// Packet: 0x018e
+packetLen(0x018e, 18) // CZ_REQMAKINGITEM
+
+// Packet: 0x018f
+packetLen(0x018f, 8) // ZC_ACK_REQMAKINGITEM
+
+// Packet: 0x0190
+packetLen(0x0190, 23) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+packetLen(0x0193, 2) // CZ_REQNAME_BYGID
+
+// Packet: 0x0194
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0195
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+
+// Packet: 0x0196
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+
+// Packet: 0x019a
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+
+// Packet: 0x019b
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+
+// Packet: 0x019c
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+
+// Packet: 0x019d
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a0
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a1
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+
+// Packet: 0x01a2
+packetLen(0x01a2, 37) // ZC_PROPERTY_PET
+
+// Packet: 0x01a3
+packetLen(0x01a3, 7) // ZC_FEED_PET
+
+// Packet: 0x01a4
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+
+// Packet: 0x01a7
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+packetLen(0x01aa, 10) // ZC_PET_ACT
+
+// Packet: 0x01ab
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+
+// Packet: 0x01ac
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+
+// Packet: 0x01ad
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+
+// Packet: 0x01ae
+packetLen(0x01ae, 6) // CZ_REQ_MAKINGARROW
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+
+// Packet: 0x01b3
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+packetLen(0x01b9, 6) // ZC_DISPEL
+
+// Packet: 0x01ba
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+
+// Packet: 0x01bb
+packetLen(0x01bb, 26) // CZ_SHIFT
+
+// Packet: 0x01bc
+packetLen(0x01bc, 26) // CZ_RECALL
+
+// Packet: 0x01bd
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+
+// Packet: 0x01c4
+packetLen(0x01c4, 32) // ZC_ADD_ITEM_TO_STORE2
+
+// Packet: 0x01c5
+packetLen(0x01c5, 32) // ZC_ADD_ITEM_TO_CART2
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+packetLen(0x01c8, 15) // ZC_USE_ITEM_ACK2
+
+// Packet: 0x01c9
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+
+// Packet: 0x01ca
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+
+// Packet: 0x01ce
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+
+// Packet: 0x01cf
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+
+// Packet: 0x01d0
+packetLen(0x01d0, 8) // ZC_SPIRITS
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+
+// Packet: 0x01d5
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+
+// Packet: 0x01d6
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+
+// Packet: 0x01d7
+packetLen(0x01d7, 15) // ZC_SPRITE_CHANGE2
+
+// Packet: 0x01d8
+packetLen(0x01d8, 58) // ZC_NOTIFY_STANDENTRY2
+
+// Packet: 0x01d9
+packetLen(0x01d9, 57) // ZC_NOTIFY_NEWENTRY2
+
+// Packet: 0x01da
+packetLen(0x01da, 64) // ZC_NOTIFY_MOVEENTRY2
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+packetLen(0x01e7, 2) // CZ_DORIDORI
+
+// Packet: 0x01e8
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+
+// Packet: 0x01e9
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+
+// Packet: 0x01ea
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+
+// Packet: 0x01eb
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+
+// Packet: 0x01ee
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+
+// Packet: 0x01ef
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+
+// Packet: 0x01f0
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+
+// Packet: 0x01f3
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+
+// Packet: 0x01f4
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+
+// Packet: 0x01f5
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+
+// Packet: 0x01f6
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+
+// Packet: 0x01f7
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+
+// Packet: 0x01f8
+packetLen(0x01f8, 2) // ZC_START_BABY
+
+// Packet: 0x01f9
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+
+// Packet: 0x01fa
+packetLen(0x01fa, 48) // CA_LOGIN3
+
+// Packet: 0x01fb
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+
+// Packet: 0x01fc
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+
+// Packet: 0x01fd
+packetLen(0x01fd, 25) // CZ_REQ_ITEMREPAIR
+
+// Packet: 0x01fe
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+
+// Packet: 0x01ff
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+
+// Packet: 0x0200
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+
+// Packet: 0x0201
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+
+// Packet: 0x0202
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+
+// Packet: 0x0203
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+
+// Packet: 0x0204
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+
+// Packet: 0x0205
+packetLen(0x0205, 26) // ZC_DIVORCE
+
+// Packet: 0x0206
+packetLen(0x0206, 35) // ZC_FRIENDS_STATE
+
+// Packet: 0x0207
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+
+// Packet: 0x0208
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+
+// Packet: 0x0209
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+
+// Packet: 0x020a
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+
+// Packet: 0x020d
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+
+// Packet: 0x020e
+packetLen(0x020e, 32) // ZC_STARSKILL
+
+// Packet: 0x0212
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+
+// Packet: 0x0213
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+
+// Packet: 0x0214
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+
+// Packet: 0x0215
+packetLen(0x0215, 6) // ZC_SKILLMSG
+
+// Packet: 0x0216
+packetLen(0x0216, 6) // ZC_BABYMSG
+
+// Packet: 0x0217
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+
+// Packet: 0x0218
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+
+// Packet: 0x0219
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+
+// Packet: 0x021a
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+
+// Packet: 0x021b
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+
+// Packet: 0x021c
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+
+// Packet: 0x021d
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+
+// Packet: 0x021e
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+
+// Packet: 0x021f
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+
+// Packet: 0x0220
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+
+// Packet: 0x0221
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+
+// Packet: 0x0222
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+
+// Packet: 0x0223
+packetLen(0x0223, 10) // ZC_ACK_WEAPONREFINE
+
+// Packet: 0x0224
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+
+// Packet: 0x0225
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+
+// Packet: 0x0226
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+
+// Packet: 0x0227
+packetLen(0x0227, 18) // ZC_GAME_GUARD
+
+// Packet: 0x0228
+packetLen(0x0228, 18) // CZ_ACK_GAME_GUARD
+
+// Packet: 0x0229
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+
+// Packet: 0x022a
+packetLen(0x022a, 62) // ZC_NOTIFY_STANDENTRY3
+
+// Packet: 0x022b
+packetLen(0x022b, 61) // ZC_NOTIFY_NEWENTRY3
+
+// Packet: 0x022c
+packetLen(0x022c, 69) // ZC_NOTIFY_MOVEENTRY3
+
+// Packet: 0x022d
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+
+// Packet: 0x022e
+packetLen(0x022e, 73) // ZC_PROPERTY_HOMUN
+
+// Packet: 0x022f
+packetLen(0x022f, 7) // ZC_FEED_MER
+
+// Packet: 0x0230
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+
+// Packet: 0x0231
+packetLen(0x0231, 26) // CZ_RENAME_MER
+
+// Packet: 0x0232
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+
+// Packet: 0x0233
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+
+// Packet: 0x0234
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+
+// Packet: 0x0235
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+
+// Packet: 0x0236
+packetLen(0x0236, 10) // ZC_KILLER_POINT
+
+// Packet: 0x0237
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+
+// Packet: 0x0238
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+
+// Packet: 0x0239
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+
+// Packet: 0x023a
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+
+// Packet: 0x023b
+packetLen(0x023b, 36) // CZ_ACK_STORE_PASSWORD
+
+// Packet: 0x023c
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+
+// Packet: 0x023d
+packetLen(0x023d, 6) // AC_EVENT_RESULT
+
+// Packet: 0x023e
+packetLen(0x023e, 8) // HC_REQUEST_CHARACTER_PASSWORD
+
+// Packet: 0x023f
+packetLen(0x023f, 2) // CZ_MAIL_GET_LIST
+
+// Packet: 0x0240
+packetLen(0x0240, -1) // ZC_MAIL_REQ_GET_LIST
+
+// Packet: 0x0241
+packetLen(0x0241, 6) // CZ_MAIL_OPEN
+
+// Packet: 0x0242
+packetLen(0x0242, -1) // ZC_MAIL_REQ_OPEN
+
+// Packet: 0x0243
+packetLen(0x0243, 6) // CZ_MAIL_DELETE
+
+// Packet: 0x0244
+packetLen(0x0244, 6) // CZ_MAIL_GET_ITEM
+
+// Packet: 0x0245
+packetLen(0x0245, 3) // ZC_MAIL_REQ_GET_ITEM
+
+// Packet: 0x0246
+packetLen(0x0246, 4) // CZ_MAIL_RESET_ITEM
+
+// Packet: 0x0247
+packetLen(0x0247, 8) // CZ_MAIL_ADD_ITEM
+
+// Packet: 0x0248
+packetLen(0x0248, -1) // CZ_MAIL_SEND
+
+// Packet: 0x0249
+packetLen(0x0249, 3) // ZC_MAIL_REQ_SEND
+
+// Packet: 0x024a
+packetLen(0x024a, 70) // ZC_MAIL_RECEIVE
+
+// Packet: 0x024b
+packetLen(0x024b, 4) // CZ_AUCTION_CREATE
+
+// Packet: 0x024c
+packetLen(0x024c, 8) // CZ_AUCTION_ADD_ITEM
+
+// Packet: 0x024d
+packetLen(0x024d, 12) // CZ_AUCTION_ADD
+
+// Packet: 0x024e
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+
+// Packet: 0x024f
+packetLen(0x024f, 10) // CZ_AUCTION_BUY
+
+// Packet: 0x0250
+packetLen(0x0250, 3) // ZC_AUCTION_RESULT
+
+// Packet: 0x0251
+packetLen(0x0251, 34) // CZ_AUCTION_ITEM_SEARCH
+
+// Packet: 0x0252
+packetLen(0x0252, -1) // ZC_AUCTION_ITEM_REQ_SEARCH
+
+// Packet: 0x0253
+packetLen(0x0253, 3) // ZC_STARPLACE
+
+// Packet: 0x0254
+packetLen(0x0254, 3) // CZ_AGREE_STARPLACE
+
+// Packet: 0x0255
+packetLen(0x0255, 5) // ZC_ACK_MAIL_ADD_ITEM
+
+// Packet: 0x0256
+packetLen(0x0256, 5) // ZC_ACK_AUCTION_ADD_ITEM
+
+// Packet: 0x0257
+packetLen(0x0257, 8) // ZC_ACK_MAIL_DELETE
+
+// Packet: 0x0258
+packetLen(0x0258, 2) // CA_REQ_GAME_GUARD_CHECK
+
+// Packet: 0x0259
+packetLen(0x0259, 3) // AC_ACK_GAME_GUARD
+
+// Packet: 0x025a
+packetLen(0x025a, -1) // ZC_MAKINGITEM_LIST
+
+// Packet: 0x025b
+packetLen(0x025b, 8) // CZ_REQ_MAKINGITEM
+
+// Packet: 0x025c
+packetLen(0x025c, 4) // CZ_AUCTION_REQ_MY_INFO
+
+// Packet: 0x025d
+packetLen(0x025d, 6) // CZ_AUCTION_REQ_MY_SELL_STOP
+
+// Packet: 0x025e
+packetLen(0x025e, 4) // ZC_AUCTION_ACK_MY_SELL_STOP
+
+// Packet: 0x025f
+packetLen(0x025f, 6) // ZC_AUCTION_WINDOWS
+
+// Packet: 0x0260
+packetLen(0x0260, 6) // ZC_MAIL_WINDOWS
+
+// Packet: 0x0261
+packetLen(0x0261, 11) // AC_REQ_LOGIN_OLDEKEY
+
+// Packet: 0x0262
+packetLen(0x0262, 11) // AC_REQ_LOGIN_NEWEKEY
+
+// Packet: 0x0263
+packetLen(0x0263, 11) // AC_REQ_LOGIN_CARDPASS
+
+// Packet: 0x0264
+packetLen(0x0264, 20) // CA_ACK_LOGIN_OLDEKEY
+
+// Packet: 0x0265
+packetLen(0x0265, 20) // CA_ACK_LOGIN_NEWEKEY
+
+// Packet: 0x0266
+packetLen(0x0266, 30) // CA_ACK_LOGIN_CARDPASS
+
+// Packet: 0x0267
+packetLen(0x0267, 4) // AC_ACK_EKEY_FAIL_NOTEXIST
+
+// Packet: 0x0268
+packetLen(0x0268, 4) // AC_ACK_EKEY_FAIL_NOTUSESEKEY
+
+// Packet: 0x0269
+packetLen(0x0269, 4) // AC_ACK_EKEY_FAIL_NOTUSEDEKEY
+
+// Packet: 0x026a
+packetLen(0x026a, 4) // AC_ACK_EKEY_FAIL_AUTHREFUSE
+
+// Packet: 0x026b
+packetLen(0x026b, 4) // AC_ACK_EKEY_FAIL_INPUTEKEY
+
+// Packet: 0x026c
+packetLen(0x026c, 4) // AC_ACK_EKEY_FAIL_NOTICE
+
+// Packet: 0x026d
+packetLen(0x026d, 4) // AC_ACK_EKEY_FAIL_NEEDCARDPASS
+
+// Packet: 0x026f
+packetLen(0x026f, 2) // AC_ACK_FIRST_LOGIN
+
+// Packet: 0x0270
+packetLen(0x0270, 2) // AC_REQ_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0271
+packetLen(0x0271, 40) // CA_ACK_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0272
+packetLen(0x0272, 44) // AC_ACK_PT_ID_INFO
+
+// Packet: 0x0273
+packetLen(0x0273, 30) // CZ_REQ_MAIL_RETURN
+
+// Packet: 0x0274
+packetLen(0x0274, 8) // ZC_ACK_MAIL_RETURN
+
+// Packet: 0x0275
+packetLen(0x0275, 37) // CH_ENTER2
+
+// Packet: 0x0276
+packetLen(0x0276, -1) // AC_ACCEPT_LOGIN2
+
+// Packet: 0x0277
+packetLen(0x0277, 84) // CA_LOGIN_PCBANG
+
+// Packet: 0x0278
+packetLen(0x0278, 2) // ZC_NOTIFY_PCBANG
+
+// Packet: 0x0279
+packetLen(0x0279, 2) // CZ_HUNTINGLIST
+
+// Packet: 0x027a
+packetLen(0x027a, -1) // ZC_HUNTINGLIST
+
+// Packet: 0x027b
+packetLen(0x027b, 14) // ZC_PCBANG_EFFECT
+
+// Packet: 0x027c
+packetLen(0x027c, 60) // CA_LOGIN4
+
+// Packet: 0x027d
+packetLen(0x027d, 62) // ZC_PROPERTY_MERCE
+
+// Packet: 0x027e
+packetLen(0x027e, -1) // ZC_SHANDA_PROTECT
+
+// Packet: 0x027f
+packetLen(0x027f, 8) // CA_CLIENT_TYPE
+
+// Packet: 0x0280
+packetLen(0x0280, 12) // ZC_GANGSI_POINT
+
+// Packet: 0x0281
+packetLen(0x0281, 4) // CZ_GANGSI_RANK
+
+// Packet: 0x0282
+packetLen(0x0282, 284) // ZC_GANGSI_RANK
+
+// Packet: 0x0283
+packetLen(0x0283, 6) // ZC_AID
+
+// Packet: 0x0284
+packetLen(0x0284, 14) // ZC_NOTIFY_EFFECT3
+
+// Packet: 0x0285
+packetLen(0x0285, 6) // ZC_DEATH_QUESTION
+
+// Packet: 0x0286
+packetLen(0x0286, 4) // CZ_DEATH_QUESTION
+
+// Packet: 0x0287
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+
+// Packet: 0x0288
+packetLen(0x0288, -1) // CZ_PC_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0289
+packetLen(0x0289, 12) // ZC_PC_CASH_POINT_UPDATE
+
+// Packet: 0x028a
+packetLen(0x028a, 18) // ZC_NPC_SHOWEFST_UPDATE
+
+// Packet: 0x028b
+packetLen(0x028b, -1) // HC_CHARNOTBEENSELECTED
+
+// Packet: 0x028c
+packetLen(0x028c, 46) // CH_SELECT_CHAR_GOINGTOBEUSED
+
+// Packet: 0x028d
+packetLen(0x028d, 34) // CH_REQ_IS_VALID_CHARNAME
+
+// Packet: 0x028e
+packetLen(0x028e, 4) // HC_ACK_IS_VALID_CHARNAME
+
+// Packet: 0x028f
+packetLen(0x028f, 6) // CH_REQ_CHANGE_CHARNAME
+
+// Packet: 0x0290
+packetLen(0x0290, 4) // HC_ACK_CHANGE_CHARNAME
+
+// Packet: 0x0291
+packetLen(0x0291, 4) // ZC_MSG
+
+// Packet: 0x0292
+packetLen(0x0292, 2) // CZ_STANDING_RESURRECTION
+
+// Packet: 0x0293
+packetLen(0x0293, 70) // ZC_BOSS_INFO
+
+// Packet: 0x0294
+packetLen(0x0294, 10) // ZC_READ_BOOK
+
+// Packet: 0x0295
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0296
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0297
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0298
+packetLen(0x0298, 10) // ZC_CASH_TIME_COUNTER
+
+// Packet: 0x0299
+packetLen(0x0299, 8) // ZC_CASH_ITEM_DELETE
+
+// Packet: 0x029a
+packetLen(0x029a, 37) // ZC_ITEM_PICKUP_ACK2
+
+// Packet: 0x029b
+packetLen(0x029b, 80) // ZC_MER_INIT
+
+// Packet: 0x029c
+packetLen(0x029c, 66) // ZC_MER_PROPERTY
+
+// Packet: 0x029d
+packetLen(0x029d, -1) // ZC_MER_SKILLINFO_LIST
+
+// Packet: 0x029e
+packetLen(0x029e, 11) // ZC_MER_SKILLINFO_UPDATE
+
+// Packet: 0x029f
+packetLen(0x029f, 3) // CZ_MER_COMMAND
+
+// Packet: 0x02a2
+packetLen(0x02a2, 8) // ZC_MER_PAR_CHANGE
+
+// Packet: 0x02a5
+packetLen(0x02a5, 8) // CZ_KSY_EVENT
+
+// Packet: 0x02a6
+packetLen(0x02a6, -1) // ZC_HACKSH_CPX_MSG
+
+// Packet: 0x02a7
+packetLen(0x02a7, -1) // CZ_HACKSH_CPX_MSG
+
+// Packet: 0x02aa
+packetLen(0x02aa, 4) // ZC_REQ_CASH_PASSWORD
+
+// Packet: 0x02ab
+packetLen(0x02ab, 36) // CZ_ACK_CASH_PASSWORD
+
+// Packet: 0x02ac
+packetLen(0x02ac, 6) // ZC_RESULT_CASH_PASSWORD
+
+// Packet: 0x02ad
+packetLen(0x02ad, 8) // AC_REQUEST_SECOND_PASSWORD
+
+// Packet: 0x02b0
+packetLen(0x02b0, 85) // CA_LOGIN_HAN
+
+// Packet: 0x02b1
+packetLen(0x02b1, -1) // ZC_ALL_QUEST_LIST
+
+// Packet: 0x02b2
+packetLen(0x02b2, -1) // ZC_ALL_QUEST_MISSION
+
+// Packet: 0x02b3
+packetLen(0x02b3, 107) // ZC_ADD_QUEST
+
+// Packet: 0x02b4
+packetLen(0x02b4, 6) // ZC_DEL_QUEST
+
+// Packet: 0x02b5
+packetLen(0x02b5, -1) // ZC_UPDATE_MISSION_HUNT
+
+// Packet: 0x02b6
+packetLen(0x02b6, 7) // CZ_ACTIVE_QUEST
+
+// Packet: 0x02b7
+packetLen(0x02b7, 7) // ZC_ACTIVE_QUEST
+
+// Packet: 0x02b8
+packetLen(0x02b8, 32) // ZC_ITEM_PICKUP_PARTY
+
+// Packet: 0x02b9
+packetLen(0x02b9, 191) // ZC_SHORTCUT_KEY_LIST
+
+// Packet: 0x02ba
+packetLen(0x02ba, 11) // CZ_SHORTCUT_KEY_CHANGE
+
+// Packet: 0x02bb
+packetLen(0x02bb, 8) // ZC_EQUIPITEM_DAMAGED
+
+// Packet: 0x02bc
+packetLen(0x02bc, 6) // ZC_NOTIFY_PCBANG_PLAYING_TIME
+
+// Packet: 0x02c1
+packetLen(0x02c1, -1) // ZC_NPC_CHAT
+
+// Packet: 0x02c2
+packetLen(0x02c2, -1) // ZC_FORMATSTRING_MSG
+
+// Packet: 0x02c4
+packetLen(0x02c4, 26) // CZ_PARTY_JOIN_REQ
+
+// Packet: 0x02c5
+packetLen(0x02c5, 30) // ZC_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c6
+packetLen(0x02c6, 30) // ZC_PARTY_JOIN_REQ
+
+// Packet: 0x02c7
+packetLen(0x02c7, 7) // CZ_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c8
+packetLen(0x02c8, 3) // CZ_PARTY_CONFIG
+
+// Packet: 0x02c9
+packetLen(0x02c9, 3) // ZC_PARTY_CONFIG
+
+// Packet: 0x02ca
+packetLen(0x02ca, 3) // HC_REFUSE_SELECTCHAR
+
+// Packet: 0x02cb
+packetLen(0x02cb, 65) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_INFO
+
+// Packet: 0x02cc
+packetLen(0x02cc, 4) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_NOTIFY
+
+// Packet: 0x02cd
+packetLen(0x02cd, 71) // ZC_MEMORIALDUNGEON_INFO
+
+// Packet: 0x02ce
+packetLen(0x02ce, 10) // ZC_MEMORIALDUNGEON_NOTIFY
+
+// Packet: 0x02cf
+packetLen(0x02cf, 6) // CZ_MEMORIALDUNGEON_COMMAND
+
+// Packet: 0x02d0
+packetLen(0x02d0, -1) // ZC_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d1
+packetLen(0x02d1, -1) // ZC_STORE_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d2
+packetLen(0x02d2, -1) // ZC_CART_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d3
+packetLen(0x02d3, 4) // ZC_NOTIFY_BIND_ON_EQUIP
+
+// Packet: 0x02d4
+packetLen(0x02d4, 39) // ZC_ITEM_PICKUP_ACK3
+
+// Packet: 0x02d5
+packetLen(0x02d5, 2) // ZC_ISVR_DISCONNECT
+
+// Packet: 0x02d6
+packetLen(0x02d6, 6) // CZ_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d7
+packetLen(0x02d7, -1) // ZC_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d8
+packetLen(0x02d8, 10) // CZ_CONFIG
+
+// Packet: 0x02d9
+packetLen(0x02d9, 10) // ZC_CONFIG
+
+// Packet: 0x02da
+packetLen(0x02da, 3) // ZC_CONFIG_NOTIFY
+
+// Packet: 0x02db
+packetLen(0x02db, -1) // CZ_BATTLEFIELD_CHAT
+
+// Packet: 0x02dc
+packetLen(0x02dc, -1) // ZC_BATTLEFIELD_CHAT
+
+// Packet: 0x02dd
+packetLen(0x02dd, 32) // ZC_BATTLEFIELD_NOTIFY_CAMPINFO
+
+// Packet: 0x02de
+packetLen(0x02de, 6) // ZC_BATTLEFIELD_NOTIFY_POINT
+
+// Packet: 0x02df
+packetLen(0x02df, 36) // ZC_BATTLEFIELD_NOTIFY_POSITION
+
+// Packet: 0x02e0
+packetLen(0x02e0, 34) // ZC_BATTLEFIELD_NOTIFY_HP
+
+// Packet: 0x02e1
+packetLen(0x02e1, 33) // ZC_NOTIFY_ACT2
+
+// Packet: 0x02e2
+packetLen(0x02e2, 20) // CZ_USE_ITEM_NEW_JAPEN
+
+// Packet: 0x02e3
+packetLen(0x02e3, 22) // CZ_USE_SKILL_NEW_JAPEN
+
+// Packet: 0x02e4
+packetLen(0x02e4, 11) // CZ_ITEM_PICKUP_NEW_JAPEN
+
+// Packet: 0x02e5
+packetLen(0x02e5, 9) // CZ_REQUEST_MOVE_NEW_JAPEN
+
+// Packet: 0x02e6
+packetLen(0x02e6, 6) // CZ_BOT_CHECK
+
+// Packet: 0x02e7
+packetLen(0x02e7, -1) // ZC_MAPPROPERTY
+
+// Packet: 0x02e8
+packetLen(0x02e8, -1) // ZC_NORMAL_ITEMLIST3
+
+// Packet: 0x02e9
+packetLen(0x02e9, -1) // ZC_CART_NORMAL_ITEMLIST3
+
+// Packet: 0x02ea
+packetLen(0x02ea, -1) // ZC_STORE_NORMAL_ITEMLIST3
+
+// Packet: 0x02eb
+packetLen(0x02eb, 13) // ZC_ACCEPT_ENTER2
+
+// Packet: 0x02ec
+packetLen(0x02ec, 71) // ZC_NOTIFY_MOVEENTRY4
+
+// Packet: 0x02ed
+packetLen(0x02ed, 63) // ZC_NOTIFY_NEWENTRY4
+
+// Packet: 0x02ee
+packetLen(0x02ee, 64) // ZC_NOTIFY_STANDENTRY4
+
+// Packet: 0x02ef
+packetLen(0x02ef, 8) // ZC_NOTIFY_FONT
+
+// Packet: 0x02f0
+packetLen(0x02f0, 10) // ZC_PROGRESS
+
+// Packet: 0x02f1
+packetLen(0x02f1, 2) // CZ_PROGRESS
+
+// Packet: 0x02f2
+packetLen(0x02f2, 2) // ZC_PROGRESS_CANCEL
+
+// Packet: 0x02f3
+packetLen(0x02f3, -1) // CZ_IRMAIL_SEND
+
+// Packet: 0x02f4
+packetLen(0x02f4, 3) // ZC_IRMAIL_SEND_RES
+
+// Packet: 0x02f5
+packetLen(0x02f5, 7) // ZC_IRMAIL_NOTIFY
+
+// Packet: 0x02f6
+packetLen(0x02f6, 7) // CZ_IRMAIL_LIST
+
+// Packet: 0x035c
+packetLen(0x035c, 2) // CZ_OPEN_SIMPLE_CASHSHOP_ITEMLIST
+
+// Packet: 0x035d
+packetLen(0x035d, -1) // ZC_SIMPLE_CASHSHOP_POINT_ITEMLIST
+
+// Packet: 0x035e
+packetLen(0x035e, 2) // CZ_CLOSE_WINDOW
+
+// Packet: 0x035f
+packetLen(0x035f, 5) // CZ_REQUEST_MOVE2
+
+// Packet: 0x0360
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+
+// Packet: 0x0361
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+
+// Packet: 0x0362
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+
+// Packet: 0x0363
+packetLen(0x0363, 6) // CZ_ITEM_THROW2
+
+// Packet: 0x0364
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+
+// Packet: 0x0365
+packetLen(0x0365, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+
+// Packet: 0x0366
+packetLen(0x0366, 10) // CZ_USE_SKILL_TOGROUND2
+
+// Packet: 0x0367
+packetLen(0x0367, 90) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+
+// Packet: 0x0368
+packetLen(0x0368, 6) // CZ_REQNAME2
+
+// Packet: 0x0369
+packetLen(0x0369, 6) // CZ_REQNAME_BYGID2
+
+// Packet: 0x03dd
+packetLen(0x03dd, 18) // AHC_GAME_GUARD
+
+// Packet: 0x03de
+packetLen(0x03de, 18) // CAH_ACK_GAME_GUARD
+
+// Packet: 0x0436
+packetLen(0x0436, 19) // CZ_ENTER2
+
+// Packet: 0x0437
+packetLen(0x0437, 7) // CZ_REQUEST_ACT2
+
+// Packet: 0x0438
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+
+// Packet: 0x0439
+packetLen(0x0439, 8) // CZ_USE_ITEM2
+
+// Packet: 0x043d
+packetLen(0x043d, 8) // ZC_SKILL_POSTDELAY
+
+// Packet: 0x043e
+packetLen(0x043e, -1) // ZC_SKILL_POSTDELAY_LIST
+
+// Packet: 0x043f
+packetLen(0x043f, 25) // ZC_MSG_STATE_CHANGE2
+
+// Packet: 0x0440
+packetLen(0x0440, 10) // ZC_MILLENNIUMSHIELD
+
+// Packet: 0x0441
+packetLen(0x0441, 4) // ZC_SKILLINFO_DELETE
+
+// Packet: 0x0442
+packetLen(0x0442, -1) // ZC_SKILL_SELECT_REQUEST
+
+// Packet: 0x0443
+packetLen(0x0443, 8) // CZ_SKILL_SELECT_RESPONSE
+
+// Packet: 0x0444
+packetLen(0x0444, -1) // ZC_SIMPLE_CASH_POINT_ITEMLIST
+
+// Packet: 0x0445
+packetLen(0x0445, 12) // CZ_SIMPLE_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0446
+packetLen(0x0446, 14) // ZC_QUEST_NOTIFY_EFFECT
+
+// Packet: 0x0447
+packetLen(0x0447, 2) // CZ_BLOCKING_PLAY_CANCEL
+
+// Packet: 0x0448
+packetLen(0x0448, -1) // HC_CHARACTER_LIST
+
+// Packet: 0x0449
+packetLen(0x0449, 4) // ZC_HACKSH_ERROR_MSG
+
+// Packet: 0x044a
+packetLen(0x044a, 6) // CZ_CLIENT_VERSION
+
+// Packet: 0x044b
+packetLen(0x044b, 2) // CZ_CLOSE_SIMPLECASH_SHOP
+
+// Packet: 0x07d7
+packetLen(0x07d7, 8) // CZ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d8
+packetLen(0x07d8, 8) // ZC_REQ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d9
+packetLen(0x07d9, 268) // ZC_SHORTCUT_KEY_LIST_V2
+
+// Packet: 0x07da
+packetLen(0x07da, 6) // CZ_CHANGE_GROUP_MASTER
+
+// Packet: 0x07db
+packetLen(0x07db, 8) // ZC_HO_PAR_CHANGE
+
+// Packet: 0x07dc
+packetLen(0x07dc, 6) // CZ_SEEK_PARTY
+
+// Packet: 0x07dd
+packetLen(0x07dd, 54) // ZC_SEEK_PARTY
+
+// Packet: 0x07de
+packetLen(0x07de, 30) // CZ_SEEK_PARTY_MEMBER
+
+// Packet: 0x07df
+packetLen(0x07df, 54) // ZC_SEEK_PARTY_MEMBER
+
+// Packet: 0x07e0
+packetLen(0x07e0, 58) // ZC_ES_NOTI_MYINFO
+
+// Packet: 0x07e1
+packetLen(0x07e1, 15) // ZC_SKILLINFO_UPDATE2
+
+// Packet: 0x07e2
+packetLen(0x07e2, 8) // ZC_MSG_VALUE
+
+// Packet: 0x07e3
+packetLen(0x07e3, 6) // ZC_ITEMLISTWIN_OPEN
+
+// Packet: 0x07e4
+packetLen(0x07e4, -1) // CZ_ITEMLISTWIN_RES
+
+// Packet: 0x07e5
+packetLen(0x07e5, 4) // CH_ENTER_CHECKBOT
+
+// Packet: 0x07e6
+packetLen(0x07e6, 8) // ZC_MSG_SKILL
+
+// Packet: 0x07e7
+packetLen(0x07e7, 32) // CH_CHECKBOT
+
+// Packet: 0x07e8
+packetLen(0x07e8, -1) // HC_CHECKBOT
+
+// Packet: 0x07e9
+packetLen(0x07e9, 5) // HC_CHECKBOT_RESULT
+
+// Packet: 0x07ea
+packetLen(0x07ea, 2) // CZ_BATTLE_FIELD_LIST
+
+// Packet: 0x07eb
+packetLen(0x07eb, -1) // ZC_BATTLE_FIELD_LIST
+
+// Packet: 0x07ec
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+
+// Packet: 0x07ed
+packetLen(0x07ed, 10) // ZC_JOIN_BATTLE_FIELD
+
+// Packet: 0x07ee
+packetLen(0x07ee, 6) // CZ_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07ef
+packetLen(0x07ef, 8) // ZC_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07f0
+packetLen(0x07f0, 6) // CZ_REQ_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f1
+packetLen(0x07f1, 18) // ZC_ACK_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f2
+packetLen(0x07f2, 8) // ZC_BATTLE_NOTI_START_STEP
+
+// Packet: 0x07f3
+packetLen(0x07f3, 6) // ZC_BATTLE_JOIN_NOTI_DEFER
+
+// Packet: 0x07f4
+packetLen(0x07f4, 3) // ZC_BATTLE_JOIN_DISABLE_STATE
+
+// Packet: 0x07f5
+packetLen(0x07f5, 6) // CZ_GM_FULLSTRIP
+
+// Packet: 0x07f6
+packetLen(0x07f6, 14) // ZC_NOTIFY_EXP
+
+// Packet: 0x07f7
+packetLen(0x07f7, -1) // ZC_NOTIFY_MOVEENTRY7
+
+// Packet: 0x07f8
+packetLen(0x07f8, -1) // ZC_NOTIFY_NEWENTRY5
+
+// Packet: 0x07f9
+packetLen(0x07f9, -1) // ZC_NOTIFY_STANDENTRY5
+
+// Packet: 0x07fa
+packetLen(0x07fa, 8) // ZC_DELETE_ITEM_FROM_BODY
+
+// Packet: 0x07fb
+packetLen(0x07fb, 25) // ZC_USESKILL_ACK2
+
+// Packet: 0x07fc
+packetLen(0x07fc, 10) // ZC_CHANGE_GROUP_MASTER
+
+// Packet: 0x07fd
+packetLen(0x07fd, -1) // ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN
+
+// Packet: 0x07fe
+packetLen(0x07fe, 26) // ZC_PLAY_NPC_BGM
+
+// Packet: 0x0800
+packetLen(0x0800, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0801
+packetLen(0x0801, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0802
+packetLen(0x0802, 18) // CZ_PARTY_BOOKING_REQ_REGISTER
+
+// Packet: 0x0803
+packetLen(0x0803, 4) // ZC_PARTY_BOOKING_ACK_REGISTER
+
+// Packet: 0x0804
+packetLen(0x0804, 14) // CZ_PARTY_BOOKING_REQ_SEARCH
+
+// Packet: 0x0805
+packetLen(0x0805, -1) // ZC_PARTY_BOOKING_ACK_SEARCH
+
+// Packet: 0x0806
+packetLen(0x0806, 2) // CZ_PARTY_BOOKING_REQ_DELETE
+
+// Packet: 0x0807
+packetLen(0x0807, 4) // ZC_PARTY_BOOKING_ACK_DELETE
+
+// Packet: 0x0808
+packetLen(0x0808, 14) // CZ_PARTY_BOOKING_REQ_UPDATE
+
+// Packet: 0x0809
+packetLen(0x0809, 50) // ZC_PARTY_BOOKING_NOTIFY_INSERT
+
+// Packet: 0x080a
+packetLen(0x080a, 18) // ZC_PARTY_BOOKING_NOTIFY_UPDATE
+
+// Packet: 0x080b
+packetLen(0x080b, 6) // ZC_PARTY_BOOKING_NOTIFY_DELETE
+
+// Packet: 0x080c
+packetLen(0x080c, 2) // CZ_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080d
+packetLen(0x080d, 3) // ZC_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080e
+packetLen(0x080e, 14) // ZC_NOTIFY_HP_TO_GROUPM_R2
+
+// Packet: 0x080f
+packetLen(0x080f, 30) // ZC_ADD_EXCHANGE_ITEM2
+
+// Packet: 0x0810
+packetLen(0x0810, 3) // ZC_OPEN_BUYING_STORE
+
+// Packet: 0x0811
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+
+// Packet: 0x0812
+packetLen(0x0812, 8) // ZC_FAILED_OPEN_BUYING_STORE_TO_BUYER
+
+// Packet: 0x0813
+packetLen(0x0813, -1) // ZC_MYITEMLIST_BUYING_STORE
+
+// Packet: 0x0814
+packetLen(0x0814, 86) // ZC_BUYING_STORE_ENTRY
+
+// Packet: 0x0815
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+
+// Packet: 0x0816
+packetLen(0x0816, 6) // ZC_DISAPPEAR_BUYING_STORE_ENTRY
+
+// Packet: 0x0817
+packetLen(0x0817, 6) // CZ_REQ_CLICK_TO_BUYING_STORE
+
+// Packet: 0x0818
+packetLen(0x0818, -1) // ZC_ACK_ITEMLIST_BUYING_STORE
+
+// Packet: 0x0819
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+
+// Packet: 0x081a
+packetLen(0x081a, 4) // ZC_FAILED_TRADE_BUYING_STORE_TO_BUYER
+
+// Packet: 0x081b
+packetLen(0x081b, 12) // ZC_UPDATE_ITEM_FROM_BUYING_STORE
+
+// Packet: 0x081c
+packetLen(0x081c, 10) // ZC_ITEM_DELETE_BUYING_STORE
+
+// Packet: 0x081d
+packetLen(0x081d, 22) // ZC_EL_INIT
+
+// Packet: 0x081e
+packetLen(0x081e, 8) // ZC_EL_PAR_CHANGE
+
+// Packet: 0x081f
+packetLen(0x081f, -1) // ZC_BROADCAST4
+
+// Packet: 0x0820
+packetLen(0x0820, 11) // ZC_COSTUME_SPRITE_CHANGE
+
+// Packet: 0x0821
+packetLen(0x0821, 2) // AC_OTP_USER
+
+// Packet: 0x0822
+packetLen(0x0822, 9) // CA_OTP_AUTH_REQ
+
+// Packet: 0x0823
+packetLen(0x0823, -1) // AC_OTP_AUTH_ACK
+
+// Packet: 0x0824
+packetLen(0x0824, 8) // ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER
+
+// Packet: 0x0825
+packetLen(0x0825, -1) // CA_SSO_LOGIN_REQ
+
+// Packet: 0x0827
+packetLen(0x0827, 6) // CH_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0828
+packetLen(0x0828, 14) // HC_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0829
+packetLen(0x0829, 12) // CH_DELETE_CHAR3
+
+// Packet: 0x082a
+packetLen(0x082a, 10) // HC_DELETE_CHAR3
+
+// Packet: 0x082b
+packetLen(0x082b, 6) // CH_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082c
+packetLen(0x082c, 10) // HC_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082d
+packetLen(0x082d, -1) // HC_ACCEPT_ENTER2
+
+// Packet: 0x0835
+packetLen(0x0835, -1) // CZ_SEARCH_STORE_INFO
+
+// Packet: 0x0836
+packetLen(0x0836, -1) // ZC_SEARCH_STORE_INFO_ACK
+
+// Packet: 0x0837
+packetLen(0x0837, 3) // ZC_SEARCH_STORE_INFO_FAILED
+
+// Packet: 0x0838
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+
+// Packet: 0x0839
+packetLen(0x0839, 66) // ZC_ACK_BAN_GUILD_SSO
+
+// Packet: 0x083a
+packetLen(0x083a, 5) // ZC_OPEN_SEARCH_STORE_INFO
+
+// Packet: 0x083b
+packetLen(0x083b, 2) // CZ_CLOSE_SEARCH_STORE_INFO
+
+// Packet: 0x083c
+packetLen(0x083c, 14) // CZ_SSILIST_ITEM_CLICK
+
+// Packet: 0x083d
+packetLen(0x083d, 6) // ZC_SSILIST_ITEM_CLICK_ACK
+
+// Packet: 0x083e
+packetLen(0x083e, 26) // AC_REFUSE_LOGIN2
+
+// Packet: 0x0840
+packetLen(0x0840, -1) // HC_NOTIFY_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0841
+packetLen(0x0841, 4) // CH_SELECT_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0842
+packetLen(0x0842, 6) // CZ_RECALL_SSO
+
+// Packet: 0x0843
+packetLen(0x0843, 6) // CZ_REMOVE_AID_SSO
+
+// Packet: 0x0844
+packetLen(0x0844, 2) // CZ_SE_CASHSHOP_OPEN
+
+// Packet: 0x0845
+packetLen(0x0845, 10) // ZC_SE_CASHSHOP_OPEN
+
+// Packet: 0x0846
+packetLen(0x0846, 4) // CZ_REQ_SE_CASH_TAB_CODE
+
+// Packet: 0x0847
+packetLen(0x0847, -1) // ZC_ACK_SE_CASH_ITEM_LIST
+
+// Packet: 0x0848
+packetLen(0x0848, -1) // CZ_SE_PC_BUY_CASHITEM_LIST
+
+// Packet: 0x0849
+packetLen(0x0849, 16) // ZC_SE_PC_BUY_CASHITEM_RESULT
+
+// Packet: 0x084a
+packetLen(0x084a, 2) // CZ_SE_CASHSHOP_CLOSE
+
+// Packet: 0x084b
+packetLen(0x084b, 21) // ZC_ITEM_FALL_ENTRY4
+
+// Packet: 0x084c
+packetLen(0x084c, 10) // CZ_MACRO_USE_SKILL
+
+// Packet: 0x084d
+packetLen(0x084d, 10) // CZ_MACRO_USE_SKILL_TOGROUND
+
+// Packet: 0x084e
+packetLen(0x084e, 5) // CZ_MACRO_REQUEST_MOVE
+
+// Packet: 0x084f
+packetLen(0x084f, 6) // CZ_MACRO_ITEM_PICKUP
+
+// Packet: 0x0850
+packetLen(0x0850, 7) // CZ_MACRO_REQUEST_ACT
+
+// Packet: 0x0851
+packetLen(0x0851, -1) // ZC_GPK_DYNCODE
+
+// Packet: 0x0852
+packetLen(0x0852, 2) // CZ_GPK_DYNCODE_RELOAD
+
+// Packet: 0x0853
+packetLen(0x0853, -1) // ZC_GPK_AUTH
+
+// Packet: 0x0854
+packetLen(0x0854, -1) // CZ_GPK_AUTH
+
+// Packet: 0x0855
+packetLen(0x0855, 6) // ZC_MACRO_ITEMPICKUP_FAIL
+
+// Packet: 0x0856
+packetLen(0x0856, -1) // ZC_NOTIFY_MOVEENTRY8
+
+// Packet: 0x0857
+packetLen(0x0857, -1) // ZC_NOTIFY_STANDENTRY7
+
+// Packet: 0x0858
+packetLen(0x0858, -1) // ZC_NOTIFY_NEWENTRY6
+
+// Packet: 0x0859
+packetLen(0x0859, -1) // ZC_EQUIPWIN_MICROSCOPE2
+
+// Packet: 0x085a
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+
+// Packet: 0x085b
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+
+// Packet: 0x085c
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+
+// Packet: 0x085d
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+
+// Packet: 0x085e
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+
+// Packet: 0x085f
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+
+// Packet: 0x0860
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+
+// Packet: 0x0861
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+
+// Packet: 0x0862
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+
+// Packet: 0x0863
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+
+// Packet: 0x0864
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+
+// Packet: 0x0865
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+
+// Packet: 0x0866
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+
+// Packet: 0x0867
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+
+// Packet: 0x0868
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+
+// Packet: 0x0869
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+
+// Packet: 0x086a
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+
+// Packet: 0x086b
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+
+// Packet: 0x086c
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+
+// Packet: 0x086d
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+
+// Packet: 0x086e
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+
+// Packet: 0x086f
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+
+// Packet: 0x0870
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+
+// Packet: 0x0871
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+
+// Packet: 0x0872
+packetLen(0x0872, 2)
+
+// Packet: 0x0873
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+
+// Packet: 0x0874
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+
+// Packet: 0x0875
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+
+// Packet: 0x0876
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+
+// Packet: 0x0877
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+
+// Packet: 0x0878
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+
+// Packet: 0x0879
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+
+// Packet: 0x087a
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+
+// Packet: 0x087b
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+
+// Packet: 0x087c
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+
+// Packet: 0x087d
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+
+// Packet: 0x087e
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+
+// Packet: 0x087f
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+
+// Packet: 0x0880
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+
+// Packet: 0x0881
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+
+// Packet: 0x0882
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+
+// Packet: 0x0883
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+
+// Packet: 0x0884
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+
+// Packet: 0x0885
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+
+// Packet: 0x0886
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+
+// Packet: 0x0887
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+
+// Packet: 0x0888
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+
+// Packet: 0x0889
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+
+// Packet: 0x088a
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+
+// Packet: 0x088b
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+
+// Packet: 0x088c
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+
+// Packet: 0x088d
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+
+// Packet: 0x088e
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+
+// Packet: 0x088f
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+
+// Packet: 0x0890
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+
+// Packet: 0x0891
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+
+// Packet: 0x0892
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+
+// Packet: 0x0893
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+
+// Packet: 0x0894
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+
+// Packet: 0x0895
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+
+// Packet: 0x0896
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+
+// Packet: 0x0897
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+
+// Packet: 0x0898
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+
+// Packet: 0x0899
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+
+// Packet: 0x089a
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+
+// Packet: 0x089b
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+
+// Packet: 0x089c
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+
+// Packet: 0x089d
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+
+// Packet: 0x089e
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+
+// Packet: 0x089f
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+
+// Packet: 0x08a0
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+
+// Packet: 0x08a1
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+
+// Packet: 0x08a2
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+
+// Packet: 0x08a3
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+
+// Packet: 0x08a4
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+
+// Packet: 0x08a5
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+
+// Packet: 0x08a6
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+
+// Packet: 0x08a7
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+
+// Packet: 0x08a8
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+
+// Packet: 0x08a9
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+
+// Packet: 0x08aa
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+
+// Packet: 0x08ab
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+
+// Packet: 0x08ac
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+
+// Packet: 0x08ad
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+
+// Packet: 0x08af
+packetLen(0x08af, 10) // HC_WAITING_LOGIN
+
+// Packet: 0x08b0
+packetLen(0x08b0, 17) // CH_WAITING_LOGIN
+
+// Packet: 0x08b1
+packetLen(0x08b1, -1) // ZC_MCSTORE_NOTMOVEITEM_LIST
+
+// Packet: 0x08b2
+packetLen(0x08b2, -1) // AC_REALNAME_AUTH
+
+// Packet: 0x08b3
+packetLen(0x08b3, -1) // ZC_SHOWSCRIPT
+
+// Packet: 0x08b4
+packetLen(0x08b4, 2) // ZC_START_COLLECTION
+
+// Packet: 0x08b5
+packetLen(0x08b5, 6) // CZ_TRYCOLLECTION
+
+// Packet: 0x08b6
+packetLen(0x08b6, 3) // ZC_TRYCOLLECTION
+
+// Packet: 0x08b8
+packetLen(0x08b8, 10) // CH_SECOND_PASSWD_ACK
+
+// Packet: 0x08b9
+packetLen(0x08b9, 12) // HC_SECOND_PASSWD_LOGIN
+
+// Packet: 0x08ba
+packetLen(0x08ba, 10) // CH_MAKE_SECOND_PASSWD
+
+// Packet: 0x08bb
+packetLen(0x08bb, 8) // HC_MAKE_SECOND_PASSWD
+
+// Packet: 0x08bc
+packetLen(0x08bc, 10) // CH_DELETE_SECOND_PASSWD
+
+// Packet: 0x08bd
+packetLen(0x08bd, 8) // HC_DELETE_SECOND_PASSWD
+
+// Packet: 0x08be
+packetLen(0x08be, 14) // CH_EDIT_SECOND_PASSWD
+
+// Packet: 0x08bf
+packetLen(0x08bf, 8) // HC_EDIT_SECOND_PASSWD
+
+// Packet: 0x08c0
+packetLen(0x08c0, -1) // ZC_ACK_SE_CASH_ITEM_LIST2
+
+// Packet: 0x08c1
+packetLen(0x08c1, 2) // CZ_MACRO_START
+
+// Packet: 0x08c2
+packetLen(0x08c2, 2) // CZ_MACRO_STOP
+
+// Packet: 0x08c3
+packetLen(0x08c3, 10) // CH_NOT_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c4
+packetLen(0x08c4, 8) // HC_NOT_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c5
+packetLen(0x08c5, 6) // CH_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c6
+packetLen(0x08c6, 4) // HC_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c7
+packetLen(0x08c7, -1) // ZC_SKILL_ENTRY3
+
+// Packet: 0x08c8
+packetLen(0x08c8, 34) // ZC_NOTIFY_ACT3
+
+// Packet: 0x08c9
+packetLen(0x08c9, 2) // CZ_REQ_SCHEDULER_CASHITEM
+
+// Packet: 0x08ca
+packetLen(0x08ca, -1) // ZC_ACK_SCHEDULER_CASHITEM
+
+// Packet: 0x08cb
+packetLen(0x08cb, -1) // ZC_PERSONAL_INFOMATION
+
+// Packet: 0x08cc
+packetLen(0x08cc, 109) // CA_LOGIN5
+
+// Packet: 0x08cd
+packetLen(0x08cd, 10) // ZC_STOPMOVE_FORCE
+
+// Packet: 0x08ce
+packetLen(0x08ce, 2) // ZC_FAILED_GET_ITEM_FROM_ZONEDA
+
+// Packet: 0x08cf
+packetLen(0x08cf, 10) // ZC_SPIRITS_ATTRIBUTE
+
+// Packet: 0x08d0
+packetLen(0x08d0, 9) // ZC_REQ_WEAR_EQUIP_ACK2
+
+// Packet: 0x08d1
+packetLen(0x08d1, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK2
+
+// Packet: 0x08d2
+packetLen(0x08d2, 10) // ZC_FASTMOVE
+
+// Packet: 0x08d3
+packetLen(0x08d3, 10) // ZC_SE_CASHSHOP_UPDATE
+
+// Packet: 0x08d4
+packetLen(0x08d4, 8) // CH_REQ_CHANGE_CHARACTER_SLOT
+
+// Packet: 0x08d5
+packetLen(0x08d5, -1) // HC_ACK_CHANGE_CHARACTER_SLOT
+
+// Packet: 0x08d6
+packetLen(0x08d6, 6) // ZC_CLEAR_DIALOG
+
+// Packet: 0x08d7
+packetLen(0x08d7, 28) // CZ_REQ_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08d8
+packetLen(0x08d8, 27) // ZC_ACK_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08d9
+packetLen(0x08d9, 30) // ZC_NOTIFY_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08da
+packetLen(0x08da, 26) // CZ_REQ_ENTRY_QUEUE_CANCEL
+
+// Packet: 0x08db
+packetLen(0x08db, 27) // ZC_ACK_ENTRY_QUEUE_CANCEL
+
+// Packet: 0x08dc
+packetLen(0x08dc, 26) // ZC_NOTIFY_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08dd
+packetLen(0x08dd, 27) // CZ_REPLY_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08de
+packetLen(0x08de, 27) // ZC_REPLY_ACK_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08df
+packetLen(0x08df, 50) // ZC_NOTIFY_LOBBY_ADMISSION
+
+// Packet: 0x08e0
+packetLen(0x08e0, 51) // CZ_REPLY_LOBBY_ADMISSION
+
+// Packet: 0x08e1
+packetLen(0x08e1, 51) // ZC_REPLY_ACK_LOBBY_ADMISSION
+
+// Packet: 0x08e2
+packetLen(0x08e2, 27) // ZC_NAVIGATION_ACTIVE
+
+// Packet: 0x08e3
+packetLen(0x08e3, 157) // HC_UPDATE_CHARINFO
+
+// Packet: 0x08e4
+packetLen(0x08e4, 6) // AC_SHUTDOWN_INFO
+
+// Packet: 0x08fc
+packetLen(0x08fc, 30) // CH_REQ_CHANGE_CHARACTERNAME
+
+// Packet: 0x08fd
+packetLen(0x08fd, 6) // CH_ACK_CHANGE_CHARACTERNAME
+
+// Packet: 0x08fe
+packetLen(0x08fe, -1) // ZC_HUNTING_QUEST_INFO
+
+// Packet: 0x08ff
+packetLen(0x08ff, 24) // ZC_EFST_SET_ENTER
+
+// Packet: 0x0900
+packetLen(0x0900, -1) // ZC_INVENTORY_ITEMLIST_NORMAL
+
+// Packet: 0x0901
+packetLen(0x0901, -1) // ZC_INVENTORY_ITEMLIST_EQUIP
+
+// Packet: 0x0902
+packetLen(0x0902, -1) // ZC_CART_ITEMLIST_NORMAL
+
+// Packet: 0x0903
+packetLen(0x0903, -1) // ZC_CART_ITEMLIST_EQUIP
+
+// Packet: 0x0904
+packetLen(0x0904, -1) // ZC_STORE_ITEMLIST_NORMAL
+
+// Packet: 0x0905
+packetLen(0x0905, -1) // ZC_STORE_ITEMLIST_EQUIP
+
+// Packet: 0x0906
+packetLen(0x0906, -1) // ZC_MICROSCOPE
+
+// Packet: 0x0907
+packetLen(0x0907, 5) // CZ_INVENTORY_TAB
+
+// Packet: 0x0908
+packetLen(0x0908, 5) // ZC_INVENTORY_TAB
+
+// Packet: 0x090a
+packetLen(0x090a, 26) // CZ_REQ_ENTRY_QUEUE_RANKING
+
+// Packet: 0x090d
+packetLen(0x090d, -1) // ZC_PREMIUM_CAMPAIGN_INFO
+
+// Packet: 0x090e
+packetLen(0x090e, 2) // ZC_ENTRY_QUEUE_INIT
+
+// Packet: 0x090f
+packetLen(0x090f, -1) // ZC_NOTIFY_NEWENTRY7
+
+// Packet: 0x0910
+packetLen(0x0910, 10) // CZ_REQ_PARTY_NAME
+
+// Packet: 0x0911
+packetLen(0x0911, 30) // ZC_ACK_PARTY_NAME
+
+// Packet: 0x0912
+packetLen(0x0912, 10) // CZ_REQ_GUILD_NAME
+
+// Packet: 0x0913
+packetLen(0x0913, 30) // ZC_ACK_GUILD_NAME
+
+// Packet: 0x0914
+packetLen(0x0914, -1) // ZC_NOTIFY_MOVEENTRY9
+
+// Packet: 0x0915
+packetLen(0x0915, -1) // ZC_NOTIFY_STANDENTRY8
+
+// Packet: 0x0916
+packetLen(0x0916, 26) // CZ_REQ_JOIN_GUILD2
+
+// Packet: 0x0917
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+
+// Packet: 0x0918
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+
+// Packet: 0x0919
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+
+// Packet: 0x091a
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+
+// Packet: 0x091b
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+
+// Packet: 0x091c
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+
+// Packet: 0x091d
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+
+// Packet: 0x091e
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+
+// Packet: 0x091f
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+
+// Packet: 0x0920
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+
+// Packet: 0x0921
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+
+// Packet: 0x0922
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+
+// Packet: 0x0923
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+
+// Packet: 0x0924
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+
+// Packet: 0x0925
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+
+// Packet: 0x0926
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+
+// Packet: 0x0927
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+
+// Packet: 0x0928
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+
+// Packet: 0x0929
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+
+// Packet: 0x092a
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+
+// Packet: 0x092b
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+
+// Packet: 0x092c
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+
+// Packet: 0x092d
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+
+// Packet: 0x092e
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+
+// Packet: 0x092f
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+
+// Packet: 0x0930
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+
+// Packet: 0x0931
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+
+// Packet: 0x0932
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+
+// Packet: 0x0933
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+
+// Packet: 0x0934
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+
+// Packet: 0x0935
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+
+// Packet: 0x0936
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+
+// Packet: 0x0937
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+
+// Packet: 0x0938
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+
+// Packet: 0x0939
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+
+// Packet: 0x093a
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+
+// Packet: 0x093b
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+
+// Packet: 0x093c
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+
+// Packet: 0x093d
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+
+// Packet: 0x093e
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+
+// Packet: 0x093f
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+
+// Packet: 0x0940
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+
+// Packet: 0x0941
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+
+// Packet: 0x0942
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+
+// Packet: 0x0943
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+
+// Packet: 0x0944
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+
+// Packet: 0x0945
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+
+// Packet: 0x0946
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+
+// Packet: 0x0947
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+
+// Packet: 0x0948
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+
+// Packet: 0x0949
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+
+// Packet: 0x094a
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+
+// Packet: 0x094b
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+
+// Packet: 0x094c
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+
+// Packet: 0x094d
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+
+// Packet: 0x094e
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+
+// Packet: 0x094f
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+
+// Packet: 0x0950
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+
+// Packet: 0x0951
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+
+// Packet: 0x0952
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+
+// Packet: 0x0953
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+
+// Packet: 0x0954
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+
+// Packet: 0x0955
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+
+// Packet: 0x0956
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+
+// Packet: 0x0957
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+
+// Packet: 0x0958
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+
+// Packet: 0x0959
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+
+// Packet: 0x095a
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+
+// Packet: 0x095b
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+
+// Packet: 0x095c
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+
+// Packet: 0x095d
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+
+// Packet: 0x095e
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+
+// Packet: 0x095f
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+
+// Packet: 0x0960
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+
+// Packet: 0x0961
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+
+// Packet: 0x0962
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+
+// Packet: 0x0963
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+
+// Packet: 0x0964
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+
+// Packet: 0x0965
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+
+// Packet: 0x0966
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+
+// Packet: 0x0967
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+
+// Packet: 0x0968
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+
+// Packet: 0x0969
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+
+// Packet: 0x096a
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+
+// Packet: 0x096b
+packetLen(0x096b, 4) // ZC_PRNPC_STATE
+
+// Packet: 0x096c
+packetLen(0x096c, 6) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+
+// Packet: 0x096d
+packetLen(0x096d, -1) // ZC_MERGE_ITEM_OPEN
+
+// Packet: 0x096e
+packetLen(0x096e, -1) // CZ_REQ_MERGE_ITEM
+
+// Packet: 0x096f
+packetLen(0x096f, 7) // ZC_ACK_MERGE_ITEM
+
+// Packet: 0x0970
+packetLen(0x0970, 31) // CH_MAKE_CHAR_NOT_STATS
+
+// Packet: 0x0971
+packetLen(0x0971, 6) // ZC_PARTY_RECRUIT_REFUSE_VOLUNTEER_TO_PM
+
+// Packet: 0x0972
+packetLen(0x0972, -1) // ZC_SAY_DIALOG2
+
+// Packet: 0x0973
+packetLen(0x0973, 7) // ZC_WAIT_DIALOG2
+
+// Packet: 0x0974
+packetLen(0x0974, 2) // CZ_CANCEL_MERGE_ITEM
+
+// Packet: 0x0975
+packetLen(0x0975, -1) // ZC_STORE_ITEMLIST_NORMAL_V2
+
+// Packet: 0x0976
+packetLen(0x0976, -1) // ZC_STORE_ITEMLIST_EQUIP_V2
+
+// Packet: 0x0977
+packetLen(0x0977, 14) // ZC_HP_INFO
+
+// Packet: 0x0978
+packetLen(0x0978, 6) // CZ_REQ_BEFORE_WORLD_INFO
+
+// Packet: 0x0979
+packetLen(0x0979, 50) // ZC_ACK_BEFORE_WORLD_INFO
+
+// Packet: 0x097a
+packetLen(0x097a, -1) // ZC_ALL_QUEST_LIST2
+
+// Packet: 0x097b
+packetLen(0x097b, -1) // ZC_PERSONAL_INFOMATION2
+
+// Packet: 0x097c
+packetLen(0x097c, 4) // CZ_REQ_RANKING
+
+// Packet: 0x097d
+packetLen(0x097d, 288) // ZC_ACK_RANKING
+
+// Packet: 0x097e
+packetLen(0x097e, 12) // ZC_UPDATE_RANKING_POINT
+
+// Packet: 0x097f
+packetLen(0x097f, -1) // ZC_SELECTCART
+
+// Packet: 0x0980
+packetLen(0x0980, 7) // CZ_SELECTCART
+
+// Packet: 0x0981
+packetLen(0x0981, -1) // ZC_PERSONAL_INFOMATION_CHN
+
+// Packet: 0x0982
+packetLen(0x0982, 7) // ZC_FATIGUE_CHN
+
+// Packet: 0x0983
+packetLen(0x0983, 29) // ZC_MSG_STATE_CHANGE3
+
+// Packet: 0x0984
+packetLen(0x0984, 28) // ZC_EFST_SET_ENTER2
+
+// Packet: 0x0985
+packetLen(0x0985, -1) // ZC_SKILL_POSTDELAY_LIST2
+
+// Packet: 0x0986
+packetLen(0x0986, 10) // AC_SHUTDOWN_NOTIFY
+
+// Packet: 0x0987
+packetLen(0x0987, -1) // CA_LOGIN6
+
+// Packet: 0x0988
+packetLen(0x0988, 6) // ZC_NOTIFY_CLAN_CONNECTINFO
+
+// Packet: 0x0989
+packetLen(0x0989, 2) // ZC_ACK_CLAN_LEAVE
+
+// Packet: 0x098a
+packetLen(0x098a, -1) // ZC_CLANINFO
+
+// Packet: 0x098b
+packetLen(0x098b, 2) // AC_REQ_NEW_USER
+
+// Packet: 0x098c
+packetLen(0x098c, 4) // CA_ACK_NEW_USER
+
+// Packet: 0x098d
+packetLen(0x098d, -1) // CZ_CLAN_CHAT
+
+// Packet: 0x098e
+packetLen(0x098e, -1) // ZC_NOTIFY_CLAN_CHAT
+
+// Packet: 0x098f
+packetLen(0x098f, -1) // CH_DELETE_CHAR3_EXT
+
+// Packet: 0x0990
+packetLen(0x0990, 41) // ZC_ITEM_PICKUP_ACK_V5
+
+// Packet: 0x0991
+packetLen(0x0991, -1) // ZC_INVENTORY_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0992
+packetLen(0x0992, -1) // ZC_INVENTORY_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0993
+packetLen(0x0993, -1) // ZC_CART_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0994
+packetLen(0x0994, -1) // ZC_CART_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0995
+packetLen(0x0995, -1) // ZC_STORE_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0996
+packetLen(0x0996, -1) // ZC_STORE_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0997
+packetLen(0x0997, -1) // ZC_EQUIPWIN_MICROSCOPE_V5
+
+// Packet: 0x0998
+packetLen(0x0998, 8) // CZ_REQ_WEAR_EQUIP_V5
+
+// Packet: 0x0999
+packetLen(0x0999, 11) // ZC_ACK_WEAR_EQUIP_V5
+
+// Packet: 0x099a
+packetLen(0x099a, 9) // ZC_ACK_TAKEOFF_EQUIP_V5
+
+// Packet: 0x099b
+packetLen(0x099b, 8) // ZC_MAPPROPERTY_R2
+
+// Packet: 0x099c
+packetLen(0x099c, 6) // CH_REQ_CHARINFO_PER_PAGE
+
+// Packet: 0x099d
+packetLen(0x099d, -1) // HC_ACK_CHARINFO_PER_PAGE
+
+// Packet: 0x099e
+packetLen(0x099e, 12) // HC_QUEUE_ORDER
+
+// Packet: 0x099f
+packetLen(0x099f, -1) // ZC_SKILL_ENTRY4
+
+// Packet: 0x09a0
+packetLen(0x09a0, 6) // HC_CHARLIST_NOTIFY
+
+// Packet: 0x09a1
+packetLen(0x09a1, 2) // CH_CHARLIST_REQ
+
+// Packet: 0x09a2
+packetLen(0x09a2, 6) // AC_REQ_MOBILE_OTP
+
+// Packet: 0x09a3
+packetLen(0x09a3, -1) // CA_ACK_MOBILE_OTP
+
+// Packet: 0x09a4
+packetLen(0x09a4, 18) // ZC_DISPATCH_TIMING_INFO_CHN
+
+// Packet: 0x09a5
+packetLen(0x09a5, 7) // AC_REFUSE_LOGIN3
+
+// Packet: 0x09a6
+packetLen(0x09a6, 12) // ZC_BANKING_CHECK
+
+// Packet: 0x09a7
+packetLen(0x09a7, 10) // CZ_REQ_BANKING_DEPOSIT
+
+// Packet: 0x09a8
+packetLen(0x09a8, 16) // ZC_ACK_BANKING_DEPOSIT
+
+// Packet: 0x09a9
+packetLen(0x09a9, 10) // CZ_REQ_BANKING_WITHDRAW
+
+// Packet: 0x09aa
+packetLen(0x09aa, 16) // ZC_ACK_BANKING_WITHDRAW
+
+// Packet: 0x09ab
+packetLen(0x09ab, 6) // CZ_REQ_BANKING_CHECK
+
+// Packet: 0x09ac
+packetLen(0x09ac, -1) // CZ_REQ_CASH_BARGAIN_SALE_ITEM_INFO
+
+// Packet: 0x09ad
+packetLen(0x09ad, 12) // ZC_ACK_CASH_BARGAIN_SALE_ITEM_INFO
+
+// Packet: 0x09ae
+packetLen(0x09ae, 19) // CZ_REQ_APPLY_BARGAIN_SALE_ITEM
+
+// Packet: 0x09af
+packetLen(0x09af, 4) // ZC_ACK_APPLY_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b0
+packetLen(0x09b0, 10) // CZ_REQ_REMOVE_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b1
+packetLen(0x09b1, 4) // ZC_ACK_REMOVE_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b2
+packetLen(0x09b2, 10) // ZC_NOTIFY_BARGAIN_SALE_SELLING
+
+// Packet: 0x09b3
+packetLen(0x09b3, 6) // ZC_NOTIFY_BARGAIN_SALE_CLOSE
+
+// Packet: 0x09b4
+packetLen(0x09b4, 6) // CZ_OPEN_BARGAIN_SALE_TOOL
+
+// Packet: 0x09b5
+packetLen(0x09b5, 2) // ZC_OPEN_BARGAIN_SALE_TOOL
+
+// Packet: 0x09b6
+packetLen(0x09b6, 6) // CZ_REQ_OPEN_BANKING
+
+// Packet: 0x09b7
+packetLen(0x09b7, 4) // ZC_ACK_OPEN_BANKING
+
+// Packet: 0x09b8
+packetLen(0x09b8, 6) // CZ_REQ_CLOSE_BANKING
+
+// Packet: 0x09b9
+packetLen(0x09b9, 4) // ZC_ACK_CLOSE_BANKING
+
+// Packet: 0x09ba
+packetLen(0x09ba, 2) // CZ_REQ_OPEN_GUILD_STORAGE
+
+// Packet: 0x09bb
+packetLen(0x09bb, 6) // ZC_ACK_OPEN_GUILD_STORAGE
+
+// Packet: 0x09bc
+packetLen(0x09bc, 6) // CZ_CLOSE_BARGAIN_SALE_TOOL
+
+// Packet: 0x09bd
+packetLen(0x09bd, 2) // ZC_CLOSE_BARGAIN_SALE_TOOL
+
+// Packet: 0x09be
+packetLen(0x09be, 2) // CZ_REQ_CLOSE_GUILD_STORAGE
+
+// Packet: 0x09bf
+packetLen(0x09bf, 4) // ZC_ACK_CLOSE_GUILD_STORAGE
+
+// Packet: 0x09c1
+packetLen(0x09c1, 10) // ZC_C_MARKERINFO
+
+// Packet: 0x09c2
+packetLen(0x09c2, -1) // HC_SECRETSCAN_DATA
+
+// Packet: 0x09c3
+packetLen(0x09c3, 10) // CZ_REQ_COUNT_BARGAIN_SALE_ITEM
+
+// Packet: 0x09c4
+packetLen(0x09c4, 10) // ZC_ACK_COUNT_BARGAIN_SALE_ITEM
+
+// Packet: 0x09c5
+packetLen(0x09c5, 1042) // CS_LOGIN_QUERY
+
+// Packet: 0x09c6
+packetLen(0x09c6, -1) // SC_LOGIN_ANSWER
+
+// Packet: 0x09c7
+packetLen(0x09c7, 18) // SC_LOGIN_ERROR
+
+// Packet: 0x09c8
+packetLen(0x09c8, -1) // CA_LOGIN_OTP
+
+// Packet: 0x09c9
+packetLen(0x09c9, -1) // SC_SOCT
+
+// Packet: 0x09ca
+packetLen(0x09ca, -1) // ZC_SKILL_ENTRY5
+
+// Packet: 0x09cb
+packetLen(0x09cb, 17) // ZC_USE_SKILL2
+
+// Packet: 0x09cc
+packetLen(0x09cc, -1) // ZC_SECRETSCAN_DATA
+
+// Packet: 0x09cd
+packetLen(0x09cd, 8) // ZC_MSG_COLOR
+
+// Packet: 0x09ce
+packetLen(0x09ce, 102) // CZ_ITEM_CREATE_EX
+
+// Packet: 0x09cf
+packetLen(0x09cf, -1) // ZC_NPROTECTGAMEGUARDCSAUTH
+
+// Packet: 0x09d0
+packetLen(0x09d0, -1) // CZ_NPROTECTGAMEGUARDCSAUTH
+
+// Packet: 0x09d1
+packetLen(0x09d1, 14) // ZC_PROGRESS_ACTOR
+
+// Packet: 0x09d2
+packetLen(0x09d2, -1) // ZC_GUILDSTORAGE_ITEMLIST_NORMAL_V5
+
+// Packet: 0x09d3
+packetLen(0x09d3, -1) // ZC_GUILDSTORAGE_ITEMLIST_EQUIP_V5
+
+// Packet: 0x09d4
+packetLen(0x09d4, 2) // CZ_NPC_TRADE_QUIT
+
+// Packet: 0x09d5
+packetLen(0x09d5, -1) // ZC_NPC_MARKET_OPEN
+
+// Packet: 0x09d6
+packetLen(0x09d6, -1) // CZ_NPC_MARKET_PURCHASE
+
+// Packet: 0x09d7
+packetLen(0x09d7, -1) // ZC_NPC_MARKET_PURCHASE_RESULT
+
+// Packet: 0x09d8
+packetLen(0x09d8, 2) // CZ_NPC_MARKET_CLOSE
+
+// Packet: 0x09d9
+packetLen(0x09d9, 4) // CZ_REQ_GUILDSTORAGE_LOG
+
+// Packet: 0x09da
+packetLen(0x09da, -1) // ZC_ACK_GUILDSTORAGE_LOG
+
+// Packet: 0x09db
+packetLen(0x09db, -1) // ZC_NOTIFY_MOVEENTRY10
+
+// Packet: 0x09dc
+packetLen(0x09dc, -1) // ZC_NOTIFY_NEWENTRY10
+
+// Packet: 0x09dd
+packetLen(0x09dd, -1) // ZC_NOTIFY_STANDENTRY10
+
+// Packet: 0x09de
+packetLen(0x09de, -1) // ZC_WHISPER02
+
+// Packet: 0x09df
+packetLen(0x09df, 7) // ZC_ACK_WHISPER02
+
+// Packet: 0x09e0
+packetLen(0x09e0, -1) // SC_LOGIN_ANSWER_WITH_ID
+
+// Packet: 0x09e1
+packetLen(0x09e1, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_GUILDSTORAGE
+
+// Packet: 0x09e2
+packetLen(0x09e2, 8) // CZ_MOVE_ITEM_FROM_GUILDSTORAGE_TO_BODY
+
+// Packet: 0x09e3
+packetLen(0x09e3, 8) // CZ_MOVE_ITEM_FROM_CART_TO_GUILDSTORAGE
+
+// Packet: 0x09e4
+packetLen(0x09e4, 8) // CZ_MOVE_ITEM_FROM_GUILDSTORAGE_TO_CART
+
+// Packet: 0x09e5
+packetLen(0x09e5, 18) // ZC_DELETEITEM_FROM_MCSTORE2
+
+// Packet: 0x09e6
+packetLen(0x09e6, 24) // ZC_UPDATE_ITEM_FROM_BUYING_STORE2
+
+// Packet: 0x09e7
+packetLen(0x09e7, 3) // ZC_NOTIFY_UNREAD_RODEX
+
+// Packet: 0x09e8
+packetLen(0x09e8, 11) // CZ_OPEN_RODEXBOX
+
+// Packet: 0x09e9
+packetLen(0x09e9, 2) // CZ_CLOSE_RODEXBOX
+
+// Packet: 0x09ea
+packetLen(0x09ea, 11) // CZ_REQ_READ_RODEX
+
+// Packet: 0x09eb
+packetLen(0x09eb, -1) // ZC_ACK_READ_RODEX
+
+// Packet: 0x09ec
+packetLen(0x09ec, -1) // CZ_REQ_SEND_RODEX
+
+// Packet: 0x09ed
+packetLen(0x09ed, 3) // ZC_ACK_SEND_RODEX
+
+// Packet: 0x09ee
+packetLen(0x09ee, 11) // CZ_REQ_NEXT_RODEX
+
+// Packet: 0x09ef
+packetLen(0x09ef, 11) // CZ_REQ_REFRESH_RODEX
+
+// Packet: 0x09f0
+packetLen(0x09f0, -1) // ZC_ACK_RODEX_LIST
+
+// Packet: 0x09f1
+packetLen(0x09f1, 11) // CZ_REQ_ZENY_FROM_RODEX
+
+// Packet: 0x09f2
+packetLen(0x09f2, 12) // ZC_ACK_ZENY_FROM_RODEX
+
+// Packet: 0x09f3
+packetLen(0x09f3, 11) // CZ_REQ_ITEM_FROM_RODEX
+
+// Packet: 0x09f4
+packetLen(0x09f4, 12) // ZC_ACK_ITEM_FROM_RODEX
+
+// Packet: 0x09f5
+packetLen(0x09f5, 11) // CZ_REQ_DELETE_RODEX
+
+// Packet: 0x09f6
+packetLen(0x09f6, 11) // ZC_ACK_DELETE_RODEX
+
+// Packet: 0x09f7
+packetLen(0x09f7, 77) // ZC_PROPERTY_HOMUN_2
+
+// Packet: 0x09f8
+packetLen(0x09f8, -1) // ZC_ALL_QUEST_LIST3
+
+// Packet: 0x09f9
+packetLen(0x09f9, 143) // ZC_ADD_QUEST_EX
+
+// Packet: 0x09fa
+packetLen(0x09fa, -1) // ZC_UPDATE_MISSION_HUNT_EX
+
+// Packet: 0x09fb
+packetLen(0x09fb, -1) // CZ_PET_EVOLUTION
+
+// Packet: 0x09fc
+packetLen(0x09fc, 6) // ZC_PET_EVOLUTION_RESULT
+
+// Packet: 0x09fd
+packetLen(0x09fd, -1) // ZC_NOTIFY_MOVEENTRY11
+
+// Packet: 0x09fe
+packetLen(0x09fe, -1) // ZC_NOTIFY_NEWENTRY11
+
+// Packet: 0x09ff
+packetLen(0x09ff, -1) // ZC_NOTIFY_STANDENTRY11
+
+// Packet: 0x0a00
+packetLen(0x0a00, 269) // ZC_SHORTCUT_KEY_LIST_V3
+
+// Packet: 0x0a01
+packetLen(0x0a01, 3) // CZ_SHORTCUTKEYBAR_ROTATE
+
+// Packet: 0x0a02
+packetLen(0x0a02, 4) // ZC_DRESSROOM_OPEN
+
+// Packet: 0x0a03
+packetLen(0x0a03, 2) // CZ_REQ_CANCEL_WRITE_RODEX
+
+// Packet: 0x0a04
+packetLen(0x0a04, 6) // CZ_REQ_ADD_ITEM_RODEX
+
+// Packet: 0x0a05
+packetLen(0x0a05, 63) // ZC_ACK_ADD_ITEM_RODEX
+
+// Packet: 0x0a06
+packetLen(0x0a06, 6) // CZ_REQ_REMOVE_RODEX_ITEM
+
+// Packet: 0x0a07
+packetLen(0x0a07, 9) // ZC_ACK_REMOVE_RODEX_ITEM
+
+// Packet: 0x0a08
+packetLen(0x0a08, 26) // CZ_REQ_OPEN_WRITE_RODEX
+
+// Packet: 0x0a09
+packetLen(0x0a09, 55) // ZC_ADD_EXCHANGE_ITEM3
+
+// Packet: 0x0a0a
+packetLen(0x0a0a, 57) // ZC_ADD_ITEM_TO_STORE3
+
+// Packet: 0x0a0b
+packetLen(0x0a0b, 57) // ZC_ADD_ITEM_TO_CART3
+
+// Packet: 0x0a0c
+packetLen(0x0a0c, 66) // ZC_ITEM_PICKUP_ACK_V6
+
+// Packet: 0x0a0d
+packetLen(0x0a0d, -1) // ZC_INVENTORY_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a0e
+packetLen(0x0a0e, 14) // ZC_BATTLEFIELD_NOTIFY_HP2
+
+// Packet: 0x0a0f
+packetLen(0x0a0f, -1) // ZC_CART_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a10
+packetLen(0x0a10, -1) // ZC_STORE_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a11
+packetLen(0x0a11, -1) // ZC_GUILDSTORAGE_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a12
+packetLen(0x0a12, 27) // ZC_ACK_OPEN_WRITE_RODEX
+
+// Packet: 0x0a13
+packetLen(0x0a13, 26) // CZ_CHECK_RECEIVE_CHARACTER_NAME
+
+// Packet: 0x0a14
+packetLen(0x0a14, 10) // ZC_CHECK_RECEIVE_CHARACTER_NAME
+
+// Packet: 0x0a15
+packetLen(0x0a15, 12) // ZC_GOLDPCCAFE_POINT
+
+// Packet: 0x0a16
+packetLen(0x0a16, 26) // CZ_DYNAMICNPC_CREATE_REQUEST
+
+// Packet: 0x0a17
+packetLen(0x0a17, 6) // ZC_DYNAMICNPC_CREATE_RESULT
+
+// Packet: 0x0a18
+packetLen(0x0a18, 14) // ZC_ACCEPT_ENTER3
+
+// Packet: 0x0a19
+packetLen(0x0a19, 2) // CZ_REQ_OPEN_ROULETTE
+
+// Packet: 0x0a1a
+packetLen(0x0a1a, 25) // ZC_ACK_OPEN_ROULETTE
+
+// Packet: 0x0a1b
+packetLen(0x0a1b, 2) // CZ_REQ_ROULETTE_INFO
+
+// Packet: 0x0a1c
+packetLen(0x0a1c, -1) // ZC_ACK_ROULEITTE_INFO
+
+// Packet: 0x0a1d
+packetLen(0x0a1d, 2) // CZ_REQ_CLOSE_ROULETTE
+
+// Packet: 0x0a1e
+packetLen(0x0a1e, 3) // ZC_ACK_CLOSE_ROULETTE
+
+// Packet: 0x0a1f
+packetLen(0x0a1f, 2) // CZ_REQ_GENERATE_ROULETTE
+
+// Packet: 0x0a20
+packetLen(0x0a20, 23) // ZC_ACK_GENERATE_ROULETTE
+
+// Packet: 0x0a21
+packetLen(0x0a21, 3) // CZ_RECV_ROULETTE_ITEM
+
+// Packet: 0x0a22
+packetLen(0x0a22, 7) // ZC_RECV_ROULETTE_ITEM
+
+// Packet: 0x0a23
+packetLen(0x0a23, -1) // ZC_ALL_ACH_LIST
+
+// Packet: 0x0a24
+packetLen(0x0a24, 66) // ZC_ACH_UPDATE
+
+// Packet: 0x0a25
+packetLen(0x0a25, 6) // CZ_REQ_ACH_REWARD
+
+// Packet: 0x0a26
+packetLen(0x0a26, 7) // ZC_REQ_ACH_REWARD_ACK
+
+// Packet: 0x0a27
+packetLen(0x0a27, 8) // ZC_RECOVERY2
+
+// Packet: 0x0a28
+packetLen(0x0a28, 3) // ZC_ACK_OPENSTORE2
+
+// Packet: 0x0a29
+packetLen(0x0a29, 6) // ZC_REQ_AU_BOT
+
+// Packet: 0x0a2a
+packetLen(0x0a2a, 6) // CZ_ACK_AU_BOT
+
+// Packet: 0x0a2b
+packetLen(0x0a2b, 14) // ZC_SE_CASHSHOP_OPEN2
+
+// Packet: 0x0a2c
+packetLen(0x0a2c, 12) // ZC_SE_PC_BUY_TAIWANCASHITEM_RESULT
+
+// Packet: 0x0a2d
+packetLen(0x0a2d, -1) // ZC_EQUIPWIN_MICROSCOPE_V6
+
+// Packet: 0x0a2e
+packetLen(0x0a2e, 6) // CZ_REQ_CHANGE_TITLE
+
+// Packet: 0x0a2f
+packetLen(0x0a2f, 7) // ZC_ACK_CHANGE_TITLE
+
+// Packet: 0x0a30
+packetLen(0x0a30, 106) // ZC_ACK_REQNAMEALL2
+
+// Packet: 0x0a31
+packetLen(0x0a31, -1) // ZC_RESULT_PACKAGE_ITEM_TEST
+
+// Packet: 0x0a32
+packetLen(0x0a32, 2) // ZC_OPEN_RODEX_THROUGH_NPC_ONLY
+
+// Packet: 0x0a33
+packetLen(0x0a33, 7) // ZC_UPDATE_ROULETTE_COIN
+
+// Packet: 0x0a34
+packetLen(0x0a34, 6) // ZC_UPDATE_TAIWANCASH
+
+// Packet: 0x0a35
+packetLen(0x0a35, 4) // CZ_REQ_ONECLICK_ITEMIDENTIFY
+
+// Packet: 0x0a36
+packetLen(0x0a36, 7) // ZC_HP_INFO_TINY
+
+// Packet: 0x0a37
+packetLen(0x0a37, 69) // ZC_ITEM_PICKUP_ACK_V7
+
+// Packet: 0x0a38
+packetLen(0x0a38, 3) // ZC_OPEN_UI
+
+// Packet: 0x0a39
+packetLen(0x0a39, 36) // CH_MAKE_CHAR
+
+// Packet: 0x0a3a
+packetLen(0x0a3a, 12)
+
+// Packet: 0x0a3b
+packetLen(0x0a3b, -1) // ZC_CUSTOM_HAT_EFFECT
+
+// Packet: 0x0a3c
+packetLen(0x0a3c, -1)
+
+// Packet: 0x0a3d
+packetLen(0x0a3d, 20)
+
+// Packet: 0x0a3e
+packetLen(0x0a3e, -1)
+
+// Packet: 0x0a3f
+packetLen(0x0a3f, 11)
+
+// Packet: 0x0a40
+packetLen(0x0a40, 11)
+
+// Packet: 0x0a41
+packetLen(0x0a41, 18) // ZC_AOE_EFFECT_SKILL
+
+// Packet: 0x0a42
+packetLen(0x0a42, 43)
+
+// Packet: 0x0a43
+packetLen(0x0a43, 85) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0a44
+packetLen(0x0a44, -1) // ZC_GROUP_LIST
+
+// Packet: 0x0a46
+packetLen(0x0a46, 14)
+
+// Packet: 0x0a47
+packetLen(0x0a47, 3) // ZC_STYLE_CHANGE_RES
+
+// Packet: 0x0a48
+packetLen(0x0a48, 2)
+
+// Packet: 0x0a49
+packetLen(0x0a49, 22) // CZ_PRIVATE_AIRSHIP_REQUEST
+
+// Packet: 0x0a4a
+packetLen(0x0a4a, 6) // ZC_PRIVATE_AIRSHIP_RESPONSE
+
+// Packet: 0x0a4b
+packetLen(0x0a4b, 22) // ZC_AIRSHIP_MAPMOVE
+
+// Packet: 0x0a4c
+packetLen(0x0a4c, 28) // ZC_AIRSHIP_SERVERMOVE
+
+// Packet: 0x0a4d
+packetLen(0x0a4d, -1)
+
+// Packet: 0x0a4e
+packetLen(0x0a4e, 6)
+
+// Packet: 0x0a4f
+packetLen(0x0a4f, -1)
+
+// Packet: 0x0a50
+packetLen(0x0a50, 4)
+
+// Packet: 0x0a51
+packetLen(0x0a51, 34) // ZC_CHECK_RECEIVE_CHARACTER_NAME
+
+// Packet: 0x0a52
+packetLen(0x0a52, 20)
+
+// Packet: 0x0a53
+packetLen(0x0a53, 10)
+
+// Packet: 0x0a54
+packetLen(0x0a54, -1)
+
+// Packet: 0x0a55
+packetLen(0x0a55, 2)
+
+// Packet: 0x0a56
+packetLen(0x0a56, 6)
+
+// Packet: 0x0a57
+packetLen(0x0a57, 6)
+
+// Packet: 0x0a58
+packetLen(0x0a58, 8)
+
+// Packet: 0x0a59
+packetLen(0x0a59, -1)
+
+// Packet: 0x0a5a
+packetLen(0x0a5a, 2)
+
+// Packet: 0x0a5b
+packetLen(0x0a5b, 7)
+
+// Packet: 0x0a5c
+packetLen(0x0a5c, 18)
+
+// Packet: 0x0a5d
+packetLen(0x0a5d, 6)
+
+// Packet: 0x0a68
+packetLen(0x0a68, 3) // CZ_REQ_OPEN_UI
+
+// Packet: 0x0a69
+packetLen(0x0a69, 6)
+
+// Packet: 0x0a6a
+packetLen(0x0a6a, 12)
+
+// Packet: 0x0a6b
+packetLen(0x0a6b, -1)
+
+// Packet: 0x0a6c
+packetLen(0x0a6c, 7)
+
+// Packet: 0x0a6d
+packetLen(0x0a6d, -1)
+
+// Packet: 0x0a6e
+packetLen(0x0a6e, -1) // CZ_REQ_SEND_RODEX
+
+// Packet: 0x0a6f
+packetLen(0x0a6f, -1) // ZC_FORMATSTRING_MSG_COLOR
+
+// Packet: 0x0a70
+packetLen(0x0a70, 2)
+
+// Packet: 0x0a71
+packetLen(0x0a71, -1)
+
+// Packet: 0x0a72
+packetLen(0x0a72, 61)
+
+// Packet: 0x0a73
+packetLen(0x0a73, 2)
+
+// Packet: 0x0a74
+packetLen(0x0a74, 8)
+
+// Packet: 0x0a76
+packetLen(0x0a76, 80)
+
+// Packet: 0x0a77
+packetLen(0x0a77, 15)
+
+// Packet: 0x0a78
+packetLen(0x0a78, 15)
+
+// Packet: 0x0a79
+packetLen(0x0a79, -1)
+
+// Packet: 0x0a7b
+packetLen(0x0a7b, -1)
+
+// Packet: 0x0a7c
+packetLen(0x0a7c, -1)
+
+// Packet: 0x0a7d
+packetLen(0x0a7d, -1) // ZC_ACK_RODEX_LIST
+
+// Packet: 0x0a7e
+packetLen(0x0a7e, -1) // ZC_OFFLINE_STORE_OWNER_ITEMS_READY
+
+// Packet: 0x0a7f
+packetLen(0x0a7f, -1) // CZ_OFFLINE_STORE_CREATE
+
+// Packet: 0x0a80
+packetLen(0x0a80, 6)
+
+// Packet: 0x0a81
+packetLen(0x0a81, 4)
+
+// Packet: 0x0a82
+packetLen(0x0a82, 46)
+
+// Packet: 0x0a83
+packetLen(0x0a83, 46)
+
+// Packet: 0x0a84
+packetLen(0x0a84, 94) // ZC_GUILD_INFO
+
+// Packet: 0x0a85
+packetLen(0x0a85, 82)
+
+// Packet: 0x0a86
+packetLen(0x0a86, -1)
+
+// Packet: 0x0a87
+packetLen(0x0a87, -1)
+
+// Packet: 0x0a88
+packetLen(0x0a88, 2)
+
+// Packet: 0x0a89
+packetLen(0x0a89, 61) // ZC_NOTIFY_OFFLINE_STORE
+
+// Packet: 0x0a8a
+packetLen(0x0a8a, 6) // ZC_OFFLINE_STORE_VANISH
+
+// Packet: 0x0a8b
+packetLen(0x0a8b, 2)
+
+// Packet: 0x0a8c
+packetLen(0x0a8c, 2)
+
+// Packet: 0x0a8d
+packetLen(0x0a8d, -1) // ZC_OFFLINE_STORE_OWNER_ITEMS
+
+// Packet: 0x0a8e
+packetLen(0x0a8e, 2)
+
+// Packet: 0x0a8f
+packetLen(0x0a8f, 2)
+
+// Packet: 0x0a90
+packetLen(0x0a90, 3)
+
+// Packet: 0x0a91
+packetLen(0x0a91, -1) // ZC_OFFLINE_STORE_ITEMS
+
+// Packet: 0x0a92
+packetLen(0x0a92, -1)
+
+// Packet: 0x0a93
+packetLen(0x0a93, 3)
+
+// Packet: 0x0a94
+packetLen(0x0a94, 2)
+
+// Packet: 0x0a95
+packetLen(0x0a95, 4)
+
+// Packet: 0x0a96
+packetLen(0x0a96, 61) // ZC_ADD_EXCHANGE_ITEM4
+
+// Packet: 0x0a97
+packetLen(0x0a97, 8) // CZ_ALT_EQUIPMENT_EQUIP
+
+// Packet: 0x0a98
+packetLen(0x0a98, 10) // ZC_ALT_EQUIPMENT_EQUIP
+
+// Packet: 0x0a99
+packetLen(0x0a99, 4)
+
+// Packet: 0x0a9a
+packetLen(0x0a9a, 10) // ZC_ALT_EQUIPMENT_REMOVE
+
+// Packet: 0x0a9b
+packetLen(0x0a9b, -1) // ZC_ALT_EQUIPMENT_ITEMS
+
+// Packet: 0x0a9c
+packetLen(0x0a9c, 2)
+
+// Packet: 0x0a9d
+packetLen(0x0a9d, 4)
+
+// Packet: 0x0a9e
+packetLen(0x0a9e, 2)
+
+// Packet: 0x0a9f
+packetLen(0x0a9f, 2)
+
+// Packet: 0x0aa0
+packetLen(0x0aa0, 2) // ZC_REFINE_OPEN_WINDOW
+
+// Packet: 0x0aa1
+packetLen(0x0aa1, 4) // CZ_REFINE_ADD_ITEM
+
+// Packet: 0x0aa2
+packetLen(0x0aa2, -1) // ZC_REFINE_ADD_ITEM
+
+// Packet: 0x0aa3
+packetLen(0x0aa3, 9) // CZ_REFINE_ITEM_REQUEST
+
+// Packet: 0x0aa4
+packetLen(0x0aa4, 2) // CZ_REFINE_WINDOW_CLOSE
+
+// Packet: 0x0aa5
+packetLen(0x0aa5, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0aa6
+packetLen(0x0aa6, 36) // ZC_MEMBER_ADD
+
+// Packet: 0x0aa7
+packetLen(0x0aa7, 6) // ZC_INVENTORY_MOVE_FAILED
+
+// Packet: 0x0aa8
+packetLen(0x0aa8, 5)
+
+// Packet: 0x0aa9
+packetLen(0x0aa9, -1)
+
+// Packet: 0x0aaa
+packetLen(0x0aaa, -1)
+
+// Packet: 0x0aab
+packetLen(0x0aab, -1)
+
+// Packet: 0x0aac
+packetLen(0x0aac, 69)
+
+// Packet: 0x0aad
+packetLen(0x0aad, 51)
+
+// Packet: 0x0aae
+packetLen(0x0aae, 2)
+
+// Packet: 0x0aaf
+packetLen(0x0aaf, 6)
+
+// Packet: 0x0ab0
+packetLen(0x0ab0, 6)
+
+// Packet: 0x0ab1
+packetLen(0x0ab1, 14)
+
+// Packet: 0x0ab2
+packetLen(0x0ab2, 7) // ZC_GROUP_ISALIVE
+
+// Packet: 0x0ab3
+packetLen(0x0ab3, 19)
+
+// Packet: 0x0ab4
+packetLen(0x0ab4, 6)
+
+// Packet: 0x0ab5
+packetLen(0x0ab5, 2)
+
+// Packet: 0x0ab6
+packetLen(0x0ab6, 8)
+
+// Packet: 0x0ab7
+packetLen(0x0ab7, 4)
+
+// Packet: 0x0ab8
+packetLen(0x0ab8, 2)
+
+// Packet: 0x0ab9
+packetLen(0x0ab9, 47) // ZC_ITEM_PREVIEW
+
+// Packet: 0x0aba
+packetLen(0x0aba, 2)
+
+// Packet: 0x0abb
+packetLen(0x0abb, 2)
+
+// Packet: 0x0abc
+packetLen(0x0abc, -1)
+
+// Packet: 0x0abd
+packetLen(0x0abd, 10) // ZC_PARTY_MEMBER_JOB_LEVEL
+
+// Packet: 0x0abe
+packetLen(0x0abe, -1) // ZC_WARPLIST
+
+// Packet: 0x0abf
+packetLen(0x0abf, -1)
+
+// Packet: 0x0ac0
+packetLen(0x0ac0, 26) // CZ_OPEN_RODEXBOX
+
+// Packet: 0x0ac1
+packetLen(0x0ac1, 26) // CZ_REQ_REFRESH_RODEX
+
+// Packet: 0x0ac2
+packetLen(0x0ac2, -1) // ZC_ACK_RODEX_LIST
+
+// Packet: 0x0ac3
+packetLen(0x0ac3, 2)
+
+// Packet: 0x0ac4
+packetLen(0x0ac4, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x0ac5
+packetLen(0x0ac5, 156) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0ac6
+packetLen(0x0ac6, 156)
+
+// Packet: 0x0ac7
+packetLen(0x0ac7, 156) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0ac8
+packetLen(0x0ac8, 2) // ZC_UNKNOWN_CLEAN_ITEMS_LISTS
+
+// Packet: 0x0ac9
+packetLen(0x0ac9, -1)
+
+// Packet: 0x0aca
+packetLen(0x0aca, 3)
+
+// Packet: 0x0acb
+packetLen(0x0acb, 12) // ZC_PAR_CHANGE
+
+// Packet: 0x0acc
+packetLen(0x0acc, 18) // ZC_NOTIFY_EXP
+
+// Packet: 0x0acd
+packetLen(0x0acd, 23)
+
+// Packet: 0x0ace
+packetLen(0x0ace, 4)
+
+// Packet: 0x0acf
+packetLen(0x0acf, 68) // CA_LOGIN_OTP
+
+// Packet: 0x0ad0
+packetLen(0x0ad0, 11) // CA_OTP_CODE
+
+// Packet: 0x0ad1
+packetLen(0x0ad1, -1)
+
+// Packet: 0x0ad2
+packetLen(0x0ad2, 30)
+
+// Packet: 0x0ad3
+packetLen(0x0ad3, -1)
+
+// Packet: 0x0ad4
+packetLen(0x0ad4, -1)
+
+// Packet: 0x0ad5
+packetLen(0x0ad5, 2)
+
+// Packet: 0x0ad6
+packetLen(0x0ad6, 2)
+
+// Packet: 0x0ad7
+packetLen(0x0ad7, 8)
+
+// Packet: 0x0ad8
+packetLen(0x0ad8, 8)
+
+// Packet: 0x0ad9
+packetLen(0x0ad9, -1)
+
+// Packet: 0x0ada
+packetLen(0x0ada, 32) // ZC_REFINE_STATUS
+
+// Packet: 0x0adb
+packetLen(0x0adb, -1)
+
+// Packet: 0x0adc
+packetLen(0x0adc, 6) // ZC_EQUIPWIN_OTHER
+
+// Packet: 0x0add
+packetLen(0x0add, 24) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x0ade
+packetLen(0x0ade, 6) // ZC_OVERWEIGHT_PERCENT
+
+// Packet: 0x0adf
+packetLen(0x0adf, 58) // ZC_ACK_REQNAME
+
+// Packet: 0x0ae0
+packetLen(0x0ae0, 30)
+
+// Packet: 0x0ae1
+packetLen(0x0ae1, 28)
+
+// Packet: 0x0ae2
+packetLen(0x0ae2, 7) // ZC_OPEN_UI
+
+// Packet: 0x0ae3
+packetLen(0x0ae3, -1) // AC_LOGIN_OTP
+
+// Packet: 0x0ae4
+packetLen(0x0ae4, 89) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0ae5
+packetLen(0x0ae5, -1) // ZC_GROUP_LIST
+
+// Packet: 0x0ae6
+packetLen(0x0ae6, 10)
+
+// Packet: 0x0ae7
+packetLen(0x0ae7, 38)
+
+// Packet: 0x0ae8
+packetLen(0x0ae8, 2)
+
+// Packet: 0x0ae9
+packetLen(0x0ae9, 13) // HC_SECOND_PASSWD_LOGIN
+
+// Packet: 0x0aec
+packetLen(0x0aec, 2)
+
+// Packet: 0x0aed
+packetLen(0x0aed, 2)
+
+// Packet: 0x0aee
+packetLen(0x0aee, 2)
+
+// Packet: 0x0aef
+packetLen(0x0aef, 2) // CZ_ATTENDANCE_REWARD_REQUEST
+
+// Packet: 0x0af0
+packetLen(0x0af0, 10) // ZC_UI_ACTION
+
+// Packet: 0x0af2
+packetLen(0x0af2, 40)
+
+// Packet: 0x0af3
+packetLen(0x0af3, -1)
+
+// Packet: 0x0af4
+packetLen(0x0af4, 11) // CZ_USE_SKILL_TOGROUND
+
+// Packet: 0x0af5
+packetLen(0x0af5, 3)
+
+// Packet: 0x0af6
+packetLen(0x0af6, 88)
+
+// Packet: 0x0af7
+packetLen(0x0af7, 32) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0af8
+packetLen(0x0af8, 11)
+
+// Packet: 0x0af9
+packetLen(0x0af9, 6)
+
+// Packet: 0x0afa
+packetLen(0x0afa, 54)
+
+// Packet: 0x0afb
+packetLen(0x0afb, -1) // ZC_AUTOSPELLLIST
+
+// Packet: 0x0afc
+packetLen(0x0afc, 16)
+
+// Packet: 0x0afd
+packetLen(0x0afd, -1) // ZC_GUILD_POSITION
+
+// Packet: 0x0afe
+packetLen(0x0afe, -1) // ZC_UPDATE_MISSION_HUNT_EX
+
+// Packet: 0x0aff
+packetLen(0x0aff, -1) // ZC_ALL_QUEST_LIST4
+
+// Packet: 0x0b00
+packetLen(0x0b00, 8)
+
+// Packet: 0x0b01
+packetLen(0x0b01, 56)
+
+// Packet: 0x0b02
+packetLen(0x0b02, 26) // AC_REFUSE_LOGIN4
+
+// Packet: 0x0b03
+packetLen(0x0b03, -1) // ZC_EQUIPWIN_MICROSCOPE_V7
+
+// Packet: 0x0b04
+packetLen(0x0b04, 80)
+
+// Packet: 0x0b05
+packetLen(0x0b05, 63) // ZC_OFFLINE_STORE_VISIBLE
+
+// Packet: 0x0b07
+packetLen(0x0b07, -1)
+
+// Packet: 0x0b08
+packetLen(0x0b08, -1) // ZC_INVENTORY_START
+
+// Packet: 0x0b09
+packetLen(0x0b09, -1) // ZC_STORE_ITEMLIST_NORMAL_V6
+
+// Packet: 0x0b0a
+packetLen(0x0b0a, -1) // ZC_STORE_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0b0b
+packetLen(0x0b0b, 4) // ZC_INVENTORY_END
+
+// Packet: 0x0b0c
+packetLen(0x0b0c, 155) // ZC_ADD_QUEST_EX
+
+// Packet: 0x0b0d
+packetLen(0x0b0d, 10) // ZC_REMOVE_EFFECT
+
+// Packet: 0x0b0e
+packetLen(0x0b0e, -1) // ZC_NPC_BARTER_OPEN
+
+// Packet: 0x0b0f
+packetLen(0x0b0f, -1) // CZ_NPC_BARTER_PURCHASE
+
+// Packet: 0x0b10
+packetLen(0x0b10, 10) // CZ_START_USE_SKILL
+
+// Packet: 0x0b11
+packetLen(0x0b11, 4) // CZ_STOP_USE_SKILL
+
+// Packet: 0x0b12
+packetLen(0x0b12, 2) // CZ_NPC_BARTER_CLOSE
+
+// Packet: 0x0b13
+packetLen(0x0b13, 48) // ZC_ITEM_PREVIEW
+
+// Packet: 0x0b14
+packetLen(0x0b14, 2) // CZ_INVENTORY_EXPAND
+
+// Packet: 0x0b15
+packetLen(0x0b15, 7) // ZC_ACK_INVENTORY_EXPAND
+
+// Packet: 0x0b16
+packetLen(0x0b16, 2) // CZ_INVENTORY_EXPAND_CONFIRMED
+
+// Packet: 0x0b17
+packetLen(0x0b17, 3) // ZC_ACK_INVENTORY_EXPAND_RESULT
+
+// Packet: 0x0b18
+packetLen(0x0b18, 4) // ZC_INVENTORY_EXPANSION_INFO
+
+// Packet: 0x0b19
+packetLen(0x0b19, 2) // CZ_INVENTORY_EXPAND_REJECTED
+
+// Packet: 0x0b1a
+packetLen(0x0b1a, 29)
+
+
+#endif /* COMMON_PACKETS2019_LEN_MAIN_H */
diff --git a/src/common/packets/packets2019_len_re.h b/src/common/packets/packets2019_len_re.h
new file mode 100644
index 000000000..134102bac
--- /dev/null
+++ b/src/common/packets/packets2019_len_re.h
@@ -0,0 +1,4387 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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
+ * 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 COMMON_PACKETS2019_LEN_RE_H
+#define COMMON_PACKETS2019_LEN_RE_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+packetLen(0x006d, 157) // HC_ACCEPT_MAKECHAR
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+packetLen(0x0072, 22) // CZ_ENTER
+
+// Packet: 0x0073
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+
+// Packet: 0x0078
+packetLen(0x0078, 55) // ZC_NOTIFY_STANDENTRY
+
+// Packet: 0x0079
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+
+// Packet: 0x007a
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+
+// Packet: 0x007b
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+
+// Packet: 0x007c
+packetLen(0x007c, 44) // ZC_NOTIFY_STANDENTRY_NPC
+
+// Packet: 0x007d
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+
+// Packet: 0x007e
+packetLen(0x007e, 105) // CZ_REQUEST_TIME
+
+// Packet: 0x007f
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+
+// Packet: 0x0080
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+packetLen(0x0085, 10) // CZ_REQUEST_MOVE
+
+// Packet: 0x0086
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+
+// Packet: 0x0087
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+
+// Packet: 0x0088
+packetLen(0x0088, 10) // ZC_STOPMOVE
+
+// Packet: 0x0089
+packetLen(0x0089, 11) // CZ_REQUEST_ACT
+
+// Packet: 0x008a
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+packetLen(0x008c, 14)
+
+// Packet: 0x008d
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+
+// Packet: 0x008e
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+
+// Packet: 0x0090
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+
+// Packet: 0x0091
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+
+// Packet: 0x0092
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0093
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+
+// Packet: 0x0094
+packetLen(0x0094, 19) // CZ_REQNAME
+
+// Packet: 0x0095
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+
+// Packet: 0x0096
+packetLen(0x0096, -1) // CZ_WHISPER
+
+// Packet: 0x0097
+packetLen(0x0097, -1) // ZC_WHISPER
+
+// Packet: 0x0098
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+
+// Packet: 0x0099
+packetLen(0x0099, -1) // CZ_BROADCAST
+
+// Packet: 0x009a
+packetLen(0x009a, -1) // ZC_BROADCAST
+
+// Packet: 0x009b
+packetLen(0x009b, 34) // CZ_CHANGE_DIRECTION
+
+// Packet: 0x009c
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+
+// Packet: 0x009d
+packetLen(0x009d, 19) // ZC_ITEM_ENTRY
+
+// Packet: 0x009e
+packetLen(0x009e, 19) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x009f
+packetLen(0x009f, 20) // CZ_ITEM_PICKUP
+
+// Packet: 0x00a0
+packetLen(0x00a0, 33) // ZC_ITEM_PICKUP_ACK
+
+// Packet: 0x00a1
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+
+// Packet: 0x00a2
+packetLen(0x00a2, 14) // CZ_ITEM_THROW
+
+// Packet: 0x00a3
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+
+// Packet: 0x00a4
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a5
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+
+// Packet: 0x00a6
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a7
+packetLen(0x00a7, 9)
+
+// Packet: 0x00a8
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+
+// Packet: 0x00a9
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+
+// Packet: 0x00aa
+packetLen(0x00aa, 9) // ZC_REQ_WEAR_EQUIP_ACK
+
+// Packet: 0x00ab
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+
+// Packet: 0x00ac
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+
+// Packet: 0x00b0
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+
+// Packet: 0x00b1
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+
+// Packet: 0x00b2
+packetLen(0x00b2, 3) // CZ_RESTART
+
+// Packet: 0x00b3
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+
+// Packet: 0x00b4
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+
+// Packet: 0x00b5
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+
+// Packet: 0x00b6
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+
+// Packet: 0x00b7
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+
+// Packet: 0x00b8
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+
+// Packet: 0x00b9
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+
+// Packet: 0x00bc
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+
+// Packet: 0x00bd
+packetLen(0x00bd, 44) // ZC_STATUS
+
+// Packet: 0x00be
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+
+// Packet: 0x00bf
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+
+// Packet: 0x00c0
+packetLen(0x00c0, 7) // ZC_EMOTION
+
+// Packet: 0x00c1
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+
+// Packet: 0x00c2
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+
+// Packet: 0x00c3
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+
+// Packet: 0x00c4
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+
+// Packet: 0x00c5
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+
+// Packet: 0x00c6
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c7
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+
+// Packet: 0x00c8
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c9
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+
+// Packet: 0x00ca
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+
+// Packet: 0x00cf
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+
+// Packet: 0x00d0
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+
+// Packet: 0x00d1
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+
+// Packet: 0x00d2
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+
+// Packet: 0x00d3
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+
+// Packet: 0x00d6
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+
+// Packet: 0x00d7
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+
+// Packet: 0x00d8
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+
+// Packet: 0x00d9
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+
+// Packet: 0x00da
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+
+// Packet: 0x00db
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+
+// Packet: 0x00dc
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+
+// Packet: 0x00dd
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+
+// Packet: 0x00de
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+
+// Packet: 0x00df
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+
+// Packet: 0x00e0
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+
+// Packet: 0x00e1
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+
+// Packet: 0x00e2
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+
+// Packet: 0x00e3
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+
+// Packet: 0x00e4
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e5
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e6
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e7
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e8
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00e9
+packetLen(0x00e9, 29) // ZC_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00ea
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00eb
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ec
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ed
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ee
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ef
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f0
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+
+// Packet: 0x00f3
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+
+// Packet: 0x00f4
+packetLen(0x00f4, 31) // ZC_ADD_ITEM_TO_STORE
+
+// Packet: 0x00f5
+packetLen(0x00f5, 11) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+
+// Packet: 0x00f6
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+
+// Packet: 0x00f7
+packetLen(0x00f7, 17) // CZ_REQUEST_TIME
+
+// Packet: 0x00f8
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+
+// Packet: 0x00f9
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+
+// Packet: 0x00fa
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+
+// Packet: 0x00fb
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+
+// Packet: 0x00fc
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+
+// Packet: 0x00fd
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+
+// Packet: 0x00fe
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+
+// Packet: 0x00ff
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+
+// Packet: 0x0100
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+
+// Packet: 0x0101
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+
+// Packet: 0x0102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+
+// Packet: 0x0103
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+
+// Packet: 0x0104
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0105
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+
+// Packet: 0x0106
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+
+// Packet: 0x0107
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+
+// Packet: 0x0108
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+
+// Packet: 0x0109
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+
+// Packet: 0x010a
+packetLen(0x010a, 6) // ZC_MVP_GETTING_ITEM
+
+// Packet: 0x010b
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+
+// Packet: 0x010c
+packetLen(0x010c, 6) // ZC_MVP
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+
+// Packet: 0x010f
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+
+// Packet: 0x0110
+packetLen(0x0110, 14) // ZC_ACK_TOUSESKILL
+
+// Packet: 0x0111
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+
+// Packet: 0x0112
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+
+// Packet: 0x0113
+packetLen(0x0113, 25) // CZ_USE_SKILL
+
+// Packet: 0x0114
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+packetLen(0x0116, 17) // CZ_USE_SKILL_TOGROUND
+
+// Packet: 0x0117
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+
+// Packet: 0x0118
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+
+// Packet: 0x0119
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+
+// Packet: 0x011a
+packetLen(0x011a, 15) // ZC_USE_SKILL
+
+// Packet: 0x011b
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+
+// Packet: 0x011c
+packetLen(0x011c, 68) // ZC_WARPLIST
+
+// Packet: 0x011d
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+
+// Packet: 0x011e
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+
+// Packet: 0x011f
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+
+// Packet: 0x0120
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+
+// Packet: 0x0121
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+
+// Packet: 0x0122
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+
+// Packet: 0x0123
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+
+// Packet: 0x0124
+packetLen(0x0124, 31) // ZC_ADD_ITEM_TO_CART
+
+// Packet: 0x0125
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+
+// Packet: 0x0126
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+
+// Packet: 0x0127
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+
+// Packet: 0x0128
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+
+// Packet: 0x0129
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+
+// Packet: 0x012a
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+
+// Packet: 0x012d
+packetLen(0x012d, 4) // ZC_OPENSTORE
+
+// Packet: 0x012e
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+
+// Packet: 0x0131
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+
+// Packet: 0x0132
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+
+// Packet: 0x0133
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0134
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0135
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+
+// Packet: 0x0136
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+
+// Packet: 0x0137
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+
+// Packet: 0x013a
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+
+// Packet: 0x013b
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+
+// Packet: 0x013c
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+
+// Packet: 0x013d
+packetLen(0x013d, 6) // ZC_RECOVERY
+
+// Packet: 0x013e
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+
+// Packet: 0x013f
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+
+// Packet: 0x0140
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+
+// Packet: 0x0141
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+
+// Packet: 0x0142
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+
+// Packet: 0x0143
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+
+// Packet: 0x0144
+packetLen(0x0144, 23) // ZC_COMPASS
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+
+// Packet: 0x0147
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+
+// Packet: 0x0148
+packetLen(0x0148, 8) // ZC_RESURRECTION
+
+// Packet: 0x0149
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+
+// Packet: 0x014d
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0155
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+
+// Packet: 0x015a
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+
+// Packet: 0x015b
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+
+// Packet: 0x015c
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+
+// Packet: 0x0161
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0162
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+
+// Packet: 0x0163
+packetLen(0x0163, -1) // ZC_BAN_LIST
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+
+// Packet: 0x0166
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+
+// Packet: 0x0167
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+
+// Packet: 0x0168
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+
+// Packet: 0x0169
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+
+// Packet: 0x016a
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+
+// Packet: 0x016b
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+
+// Packet: 0x016c
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+
+// Packet: 0x016d
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+
+// Packet: 0x016e
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+
+// Packet: 0x016f
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+
+// Packet: 0x0170
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+
+// Packet: 0x0171
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+
+// Packet: 0x0172
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+
+// Packet: 0x0178
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+
+// Packet: 0x0179
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+
+// Packet: 0x017a
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017b
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017c
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+
+// Packet: 0x017d
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+
+// Packet: 0x017e
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+
+// Packet: 0x017f
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+
+// Packet: 0x0189
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+
+// Packet: 0x018a
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+
+// Packet: 0x018b
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+
+// Packet: 0x018c
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+
+// Packet: 0x018d
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+
+// Packet: 0x018e
+packetLen(0x018e, 18) // CZ_REQMAKINGITEM
+
+// Packet: 0x018f
+packetLen(0x018f, 8) // ZC_ACK_REQMAKINGITEM
+
+// Packet: 0x0190
+packetLen(0x0190, 23) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+packetLen(0x0193, 2) // CZ_REQNAME_BYGID
+
+// Packet: 0x0194
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0195
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+
+// Packet: 0x0196
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+
+// Packet: 0x019a
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+
+// Packet: 0x019b
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+
+// Packet: 0x019c
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+
+// Packet: 0x019d
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a0
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a1
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+
+// Packet: 0x01a2
+packetLen(0x01a2, 37) // ZC_PROPERTY_PET
+
+// Packet: 0x01a3
+packetLen(0x01a3, 7) // ZC_FEED_PET
+
+// Packet: 0x01a4
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+
+// Packet: 0x01a7
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+packetLen(0x01aa, 10) // ZC_PET_ACT
+
+// Packet: 0x01ab
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+
+// Packet: 0x01ac
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+
+// Packet: 0x01ad
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+
+// Packet: 0x01ae
+packetLen(0x01ae, 6) // CZ_REQ_MAKINGARROW
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+
+// Packet: 0x01b3
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+packetLen(0x01b9, 6) // ZC_DISPEL
+
+// Packet: 0x01ba
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+
+// Packet: 0x01bb
+packetLen(0x01bb, 26) // CZ_SHIFT
+
+// Packet: 0x01bc
+packetLen(0x01bc, 26) // CZ_RECALL
+
+// Packet: 0x01bd
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+
+// Packet: 0x01c4
+packetLen(0x01c4, 32) // ZC_ADD_ITEM_TO_STORE2
+
+// Packet: 0x01c5
+packetLen(0x01c5, 32) // ZC_ADD_ITEM_TO_CART2
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+packetLen(0x01c8, 15) // ZC_USE_ITEM_ACK2
+
+// Packet: 0x01c9
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+
+// Packet: 0x01ca
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+
+// Packet: 0x01ce
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+
+// Packet: 0x01cf
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+
+// Packet: 0x01d0
+packetLen(0x01d0, 8) // ZC_SPIRITS
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+
+// Packet: 0x01d5
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+
+// Packet: 0x01d6
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+
+// Packet: 0x01d7
+packetLen(0x01d7, 15) // ZC_SPRITE_CHANGE2
+
+// Packet: 0x01d8
+packetLen(0x01d8, 58) // ZC_NOTIFY_STANDENTRY2
+
+// Packet: 0x01d9
+packetLen(0x01d9, 57) // ZC_NOTIFY_NEWENTRY2
+
+// Packet: 0x01da
+packetLen(0x01da, 64) // ZC_NOTIFY_MOVEENTRY2
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+packetLen(0x01e7, 2) // CZ_DORIDORI
+
+// Packet: 0x01e8
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+
+// Packet: 0x01e9
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+
+// Packet: 0x01ea
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+
+// Packet: 0x01eb
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+
+// Packet: 0x01ee
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+
+// Packet: 0x01ef
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+
+// Packet: 0x01f0
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+
+// Packet: 0x01f3
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+
+// Packet: 0x01f4
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+
+// Packet: 0x01f5
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+
+// Packet: 0x01f6
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+
+// Packet: 0x01f7
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+
+// Packet: 0x01f8
+packetLen(0x01f8, 2) // ZC_START_BABY
+
+// Packet: 0x01f9
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+
+// Packet: 0x01fa
+packetLen(0x01fa, 48) // CA_LOGIN3
+
+// Packet: 0x01fb
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+
+// Packet: 0x01fc
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+
+// Packet: 0x01fd
+packetLen(0x01fd, 25) // CZ_REQ_ITEMREPAIR
+
+// Packet: 0x01fe
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+
+// Packet: 0x01ff
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+
+// Packet: 0x0200
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+
+// Packet: 0x0201
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+
+// Packet: 0x0202
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+
+// Packet: 0x0203
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+
+// Packet: 0x0204
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+
+// Packet: 0x0205
+packetLen(0x0205, 26) // ZC_DIVORCE
+
+// Packet: 0x0206
+packetLen(0x0206, 35) // ZC_FRIENDS_STATE
+
+// Packet: 0x0207
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+
+// Packet: 0x0208
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+
+// Packet: 0x0209
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+
+// Packet: 0x020a
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+
+// Packet: 0x020d
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+
+// Packet: 0x020e
+packetLen(0x020e, 32) // ZC_STARSKILL
+
+// Packet: 0x020f
+packetLen(0x020f, 10) // CZ_REQ_PVPPOINT
+
+// Packet: 0x0210
+packetLen(0x0210, 22) // ZC_ACK_PVPPOINT
+
+// Packet: 0x0212
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+
+// Packet: 0x0213
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+
+// Packet: 0x0214
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+
+// Packet: 0x0215
+packetLen(0x0215, 6) // ZC_SKILLMSG
+
+// Packet: 0x0216
+packetLen(0x0216, 6) // ZC_BABYMSG
+
+// Packet: 0x0217
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+
+// Packet: 0x0218
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+
+// Packet: 0x0219
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+
+// Packet: 0x021a
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+
+// Packet: 0x021b
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+
+// Packet: 0x021c
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+
+// Packet: 0x021d
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+
+// Packet: 0x021e
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+
+// Packet: 0x021f
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+
+// Packet: 0x0220
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+
+// Packet: 0x0221
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+
+// Packet: 0x0222
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+
+// Packet: 0x0223
+packetLen(0x0223, 10) // ZC_ACK_WEAPONREFINE
+
+// Packet: 0x0224
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+
+// Packet: 0x0225
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+
+// Packet: 0x0226
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+
+// Packet: 0x0227
+packetLen(0x0227, 18) // ZC_GAME_GUARD
+
+// Packet: 0x0228
+packetLen(0x0228, 18) // CZ_ACK_GAME_GUARD
+
+// Packet: 0x0229
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+
+// Packet: 0x022a
+packetLen(0x022a, 62) // ZC_NOTIFY_STANDENTRY3
+
+// Packet: 0x022b
+packetLen(0x022b, 61) // ZC_NOTIFY_NEWENTRY3
+
+// Packet: 0x022c
+packetLen(0x022c, 69) // ZC_NOTIFY_MOVEENTRY3
+
+// Packet: 0x022d
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+
+// Packet: 0x022e
+packetLen(0x022e, 73) // ZC_PROPERTY_HOMUN
+
+// Packet: 0x022f
+packetLen(0x022f, 7) // ZC_FEED_MER
+
+// Packet: 0x0230
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+
+// Packet: 0x0231
+packetLen(0x0231, 26) // CZ_RENAME_MER
+
+// Packet: 0x0232
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+
+// Packet: 0x0233
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+
+// Packet: 0x0234
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+
+// Packet: 0x0235
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+
+// Packet: 0x0236
+packetLen(0x0236, 10) // ZC_KILLER_POINT
+
+// Packet: 0x0237
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+
+// Packet: 0x0238
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+
+// Packet: 0x0239
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+
+// Packet: 0x023a
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+
+// Packet: 0x023b
+packetLen(0x023b, 36) // CZ_ACK_STORE_PASSWORD
+
+// Packet: 0x023c
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+
+// Packet: 0x023d
+packetLen(0x023d, 6) // AC_EVENT_RESULT
+
+// Packet: 0x023e
+packetLen(0x023e, 8) // HC_REQUEST_CHARACTER_PASSWORD
+
+// Packet: 0x023f
+packetLen(0x023f, 2) // CZ_MAIL_GET_LIST
+
+// Packet: 0x0240
+packetLen(0x0240, -1) // ZC_MAIL_REQ_GET_LIST
+
+// Packet: 0x0241
+packetLen(0x0241, 6) // CZ_MAIL_OPEN
+
+// Packet: 0x0242
+packetLen(0x0242, -1) // ZC_MAIL_REQ_OPEN
+
+// Packet: 0x0243
+packetLen(0x0243, 6) // CZ_MAIL_DELETE
+
+// Packet: 0x0244
+packetLen(0x0244, 6) // CZ_MAIL_GET_ITEM
+
+// Packet: 0x0245
+packetLen(0x0245, 3) // ZC_MAIL_REQ_GET_ITEM
+
+// Packet: 0x0246
+packetLen(0x0246, 4) // CZ_MAIL_RESET_ITEM
+
+// Packet: 0x0247
+packetLen(0x0247, 8) // CZ_MAIL_ADD_ITEM
+
+// Packet: 0x0248
+packetLen(0x0248, -1) // CZ_MAIL_SEND
+
+// Packet: 0x0249
+packetLen(0x0249, 3) // ZC_MAIL_REQ_SEND
+
+// Packet: 0x024a
+packetLen(0x024a, 70) // ZC_MAIL_RECEIVE
+
+// Packet: 0x024b
+packetLen(0x024b, 4) // CZ_AUCTION_CREATE
+
+// Packet: 0x024c
+packetLen(0x024c, 8) // CZ_AUCTION_ADD_ITEM
+
+// Packet: 0x024d
+packetLen(0x024d, 12) // CZ_AUCTION_ADD
+
+// Packet: 0x024e
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+
+// Packet: 0x024f
+packetLen(0x024f, 10) // CZ_AUCTION_BUY
+
+// Packet: 0x0250
+packetLen(0x0250, 3) // ZC_AUCTION_RESULT
+
+// Packet: 0x0251
+packetLen(0x0251, 34) // CZ_AUCTION_ITEM_SEARCH
+
+// Packet: 0x0252
+packetLen(0x0252, -1) // ZC_AUCTION_ITEM_REQ_SEARCH
+
+// Packet: 0x0253
+packetLen(0x0253, 3) // ZC_STARPLACE
+
+// Packet: 0x0254
+packetLen(0x0254, 3) // CZ_AGREE_STARPLACE
+
+// Packet: 0x0255
+packetLen(0x0255, 5) // ZC_ACK_MAIL_ADD_ITEM
+
+// Packet: 0x0256
+packetLen(0x0256, 5) // ZC_ACK_AUCTION_ADD_ITEM
+
+// Packet: 0x0257
+packetLen(0x0257, 8) // ZC_ACK_MAIL_DELETE
+
+// Packet: 0x0258
+packetLen(0x0258, 2) // CA_REQ_GAME_GUARD_CHECK
+
+// Packet: 0x0259
+packetLen(0x0259, 3) // AC_ACK_GAME_GUARD
+
+// Packet: 0x025a
+packetLen(0x025a, -1) // ZC_MAKINGITEM_LIST
+
+// Packet: 0x025b
+packetLen(0x025b, 8) // CZ_REQ_MAKINGITEM
+
+// Packet: 0x025c
+packetLen(0x025c, 4) // CZ_AUCTION_REQ_MY_INFO
+
+// Packet: 0x025d
+packetLen(0x025d, 6) // CZ_AUCTION_REQ_MY_SELL_STOP
+
+// Packet: 0x025e
+packetLen(0x025e, 4) // ZC_AUCTION_ACK_MY_SELL_STOP
+
+// Packet: 0x025f
+packetLen(0x025f, 6) // ZC_AUCTION_WINDOWS
+
+// Packet: 0x0260
+packetLen(0x0260, 6) // ZC_MAIL_WINDOWS
+
+// Packet: 0x0261
+packetLen(0x0261, 11) // AC_REQ_LOGIN_OLDEKEY
+
+// Packet: 0x0262
+packetLen(0x0262, 11) // AC_REQ_LOGIN_NEWEKEY
+
+// Packet: 0x0263
+packetLen(0x0263, 11) // AC_REQ_LOGIN_CARDPASS
+
+// Packet: 0x0264
+packetLen(0x0264, 20) // CA_ACK_LOGIN_OLDEKEY
+
+// Packet: 0x0265
+packetLen(0x0265, 20) // CA_ACK_LOGIN_NEWEKEY
+
+// Packet: 0x0266
+packetLen(0x0266, 30) // CA_ACK_LOGIN_CARDPASS
+
+// Packet: 0x0267
+packetLen(0x0267, 4) // AC_ACK_EKEY_FAIL_NOTEXIST
+
+// Packet: 0x0268
+packetLen(0x0268, 4) // AC_ACK_EKEY_FAIL_NOTUSESEKEY
+
+// Packet: 0x0269
+packetLen(0x0269, 4) // AC_ACK_EKEY_FAIL_NOTUSEDEKEY
+
+// Packet: 0x026a
+packetLen(0x026a, 4) // AC_ACK_EKEY_FAIL_AUTHREFUSE
+
+// Packet: 0x026b
+packetLen(0x026b, 4) // AC_ACK_EKEY_FAIL_INPUTEKEY
+
+// Packet: 0x026c
+packetLen(0x026c, 4) // AC_ACK_EKEY_FAIL_NOTICE
+
+// Packet: 0x026d
+packetLen(0x026d, 4) // AC_ACK_EKEY_FAIL_NEEDCARDPASS
+
+// Packet: 0x026f
+packetLen(0x026f, 2) // AC_ACK_FIRST_LOGIN
+
+// Packet: 0x0270
+packetLen(0x0270, 2) // AC_REQ_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0271
+packetLen(0x0271, 40) // CA_ACK_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0272
+packetLen(0x0272, 44) // AC_ACK_PT_ID_INFO
+
+// Packet: 0x0273
+packetLen(0x0273, 30) // CZ_REQ_MAIL_RETURN
+
+// Packet: 0x0274
+packetLen(0x0274, 8) // ZC_ACK_MAIL_RETURN
+
+// Packet: 0x0275
+packetLen(0x0275, 37) // CH_ENTER2
+
+// Packet: 0x0276
+packetLen(0x0276, -1) // AC_ACCEPT_LOGIN2
+
+// Packet: 0x0277
+packetLen(0x0277, 84) // CA_LOGIN_PCBANG
+
+// Packet: 0x0278
+packetLen(0x0278, 2) // ZC_NOTIFY_PCBANG
+
+// Packet: 0x0279
+packetLen(0x0279, 2) // CZ_HUNTINGLIST
+
+// Packet: 0x027a
+packetLen(0x027a, -1) // ZC_HUNTINGLIST
+
+// Packet: 0x027b
+packetLen(0x027b, 14) // ZC_PCBANG_EFFECT
+
+// Packet: 0x027c
+packetLen(0x027c, 60) // CA_LOGIN4
+
+// Packet: 0x027d
+packetLen(0x027d, 62) // ZC_PROPERTY_MERCE
+
+// Packet: 0x027e
+packetLen(0x027e, -1) // ZC_SHANDA_PROTECT
+
+// Packet: 0x027f
+packetLen(0x027f, 8) // CA_CLIENT_TYPE
+
+// Packet: 0x0280
+packetLen(0x0280, 12) // ZC_GANGSI_POINT
+
+// Packet: 0x0281
+packetLen(0x0281, 4) // CZ_GANGSI_RANK
+
+// Packet: 0x0282
+packetLen(0x0282, 284) // ZC_GANGSI_RANK
+
+// Packet: 0x0283
+packetLen(0x0283, 6) // ZC_AID
+
+// Packet: 0x0284
+packetLen(0x0284, 14) // ZC_NOTIFY_EFFECT3
+
+// Packet: 0x0285
+packetLen(0x0285, 6) // ZC_DEATH_QUESTION
+
+// Packet: 0x0286
+packetLen(0x0286, 4) // CZ_DEATH_QUESTION
+
+// Packet: 0x0287
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+
+// Packet: 0x0288
+packetLen(0x0288, -1) // CZ_PC_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0289
+packetLen(0x0289, 12) // ZC_PC_CASH_POINT_UPDATE
+
+// Packet: 0x028a
+packetLen(0x028a, 18) // ZC_NPC_SHOWEFST_UPDATE
+
+// Packet: 0x028b
+packetLen(0x028b, -1) // HC_CHARNOTBEENSELECTED
+
+// Packet: 0x028c
+packetLen(0x028c, 46) // CH_SELECT_CHAR_GOINGTOBEUSED
+
+// Packet: 0x028d
+packetLen(0x028d, 34) // CH_REQ_IS_VALID_CHARNAME
+
+// Packet: 0x028e
+packetLen(0x028e, 4) // HC_ACK_IS_VALID_CHARNAME
+
+// Packet: 0x028f
+packetLen(0x028f, 6) // CH_REQ_CHANGE_CHARNAME
+
+// Packet: 0x0290
+packetLen(0x0290, 4) // HC_ACK_CHANGE_CHARNAME
+
+// Packet: 0x0291
+packetLen(0x0291, 4) // ZC_MSG
+
+// Packet: 0x0292
+packetLen(0x0292, 2) // CZ_STANDING_RESURRECTION
+
+// Packet: 0x0293
+packetLen(0x0293, 70) // ZC_BOSS_INFO
+
+// Packet: 0x0294
+packetLen(0x0294, 10) // ZC_READ_BOOK
+
+// Packet: 0x0295
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0296
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0297
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0298
+packetLen(0x0298, 10) // ZC_CASH_TIME_COUNTER
+
+// Packet: 0x0299
+packetLen(0x0299, 8) // ZC_CASH_ITEM_DELETE
+
+// Packet: 0x029a
+packetLen(0x029a, 37) // ZC_ITEM_PICKUP_ACK2
+
+// Packet: 0x029b
+packetLen(0x029b, 80) // ZC_MER_INIT
+
+// Packet: 0x029c
+packetLen(0x029c, 66) // ZC_MER_PROPERTY
+
+// Packet: 0x029d
+packetLen(0x029d, -1) // ZC_MER_SKILLINFO_LIST
+
+// Packet: 0x029e
+packetLen(0x029e, 11) // ZC_MER_SKILLINFO_UPDATE
+
+// Packet: 0x029f
+packetLen(0x029f, 3) // CZ_MER_COMMAND
+
+// Packet: 0x02a2
+packetLen(0x02a2, 8) // ZC_MER_PAR_CHANGE
+
+// Packet: 0x02a5
+packetLen(0x02a5, 8) // CZ_KSY_EVENT
+
+// Packet: 0x02a6
+packetLen(0x02a6, -1) // ZC_HACKSH_CPX_MSG
+
+// Packet: 0x02a7
+packetLen(0x02a7, -1) // CZ_HACKSH_CPX_MSG
+
+// Packet: 0x02aa
+packetLen(0x02aa, 4) // ZC_REQ_CASH_PASSWORD
+
+// Packet: 0x02ab
+packetLen(0x02ab, 36) // CZ_ACK_CASH_PASSWORD
+
+// Packet: 0x02ac
+packetLen(0x02ac, 6) // ZC_RESULT_CASH_PASSWORD
+
+// Packet: 0x02ad
+packetLen(0x02ad, 8) // AC_REQUEST_SECOND_PASSWORD
+
+// Packet: 0x02b0
+packetLen(0x02b0, 85) // CA_LOGIN_HAN
+
+// Packet: 0x02b1
+packetLen(0x02b1, -1) // ZC_ALL_QUEST_LIST
+
+// Packet: 0x02b2
+packetLen(0x02b2, -1) // ZC_ALL_QUEST_MISSION
+
+// Packet: 0x02b3
+packetLen(0x02b3, 107) // ZC_ADD_QUEST
+
+// Packet: 0x02b4
+packetLen(0x02b4, 6) // ZC_DEL_QUEST
+
+// Packet: 0x02b5
+packetLen(0x02b5, -1) // ZC_UPDATE_MISSION_HUNT
+
+// Packet: 0x02b6
+packetLen(0x02b6, 7) // CZ_ACTIVE_QUEST
+
+// Packet: 0x02b7
+packetLen(0x02b7, 7) // ZC_ACTIVE_QUEST
+
+// Packet: 0x02b8
+packetLen(0x02b8, 32) // ZC_ITEM_PICKUP_PARTY
+
+// Packet: 0x02b9
+packetLen(0x02b9, 191) // ZC_SHORTCUT_KEY_LIST
+
+// Packet: 0x02ba
+packetLen(0x02ba, 11) // CZ_SHORTCUT_KEY_CHANGE
+
+// Packet: 0x02bb
+packetLen(0x02bb, 8) // ZC_EQUIPITEM_DAMAGED
+
+// Packet: 0x02bc
+packetLen(0x02bc, 6) // ZC_NOTIFY_PCBANG_PLAYING_TIME
+
+// Packet: 0x02c1
+packetLen(0x02c1, -1) // ZC_NPC_CHAT
+
+// Packet: 0x02c2
+packetLen(0x02c2, -1) // ZC_FORMATSTRING_MSG
+
+// Packet: 0x02c4
+packetLen(0x02c4, 26) // CZ_PARTY_JOIN_REQ
+
+// Packet: 0x02c5
+packetLen(0x02c5, 30) // ZC_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c6
+packetLen(0x02c6, 30) // ZC_PARTY_JOIN_REQ
+
+// Packet: 0x02c7
+packetLen(0x02c7, 7) // CZ_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c8
+packetLen(0x02c8, 3) // CZ_PARTY_CONFIG
+
+// Packet: 0x02c9
+packetLen(0x02c9, 3) // ZC_PARTY_CONFIG
+
+// Packet: 0x02ca
+packetLen(0x02ca, 3) // HC_REFUSE_SELECTCHAR
+
+// Packet: 0x02cb
+packetLen(0x02cb, 65) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_INFO
+
+// Packet: 0x02cc
+packetLen(0x02cc, 4) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_NOTIFY
+
+// Packet: 0x02cd
+packetLen(0x02cd, 71) // ZC_MEMORIALDUNGEON_INFO
+
+// Packet: 0x02ce
+packetLen(0x02ce, 10) // ZC_MEMORIALDUNGEON_NOTIFY
+
+// Packet: 0x02cf
+packetLen(0x02cf, 6) // CZ_MEMORIALDUNGEON_COMMAND
+
+// Packet: 0x02d0
+packetLen(0x02d0, -1) // ZC_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d1
+packetLen(0x02d1, -1) // ZC_STORE_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d2
+packetLen(0x02d2, -1) // ZC_CART_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d3
+packetLen(0x02d3, 4) // ZC_NOTIFY_BIND_ON_EQUIP
+
+// Packet: 0x02d4
+packetLen(0x02d4, 39) // ZC_ITEM_PICKUP_ACK3
+
+// Packet: 0x02d5
+packetLen(0x02d5, 2) // ZC_ISVR_DISCONNECT
+
+// Packet: 0x02d6
+packetLen(0x02d6, 6) // CZ_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d7
+packetLen(0x02d7, -1) // ZC_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d8
+packetLen(0x02d8, 10) // CZ_CONFIG
+
+// Packet: 0x02d9
+packetLen(0x02d9, 10) // ZC_CONFIG
+
+// Packet: 0x02da
+packetLen(0x02da, 3) // ZC_CONFIG_NOTIFY
+
+// Packet: 0x02db
+packetLen(0x02db, -1) // CZ_BATTLEFIELD_CHAT
+
+// Packet: 0x02dc
+packetLen(0x02dc, -1) // ZC_BATTLEFIELD_CHAT
+
+// Packet: 0x02dd
+packetLen(0x02dd, 32) // ZC_BATTLEFIELD_NOTIFY_CAMPINFO
+
+// Packet: 0x02de
+packetLen(0x02de, 6) // ZC_BATTLEFIELD_NOTIFY_POINT
+
+// Packet: 0x02df
+packetLen(0x02df, 36) // ZC_BATTLEFIELD_NOTIFY_POSITION
+
+// Packet: 0x02e0
+packetLen(0x02e0, 34) // ZC_BATTLEFIELD_NOTIFY_HP
+
+// Packet: 0x02e1
+packetLen(0x02e1, 33) // ZC_NOTIFY_ACT2
+
+// Packet: 0x02e2
+packetLen(0x02e2, 20) // CZ_USE_ITEM_NEW_JAPEN
+
+// Packet: 0x02e3
+packetLen(0x02e3, 22) // CZ_USE_SKILL_NEW_JAPEN
+
+// Packet: 0x02e4
+packetLen(0x02e4, 11) // CZ_ITEM_PICKUP_NEW_JAPEN
+
+// Packet: 0x02e5
+packetLen(0x02e5, 9) // CZ_REQUEST_MOVE_NEW_JAPEN
+
+// Packet: 0x02e6
+packetLen(0x02e6, 6) // CZ_BOT_CHECK
+
+// Packet: 0x02e7
+packetLen(0x02e7, -1) // ZC_MAPPROPERTY
+
+// Packet: 0x02e8
+packetLen(0x02e8, -1) // ZC_NORMAL_ITEMLIST3
+
+// Packet: 0x02e9
+packetLen(0x02e9, -1) // ZC_CART_NORMAL_ITEMLIST3
+
+// Packet: 0x02ea
+packetLen(0x02ea, -1) // ZC_STORE_NORMAL_ITEMLIST3
+
+// Packet: 0x02eb
+packetLen(0x02eb, 13) // ZC_ACCEPT_ENTER2
+
+// Packet: 0x02ec
+packetLen(0x02ec, 71) // ZC_NOTIFY_MOVEENTRY4
+
+// Packet: 0x02ed
+packetLen(0x02ed, 63) // ZC_NOTIFY_NEWENTRY4
+
+// Packet: 0x02ee
+packetLen(0x02ee, 64) // ZC_NOTIFY_STANDENTRY4
+
+// Packet: 0x02ef
+packetLen(0x02ef, 8) // ZC_NOTIFY_FONT
+
+// Packet: 0x02f0
+packetLen(0x02f0, 10) // ZC_PROGRESS
+
+// Packet: 0x02f1
+packetLen(0x02f1, 2) // CZ_PROGRESS
+
+// Packet: 0x02f2
+packetLen(0x02f2, 2) // ZC_PROGRESS_CANCEL
+
+// Packet: 0x02f3
+packetLen(0x02f3, -1) // CZ_IRMAIL_SEND
+
+// Packet: 0x02f4
+packetLen(0x02f4, 3) // ZC_IRMAIL_SEND_RES
+
+// Packet: 0x02f5
+packetLen(0x02f5, 7) // ZC_IRMAIL_NOTIFY
+
+// Packet: 0x02f6
+packetLen(0x02f6, 7) // CZ_IRMAIL_LIST
+
+// Packet: 0x035c
+packetLen(0x035c, 2) // CZ_OPEN_SIMPLE_CASHSHOP_ITEMLIST
+
+// Packet: 0x035d
+packetLen(0x035d, -1) // ZC_SIMPLE_CASHSHOP_POINT_ITEMLIST
+
+// Packet: 0x035e
+packetLen(0x035e, 2) // CZ_CLOSE_WINDOW
+
+// Packet: 0x035f
+packetLen(0x035f, 5) // CZ_REQUEST_MOVE2
+
+// Packet: 0x0360
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+
+// Packet: 0x0361
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+
+// Packet: 0x0362
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+
+// Packet: 0x0363
+packetLen(0x0363, 6) // CZ_ITEM_THROW2
+
+// Packet: 0x0364
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+
+// Packet: 0x0365
+packetLen(0x0365, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+
+// Packet: 0x0366
+packetLen(0x0366, 10) // CZ_USE_SKILL_TOGROUND2
+
+// Packet: 0x0367
+packetLen(0x0367, 90) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+
+// Packet: 0x0368
+packetLen(0x0368, 6) // CZ_REQNAME2
+
+// Packet: 0x0369
+packetLen(0x0369, 6) // CZ_REQNAME_BYGID2
+
+// Packet: 0x03dd
+packetLen(0x03dd, 18) // AHC_GAME_GUARD
+
+// Packet: 0x03de
+packetLen(0x03de, 18) // CAH_ACK_GAME_GUARD
+
+// Packet: 0x0436
+packetLen(0x0436, 19) // CZ_ENTER2
+
+// Packet: 0x0437
+packetLen(0x0437, 7) // CZ_REQUEST_ACT2
+
+// Packet: 0x0438
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+
+// Packet: 0x0439
+packetLen(0x0439, 8) // CZ_USE_ITEM2
+
+// Packet: 0x043d
+packetLen(0x043d, 8) // ZC_SKILL_POSTDELAY
+
+// Packet: 0x043e
+packetLen(0x043e, -1) // ZC_SKILL_POSTDELAY_LIST
+
+// Packet: 0x043f
+packetLen(0x043f, 25) // ZC_MSG_STATE_CHANGE2
+
+// Packet: 0x0440
+packetLen(0x0440, 10) // ZC_MILLENNIUMSHIELD
+
+// Packet: 0x0441
+packetLen(0x0441, 4) // ZC_SKILLINFO_DELETE
+
+// Packet: 0x0442
+packetLen(0x0442, -1) // ZC_SKILL_SELECT_REQUEST
+
+// Packet: 0x0443
+packetLen(0x0443, 8) // CZ_SKILL_SELECT_RESPONSE
+
+// Packet: 0x0444
+packetLen(0x0444, -1) // ZC_SIMPLE_CASH_POINT_ITEMLIST
+
+// Packet: 0x0445
+packetLen(0x0445, 12) // CZ_SIMPLE_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0446
+packetLen(0x0446, 14) // ZC_QUEST_NOTIFY_EFFECT
+
+// Packet: 0x0447
+packetLen(0x0447, 2) // CZ_BLOCKING_PLAY_CANCEL
+
+// Packet: 0x0448
+packetLen(0x0448, -1) // HC_CHARACTER_LIST
+
+// Packet: 0x0449
+packetLen(0x0449, 4) // ZC_HACKSH_ERROR_MSG
+
+// Packet: 0x044a
+packetLen(0x044a, 6) // CZ_CLIENT_VERSION
+
+// Packet: 0x044b
+packetLen(0x044b, 2) // CZ_CLOSE_SIMPLECASH_SHOP
+
+// Packet: 0x07d7
+packetLen(0x07d7, 8) // CZ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d8
+packetLen(0x07d8, 8) // ZC_REQ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d9
+packetLen(0x07d9, 268) // ZC_SHORTCUT_KEY_LIST_V2
+
+// Packet: 0x07da
+packetLen(0x07da, 6) // CZ_CHANGE_GROUP_MASTER
+
+// Packet: 0x07db
+packetLen(0x07db, 8) // ZC_HO_PAR_CHANGE
+
+// Packet: 0x07dc
+packetLen(0x07dc, 6) // CZ_SEEK_PARTY
+
+// Packet: 0x07dd
+packetLen(0x07dd, 54) // ZC_SEEK_PARTY
+
+// Packet: 0x07de
+packetLen(0x07de, 30) // CZ_SEEK_PARTY_MEMBER
+
+// Packet: 0x07df
+packetLen(0x07df, 54) // ZC_SEEK_PARTY_MEMBER
+
+// Packet: 0x07e0
+packetLen(0x07e0, 58) // ZC_ES_NOTI_MYINFO
+
+// Packet: 0x07e1
+packetLen(0x07e1, 15) // ZC_SKILLINFO_UPDATE2
+
+// Packet: 0x07e2
+packetLen(0x07e2, 8) // ZC_MSG_VALUE
+
+// Packet: 0x07e3
+packetLen(0x07e3, 6) // ZC_ITEMLISTWIN_OPEN
+
+// Packet: 0x07e4
+packetLen(0x07e4, -1) // CZ_ITEMLISTWIN_RES
+
+// Packet: 0x07e5
+packetLen(0x07e5, 4) // CH_ENTER_CHECKBOT
+
+// Packet: 0x07e6
+packetLen(0x07e6, 8) // ZC_MSG_SKILL
+
+// Packet: 0x07e7
+packetLen(0x07e7, 32) // CH_CHECKBOT
+
+// Packet: 0x07e8
+packetLen(0x07e8, -1) // HC_CHECKBOT
+
+// Packet: 0x07e9
+packetLen(0x07e9, 5) // HC_CHECKBOT_RESULT
+
+// Packet: 0x07ea
+packetLen(0x07ea, 2) // CZ_BATTLE_FIELD_LIST
+
+// Packet: 0x07eb
+packetLen(0x07eb, -1) // ZC_BATTLE_FIELD_LIST
+
+// Packet: 0x07ec
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+
+// Packet: 0x07ed
+packetLen(0x07ed, 10) // ZC_JOIN_BATTLE_FIELD
+
+// Packet: 0x07ee
+packetLen(0x07ee, 6) // CZ_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07ef
+packetLen(0x07ef, 8) // ZC_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07f0
+packetLen(0x07f0, 6) // CZ_REQ_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f1
+packetLen(0x07f1, 18) // ZC_ACK_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f2
+packetLen(0x07f2, 8) // ZC_BATTLE_NOTI_START_STEP
+
+// Packet: 0x07f3
+packetLen(0x07f3, 6) // ZC_BATTLE_JOIN_NOTI_DEFER
+
+// Packet: 0x07f4
+packetLen(0x07f4, 3) // ZC_BATTLE_JOIN_DISABLE_STATE
+
+// Packet: 0x07f5
+packetLen(0x07f5, 6) // CZ_GM_FULLSTRIP
+
+// Packet: 0x07f6
+packetLen(0x07f6, 14) // ZC_NOTIFY_EXP
+
+// Packet: 0x07f7
+packetLen(0x07f7, -1) // ZC_NOTIFY_MOVEENTRY7
+
+// Packet: 0x07f8
+packetLen(0x07f8, -1) // ZC_NOTIFY_NEWENTRY5
+
+// Packet: 0x07f9
+packetLen(0x07f9, -1) // ZC_NOTIFY_STANDENTRY5
+
+// Packet: 0x07fa
+packetLen(0x07fa, 8) // ZC_DELETE_ITEM_FROM_BODY
+
+// Packet: 0x07fb
+packetLen(0x07fb, 25) // ZC_USESKILL_ACK2
+
+// Packet: 0x07fc
+packetLen(0x07fc, 10) // ZC_CHANGE_GROUP_MASTER
+
+// Packet: 0x07fd
+packetLen(0x07fd, -1) // ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN
+
+// Packet: 0x07fe
+packetLen(0x07fe, 26) // ZC_PLAY_NPC_BGM
+
+// Packet: 0x0800
+packetLen(0x0800, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0801
+packetLen(0x0801, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0802
+packetLen(0x0802, 18) // CZ_PARTY_BOOKING_REQ_REGISTER
+
+// Packet: 0x0803
+packetLen(0x0803, 4) // ZC_PARTY_BOOKING_ACK_REGISTER
+
+// Packet: 0x0804
+packetLen(0x0804, 14) // CZ_PARTY_BOOKING_REQ_SEARCH
+
+// Packet: 0x0805
+packetLen(0x0805, -1) // ZC_PARTY_BOOKING_ACK_SEARCH
+
+// Packet: 0x0806
+packetLen(0x0806, 2) // CZ_PARTY_BOOKING_REQ_DELETE
+
+// Packet: 0x0807
+packetLen(0x0807, 4) // ZC_PARTY_BOOKING_ACK_DELETE
+
+// Packet: 0x0808
+packetLen(0x0808, 14) // CZ_PARTY_BOOKING_REQ_UPDATE
+
+// Packet: 0x0809
+packetLen(0x0809, 50) // ZC_PARTY_BOOKING_NOTIFY_INSERT
+
+// Packet: 0x080a
+packetLen(0x080a, 18) // ZC_PARTY_BOOKING_NOTIFY_UPDATE
+
+// Packet: 0x080b
+packetLen(0x080b, 6) // ZC_PARTY_BOOKING_NOTIFY_DELETE
+
+// Packet: 0x080c
+packetLen(0x080c, 2) // CZ_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080d
+packetLen(0x080d, 3) // ZC_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080e
+packetLen(0x080e, 14) // ZC_NOTIFY_HP_TO_GROUPM_R2
+
+// Packet: 0x080f
+packetLen(0x080f, 30) // ZC_ADD_EXCHANGE_ITEM2
+
+// Packet: 0x0810
+packetLen(0x0810, 3) // ZC_OPEN_BUYING_STORE
+
+// Packet: 0x0811
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+
+// Packet: 0x0812
+packetLen(0x0812, 8) // ZC_FAILED_OPEN_BUYING_STORE_TO_BUYER
+
+// Packet: 0x0813
+packetLen(0x0813, -1) // ZC_MYITEMLIST_BUYING_STORE
+
+// Packet: 0x0814
+packetLen(0x0814, 86) // ZC_BUYING_STORE_ENTRY
+
+// Packet: 0x0815
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+
+// Packet: 0x0816
+packetLen(0x0816, 6) // ZC_DISAPPEAR_BUYING_STORE_ENTRY
+
+// Packet: 0x0817
+packetLen(0x0817, 6) // CZ_REQ_CLICK_TO_BUYING_STORE
+
+// Packet: 0x0818
+packetLen(0x0818, -1) // ZC_ACK_ITEMLIST_BUYING_STORE
+
+// Packet: 0x0819
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+
+// Packet: 0x081a
+packetLen(0x081a, 4) // ZC_FAILED_TRADE_BUYING_STORE_TO_BUYER
+
+// Packet: 0x081b
+packetLen(0x081b, 12) // ZC_UPDATE_ITEM_FROM_BUYING_STORE
+
+// Packet: 0x081c
+packetLen(0x081c, 10) // ZC_ITEM_DELETE_BUYING_STORE
+
+// Packet: 0x081d
+packetLen(0x081d, 22) // ZC_EL_INIT
+
+// Packet: 0x081e
+packetLen(0x081e, 8) // ZC_EL_PAR_CHANGE
+
+// Packet: 0x081f
+packetLen(0x081f, -1) // ZC_BROADCAST4
+
+// Packet: 0x0820
+packetLen(0x0820, 11) // ZC_COSTUME_SPRITE_CHANGE
+
+// Packet: 0x0821
+packetLen(0x0821, 2) // AC_OTP_USER
+
+// Packet: 0x0822
+packetLen(0x0822, 9) // CA_OTP_AUTH_REQ
+
+// Packet: 0x0823
+packetLen(0x0823, -1) // AC_OTP_AUTH_ACK
+
+// Packet: 0x0824
+packetLen(0x0824, 8) // ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER
+
+// Packet: 0x0825
+packetLen(0x0825, -1) // CA_SSO_LOGIN_REQ
+
+// Packet: 0x0827
+packetLen(0x0827, 6) // CH_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0828
+packetLen(0x0828, 14) // HC_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0829
+packetLen(0x0829, 12) // CH_DELETE_CHAR3
+
+// Packet: 0x082a
+packetLen(0x082a, 10) // HC_DELETE_CHAR3
+
+// Packet: 0x082b
+packetLen(0x082b, 6) // CH_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082c
+packetLen(0x082c, 10) // HC_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082d
+packetLen(0x082d, -1) // HC_ACCEPT_ENTER2
+
+// Packet: 0x0835
+packetLen(0x0835, -1) // CZ_SEARCH_STORE_INFO
+
+// Packet: 0x0836
+packetLen(0x0836, -1) // ZC_SEARCH_STORE_INFO_ACK
+
+// Packet: 0x0837
+packetLen(0x0837, 3) // ZC_SEARCH_STORE_INFO_FAILED
+
+// Packet: 0x0838
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+
+// Packet: 0x0839
+packetLen(0x0839, 66) // ZC_ACK_BAN_GUILD_SSO
+
+// Packet: 0x083a
+packetLen(0x083a, 5) // ZC_OPEN_SEARCH_STORE_INFO
+
+// Packet: 0x083b
+packetLen(0x083b, 2) // CZ_CLOSE_SEARCH_STORE_INFO
+
+// Packet: 0x083c
+packetLen(0x083c, 14) // CZ_SSILIST_ITEM_CLICK
+
+// Packet: 0x083d
+packetLen(0x083d, 6) // ZC_SSILIST_ITEM_CLICK_ACK
+
+// Packet: 0x083e
+packetLen(0x083e, 26) // AC_REFUSE_LOGIN2
+
+// Packet: 0x0840
+packetLen(0x0840, -1) // HC_NOTIFY_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0841
+packetLen(0x0841, 4) // CH_SELECT_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0842
+packetLen(0x0842, 6) // CZ_RECALL_SSO
+
+// Packet: 0x0843
+packetLen(0x0843, 6) // CZ_REMOVE_AID_SSO
+
+// Packet: 0x0844
+packetLen(0x0844, 2) // CZ_SE_CASHSHOP_OPEN
+
+// Packet: 0x0845
+packetLen(0x0845, 10) // ZC_SE_CASHSHOP_OPEN
+
+// Packet: 0x0846
+packetLen(0x0846, 4) // CZ_REQ_SE_CASH_TAB_CODE
+
+// Packet: 0x0847
+packetLen(0x0847, -1) // ZC_ACK_SE_CASH_ITEM_LIST
+
+// Packet: 0x0848
+packetLen(0x0848, -1) // CZ_SE_PC_BUY_CASHITEM_LIST
+
+// Packet: 0x0849
+packetLen(0x0849, 16) // ZC_SE_PC_BUY_CASHITEM_RESULT
+
+// Packet: 0x084a
+packetLen(0x084a, 2) // CZ_SE_CASHSHOP_CLOSE
+
+// Packet: 0x084b
+packetLen(0x084b, 21) // ZC_ITEM_FALL_ENTRY4
+
+// Packet: 0x084c
+packetLen(0x084c, 10) // CZ_MACRO_USE_SKILL
+
+// Packet: 0x084d
+packetLen(0x084d, 10) // CZ_MACRO_USE_SKILL_TOGROUND
+
+// Packet: 0x084e
+packetLen(0x084e, 5) // CZ_MACRO_REQUEST_MOVE
+
+// Packet: 0x084f
+packetLen(0x084f, 6) // CZ_MACRO_ITEM_PICKUP
+
+// Packet: 0x0850
+packetLen(0x0850, 7) // CZ_MACRO_REQUEST_ACT
+
+// Packet: 0x0851
+packetLen(0x0851, -1) // ZC_GPK_DYNCODE
+
+// Packet: 0x0852
+packetLen(0x0852, 2) // CZ_GPK_DYNCODE_RELOAD
+
+// Packet: 0x0853
+packetLen(0x0853, -1) // ZC_GPK_AUTH
+
+// Packet: 0x0854
+packetLen(0x0854, -1) // CZ_GPK_AUTH
+
+// Packet: 0x0855
+packetLen(0x0855, 6) // ZC_MACRO_ITEMPICKUP_FAIL
+
+// Packet: 0x0856
+packetLen(0x0856, -1) // ZC_NOTIFY_MOVEENTRY8
+
+// Packet: 0x0857
+packetLen(0x0857, -1) // ZC_NOTIFY_STANDENTRY7
+
+// Packet: 0x0858
+packetLen(0x0858, -1) // ZC_NOTIFY_NEWENTRY6
+
+// Packet: 0x0859
+packetLen(0x0859, -1) // ZC_EQUIPWIN_MICROSCOPE2
+
+// Packet: 0x085a
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+
+// Packet: 0x085b
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+
+// Packet: 0x085c
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+
+// Packet: 0x085d
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+
+// Packet: 0x085e
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+
+// Packet: 0x085f
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+
+// Packet: 0x0860
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+
+// Packet: 0x0861
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+
+// Packet: 0x0862
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+
+// Packet: 0x0863
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+
+// Packet: 0x0864
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+
+// Packet: 0x0865
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+
+// Packet: 0x0866
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+
+// Packet: 0x0867
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+
+// Packet: 0x0868
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+
+// Packet: 0x0869
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+
+// Packet: 0x086a
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+
+// Packet: 0x086b
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+
+// Packet: 0x086c
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+
+// Packet: 0x086d
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+
+// Packet: 0x086e
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+
+// Packet: 0x086f
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+
+// Packet: 0x0870
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+
+// Packet: 0x0871
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+
+// Packet: 0x0872
+packetLen(0x0872, 2)
+
+// Packet: 0x0873
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+
+// Packet: 0x0874
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+
+// Packet: 0x0875
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+
+// Packet: 0x0876
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+
+// Packet: 0x0877
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+
+// Packet: 0x0878
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+
+// Packet: 0x0879
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+
+// Packet: 0x087a
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+
+// Packet: 0x087b
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+
+// Packet: 0x087c
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+
+// Packet: 0x087d
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+
+// Packet: 0x087e
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+
+// Packet: 0x087f
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+
+// Packet: 0x0880
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+
+// Packet: 0x0881
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+
+// Packet: 0x0882
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+
+// Packet: 0x0883
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+
+// Packet: 0x0884
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+
+// Packet: 0x0885
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+
+// Packet: 0x0886
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+
+// Packet: 0x0887
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+
+// Packet: 0x0888
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+
+// Packet: 0x0889
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+
+// Packet: 0x088a
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+
+// Packet: 0x088b
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+
+// Packet: 0x088c
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+
+// Packet: 0x088d
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+
+// Packet: 0x088e
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+
+// Packet: 0x088f
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+
+// Packet: 0x0890
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+
+// Packet: 0x0891
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+
+// Packet: 0x0892
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+
+// Packet: 0x0893
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+
+// Packet: 0x0894
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+
+// Packet: 0x0895
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+
+// Packet: 0x0896
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+
+// Packet: 0x0897
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+
+// Packet: 0x0898
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+
+// Packet: 0x0899
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+
+// Packet: 0x089a
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+
+// Packet: 0x089b
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+
+// Packet: 0x089c
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+
+// Packet: 0x089d
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+
+// Packet: 0x089e
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+
+// Packet: 0x089f
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+
+// Packet: 0x08a0
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+
+// Packet: 0x08a1
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+
+// Packet: 0x08a2
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+
+// Packet: 0x08a3
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+
+// Packet: 0x08a4
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+
+// Packet: 0x08a5
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+
+// Packet: 0x08a6
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+
+// Packet: 0x08a7
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+
+// Packet: 0x08a8
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+
+// Packet: 0x08a9
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+
+// Packet: 0x08aa
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+
+// Packet: 0x08ab
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+
+// Packet: 0x08ac
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+
+// Packet: 0x08ad
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+
+// Packet: 0x08af
+packetLen(0x08af, 10) // HC_WAITING_LOGIN
+
+// Packet: 0x08b0
+packetLen(0x08b0, 17) // CH_WAITING_LOGIN
+
+// Packet: 0x08b1
+packetLen(0x08b1, -1) // ZC_MCSTORE_NOTMOVEITEM_LIST
+
+// Packet: 0x08b2
+packetLen(0x08b2, -1) // AC_REALNAME_AUTH
+
+// Packet: 0x08b3
+packetLen(0x08b3, -1) // ZC_SHOWSCRIPT
+
+// Packet: 0x08b4
+packetLen(0x08b4, 2) // ZC_START_COLLECTION
+
+// Packet: 0x08b5
+packetLen(0x08b5, 6) // CZ_TRYCOLLECTION
+
+// Packet: 0x08b6
+packetLen(0x08b6, 3) // ZC_TRYCOLLECTION
+
+// Packet: 0x08b8
+packetLen(0x08b8, 10) // CH_SECOND_PASSWD_ACK
+
+// Packet: 0x08b9
+packetLen(0x08b9, 12) // HC_SECOND_PASSWD_LOGIN
+
+// Packet: 0x08ba
+packetLen(0x08ba, 10) // CH_MAKE_SECOND_PASSWD
+
+// Packet: 0x08bb
+packetLen(0x08bb, 8) // HC_MAKE_SECOND_PASSWD
+
+// Packet: 0x08bc
+packetLen(0x08bc, 10) // CH_DELETE_SECOND_PASSWD
+
+// Packet: 0x08bd
+packetLen(0x08bd, 8) // HC_DELETE_SECOND_PASSWD
+
+// Packet: 0x08be
+packetLen(0x08be, 14) // CH_EDIT_SECOND_PASSWD
+
+// Packet: 0x08bf
+packetLen(0x08bf, 8) // HC_EDIT_SECOND_PASSWD
+
+// Packet: 0x08c0
+packetLen(0x08c0, -1) // ZC_ACK_SE_CASH_ITEM_LIST2
+
+// Packet: 0x08c1
+packetLen(0x08c1, 2) // CZ_MACRO_START
+
+// Packet: 0x08c2
+packetLen(0x08c2, 2) // CZ_MACRO_STOP
+
+// Packet: 0x08c3
+packetLen(0x08c3, 10) // CH_NOT_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c4
+packetLen(0x08c4, 8) // HC_NOT_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c5
+packetLen(0x08c5, 6) // CH_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c6
+packetLen(0x08c6, 4) // HC_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c7
+packetLen(0x08c7, -1) // ZC_SKILL_ENTRY3
+
+// Packet: 0x08c8
+packetLen(0x08c8, 34) // ZC_NOTIFY_ACT3
+
+// Packet: 0x08c9
+packetLen(0x08c9, 2) // CZ_REQ_SCHEDULER_CASHITEM
+
+// Packet: 0x08ca
+packetLen(0x08ca, -1) // ZC_ACK_SCHEDULER_CASHITEM
+
+// Packet: 0x08cb
+packetLen(0x08cb, -1) // ZC_PERSONAL_INFOMATION
+
+// Packet: 0x08cc
+packetLen(0x08cc, 109) // CA_LOGIN5
+
+// Packet: 0x08cd
+packetLen(0x08cd, 10) // ZC_STOPMOVE_FORCE
+
+// Packet: 0x08ce
+packetLen(0x08ce, 2) // ZC_FAILED_GET_ITEM_FROM_ZONEDA
+
+// Packet: 0x08cf
+packetLen(0x08cf, 10) // ZC_SPIRITS_ATTRIBUTE
+
+// Packet: 0x08d0
+packetLen(0x08d0, 9) // ZC_REQ_WEAR_EQUIP_ACK2
+
+// Packet: 0x08d1
+packetLen(0x08d1, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK2
+
+// Packet: 0x08d2
+packetLen(0x08d2, 10) // ZC_FASTMOVE
+
+// Packet: 0x08d3
+packetLen(0x08d3, 10) // ZC_SE_CASHSHOP_UPDATE
+
+// Packet: 0x08d4
+packetLen(0x08d4, 8) // CH_REQ_CHANGE_CHARACTER_SLOT
+
+// Packet: 0x08d5
+packetLen(0x08d5, -1) // HC_ACK_CHANGE_CHARACTER_SLOT
+
+// Packet: 0x08d6
+packetLen(0x08d6, 6) // ZC_CLEAR_DIALOG
+
+// Packet: 0x08d7
+packetLen(0x08d7, 28) // CZ_REQ_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08d8
+packetLen(0x08d8, 27) // ZC_ACK_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08d9
+packetLen(0x08d9, 30) // ZC_NOTIFY_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08da
+packetLen(0x08da, 26) // CZ_REQ_ENTRY_QUEUE_CANCEL
+
+// Packet: 0x08db
+packetLen(0x08db, 27) // ZC_ACK_ENTRY_QUEUE_CANCEL
+
+// Packet: 0x08dc
+packetLen(0x08dc, 26) // ZC_NOTIFY_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08dd
+packetLen(0x08dd, 27) // CZ_REPLY_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08de
+packetLen(0x08de, 27) // ZC_REPLY_ACK_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08df
+packetLen(0x08df, 50) // ZC_NOTIFY_LOBBY_ADMISSION
+
+// Packet: 0x08e0
+packetLen(0x08e0, 51) // CZ_REPLY_LOBBY_ADMISSION
+
+// Packet: 0x08e1
+packetLen(0x08e1, 51) // ZC_REPLY_ACK_LOBBY_ADMISSION
+
+// Packet: 0x08e2
+packetLen(0x08e2, 27) // ZC_NAVIGATION_ACTIVE
+
+// Packet: 0x08e3
+packetLen(0x08e3, 157) // HC_UPDATE_CHARINFO
+
+// Packet: 0x08e4
+packetLen(0x08e4, 6) // AC_SHUTDOWN_INFO
+
+// Packet: 0x08fc
+packetLen(0x08fc, 30) // CH_REQ_CHANGE_CHARACTERNAME
+
+// Packet: 0x08fd
+packetLen(0x08fd, 6) // CH_ACK_CHANGE_CHARACTERNAME
+
+// Packet: 0x08fe
+packetLen(0x08fe, -1) // ZC_HUNTING_QUEST_INFO
+
+// Packet: 0x08ff
+packetLen(0x08ff, 24) // ZC_EFST_SET_ENTER
+
+// Packet: 0x0900
+packetLen(0x0900, -1) // ZC_INVENTORY_ITEMLIST_NORMAL
+
+// Packet: 0x0901
+packetLen(0x0901, -1) // ZC_INVENTORY_ITEMLIST_EQUIP
+
+// Packet: 0x0902
+packetLen(0x0902, -1) // ZC_CART_ITEMLIST_NORMAL
+
+// Packet: 0x0903
+packetLen(0x0903, -1) // ZC_CART_ITEMLIST_EQUIP
+
+// Packet: 0x0904
+packetLen(0x0904, -1) // ZC_STORE_ITEMLIST_NORMAL
+
+// Packet: 0x0905
+packetLen(0x0905, -1) // ZC_STORE_ITEMLIST_EQUIP
+
+// Packet: 0x0906
+packetLen(0x0906, -1) // ZC_MICROSCOPE
+
+// Packet: 0x0907
+packetLen(0x0907, 5) // CZ_INVENTORY_TAB
+
+// Packet: 0x0908
+packetLen(0x0908, 5) // ZC_INVENTORY_TAB
+
+// Packet: 0x090a
+packetLen(0x090a, 26) // CZ_REQ_ENTRY_QUEUE_RANKING
+
+// Packet: 0x090d
+packetLen(0x090d, -1) // ZC_PREMIUM_CAMPAIGN_INFO
+
+// Packet: 0x090e
+packetLen(0x090e, 2) // ZC_ENTRY_QUEUE_INIT
+
+// Packet: 0x090f
+packetLen(0x090f, -1) // ZC_NOTIFY_NEWENTRY7
+
+// Packet: 0x0910
+packetLen(0x0910, 10) // CZ_REQ_PARTY_NAME
+
+// Packet: 0x0911
+packetLen(0x0911, 30) // ZC_ACK_PARTY_NAME
+
+// Packet: 0x0912
+packetLen(0x0912, 10) // CZ_REQ_GUILD_NAME
+
+// Packet: 0x0913
+packetLen(0x0913, 30) // ZC_ACK_GUILD_NAME
+
+// Packet: 0x0914
+packetLen(0x0914, -1) // ZC_NOTIFY_MOVEENTRY9
+
+// Packet: 0x0915
+packetLen(0x0915, -1) // ZC_NOTIFY_STANDENTRY8
+
+// Packet: 0x0916
+packetLen(0x0916, 26) // CZ_REQ_JOIN_GUILD2
+
+// Packet: 0x0917
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+
+// Packet: 0x0918
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+
+// Packet: 0x0919
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+
+// Packet: 0x091a
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+
+// Packet: 0x091b
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+
+// Packet: 0x091c
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+
+// Packet: 0x091d
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+
+// Packet: 0x091e
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+
+// Packet: 0x091f
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+
+// Packet: 0x0920
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+
+// Packet: 0x0921
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+
+// Packet: 0x0922
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+
+// Packet: 0x0923
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+
+// Packet: 0x0924
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+
+// Packet: 0x0925
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+
+// Packet: 0x0926
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+
+// Packet: 0x0927
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+
+// Packet: 0x0928
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+
+// Packet: 0x0929
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+
+// Packet: 0x092a
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+
+// Packet: 0x092b
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+
+// Packet: 0x092c
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+
+// Packet: 0x092d
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+
+// Packet: 0x092e
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+
+// Packet: 0x092f
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+
+// Packet: 0x0930
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+
+// Packet: 0x0931
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+
+// Packet: 0x0932
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+
+// Packet: 0x0933
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+
+// Packet: 0x0934
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+
+// Packet: 0x0935
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+
+// Packet: 0x0936
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+
+// Packet: 0x0937
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+
+// Packet: 0x0938
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+
+// Packet: 0x0939
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+
+// Packet: 0x093a
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+
+// Packet: 0x093b
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+
+// Packet: 0x093c
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+
+// Packet: 0x093d
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+
+// Packet: 0x093e
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+
+// Packet: 0x093f
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+
+// Packet: 0x0940
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+
+// Packet: 0x0941
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+
+// Packet: 0x0942
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+
+// Packet: 0x0943
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+
+// Packet: 0x0944
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+
+// Packet: 0x0945
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+
+// Packet: 0x0946
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+
+// Packet: 0x0947
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+
+// Packet: 0x0948
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+
+// Packet: 0x0949
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+
+// Packet: 0x094a
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+
+// Packet: 0x094b
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+
+// Packet: 0x094c
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+
+// Packet: 0x094d
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+
+// Packet: 0x094e
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+
+// Packet: 0x094f
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+
+// Packet: 0x0950
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+
+// Packet: 0x0951
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+
+// Packet: 0x0952
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+
+// Packet: 0x0953
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+
+// Packet: 0x0954
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+
+// Packet: 0x0955
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+
+// Packet: 0x0956
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+
+// Packet: 0x0957
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+
+// Packet: 0x0958
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+
+// Packet: 0x0959
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+
+// Packet: 0x095a
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+
+// Packet: 0x095b
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+
+// Packet: 0x095c
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+
+// Packet: 0x095d
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+
+// Packet: 0x095e
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+
+// Packet: 0x095f
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+
+// Packet: 0x0960
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+
+// Packet: 0x0961
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+
+// Packet: 0x0962
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+
+// Packet: 0x0963
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+
+// Packet: 0x0964
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+
+// Packet: 0x0965
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+
+// Packet: 0x0966
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+
+// Packet: 0x0967
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+
+// Packet: 0x0968
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+
+// Packet: 0x0969
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+
+// Packet: 0x096a
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+
+// Packet: 0x096b
+packetLen(0x096b, 4) // ZC_PRNPC_STATE
+
+// Packet: 0x096c
+packetLen(0x096c, 6) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+
+// Packet: 0x096d
+packetLen(0x096d, -1) // ZC_MERGE_ITEM_OPEN
+
+// Packet: 0x096e
+packetLen(0x096e, -1) // CZ_REQ_MERGE_ITEM
+
+// Packet: 0x096f
+packetLen(0x096f, 7) // ZC_ACK_MERGE_ITEM
+
+// Packet: 0x0970
+packetLen(0x0970, 31) // CH_MAKE_CHAR_NOT_STATS
+
+// Packet: 0x0971
+packetLen(0x0971, 6) // ZC_PARTY_RECRUIT_REFUSE_VOLUNTEER_TO_PM
+
+// Packet: 0x0972
+packetLen(0x0972, -1) // ZC_SAY_DIALOG2
+
+// Packet: 0x0973
+packetLen(0x0973, 7) // ZC_WAIT_DIALOG2
+
+// Packet: 0x0974
+packetLen(0x0974, 2) // CZ_CANCEL_MERGE_ITEM
+
+// Packet: 0x0975
+packetLen(0x0975, -1) // ZC_STORE_ITEMLIST_NORMAL_V2
+
+// Packet: 0x0976
+packetLen(0x0976, -1) // ZC_STORE_ITEMLIST_EQUIP_V2
+
+// Packet: 0x0977
+packetLen(0x0977, 14) // ZC_HP_INFO
+
+// Packet: 0x0978
+packetLen(0x0978, 6) // CZ_REQ_BEFORE_WORLD_INFO
+
+// Packet: 0x0979
+packetLen(0x0979, 50) // ZC_ACK_BEFORE_WORLD_INFO
+
+// Packet: 0x097a
+packetLen(0x097a, -1) // ZC_ALL_QUEST_LIST2
+
+// Packet: 0x097b
+packetLen(0x097b, -1) // ZC_PERSONAL_INFOMATION2
+
+// Packet: 0x097c
+packetLen(0x097c, 4) // CZ_REQ_RANKING
+
+// Packet: 0x097d
+packetLen(0x097d, 288) // ZC_ACK_RANKING
+
+// Packet: 0x097e
+packetLen(0x097e, 12) // ZC_UPDATE_RANKING_POINT
+
+// Packet: 0x097f
+packetLen(0x097f, -1) // ZC_SELECTCART
+
+// Packet: 0x0980
+packetLen(0x0980, 7) // CZ_SELECTCART
+
+// Packet: 0x0981
+packetLen(0x0981, -1) // ZC_PERSONAL_INFOMATION_CHN
+
+// Packet: 0x0982
+packetLen(0x0982, 7) // ZC_FATIGUE_CHN
+
+// Packet: 0x0983
+packetLen(0x0983, 29) // ZC_MSG_STATE_CHANGE3
+
+// Packet: 0x0984
+packetLen(0x0984, 28) // ZC_EFST_SET_ENTER2
+
+// Packet: 0x0985
+packetLen(0x0985, -1) // ZC_SKILL_POSTDELAY_LIST2
+
+// Packet: 0x0986
+packetLen(0x0986, 10) // AC_SHUTDOWN_NOTIFY
+
+// Packet: 0x0987
+packetLen(0x0987, -1) // CA_LOGIN6
+
+// Packet: 0x0988
+packetLen(0x0988, 6) // ZC_NOTIFY_CLAN_CONNECTINFO
+
+// Packet: 0x0989
+packetLen(0x0989, 2) // ZC_ACK_CLAN_LEAVE
+
+// Packet: 0x098a
+packetLen(0x098a, -1) // ZC_CLANINFO
+
+// Packet: 0x098b
+packetLen(0x098b, 2) // AC_REQ_NEW_USER
+
+// Packet: 0x098c
+packetLen(0x098c, 4) // CA_ACK_NEW_USER
+
+// Packet: 0x098d
+packetLen(0x098d, -1) // CZ_CLAN_CHAT
+
+// Packet: 0x098e
+packetLen(0x098e, -1) // ZC_NOTIFY_CLAN_CHAT
+
+// Packet: 0x098f
+packetLen(0x098f, -1) // CH_DELETE_CHAR3_EXT
+
+// Packet: 0x0990
+packetLen(0x0990, 41) // ZC_ITEM_PICKUP_ACK_V5
+
+// Packet: 0x0991
+packetLen(0x0991, -1) // ZC_INVENTORY_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0992
+packetLen(0x0992, -1) // ZC_INVENTORY_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0993
+packetLen(0x0993, -1) // ZC_CART_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0994
+packetLen(0x0994, -1) // ZC_CART_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0995
+packetLen(0x0995, -1) // ZC_STORE_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0996
+packetLen(0x0996, -1) // ZC_STORE_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0997
+packetLen(0x0997, -1) // ZC_EQUIPWIN_MICROSCOPE_V5
+
+// Packet: 0x0998
+packetLen(0x0998, 8) // CZ_REQ_WEAR_EQUIP_V5
+
+// Packet: 0x0999
+packetLen(0x0999, 11) // ZC_ACK_WEAR_EQUIP_V5
+
+// Packet: 0x099a
+packetLen(0x099a, 9) // ZC_ACK_TAKEOFF_EQUIP_V5
+
+// Packet: 0x099b
+packetLen(0x099b, 8) // ZC_MAPPROPERTY_R2
+
+// Packet: 0x099c
+packetLen(0x099c, 6) // CH_REQ_CHARINFO_PER_PAGE
+
+// Packet: 0x099d
+packetLen(0x099d, -1) // HC_ACK_CHARINFO_PER_PAGE
+
+// Packet: 0x099e
+packetLen(0x099e, 12) // HC_QUEUE_ORDER
+
+// Packet: 0x099f
+packetLen(0x099f, -1) // ZC_SKILL_ENTRY4
+
+// Packet: 0x09a0
+packetLen(0x09a0, 6) // HC_CHARLIST_NOTIFY
+
+// Packet: 0x09a1
+packetLen(0x09a1, 2) // CH_CHARLIST_REQ
+
+// Packet: 0x09a2
+packetLen(0x09a2, 6) // AC_REQ_MOBILE_OTP
+
+// Packet: 0x09a3
+packetLen(0x09a3, -1) // CA_ACK_MOBILE_OTP
+
+// Packet: 0x09a4
+packetLen(0x09a4, 18) // ZC_DISPATCH_TIMING_INFO_CHN
+
+// Packet: 0x09a5
+packetLen(0x09a5, 7) // AC_REFUSE_LOGIN3
+
+// Packet: 0x09a6
+packetLen(0x09a6, 12) // ZC_BANKING_CHECK
+
+// Packet: 0x09a7
+packetLen(0x09a7, 10) // CZ_REQ_BANKING_DEPOSIT
+
+// Packet: 0x09a8
+packetLen(0x09a8, 16) // ZC_ACK_BANKING_DEPOSIT
+
+// Packet: 0x09a9
+packetLen(0x09a9, 10) // CZ_REQ_BANKING_WITHDRAW
+
+// Packet: 0x09aa
+packetLen(0x09aa, 16) // ZC_ACK_BANKING_WITHDRAW
+
+// Packet: 0x09ab
+packetLen(0x09ab, 6) // CZ_REQ_BANKING_CHECK
+
+// Packet: 0x09ac
+packetLen(0x09ac, -1) // CZ_REQ_CASH_BARGAIN_SALE_ITEM_INFO
+
+// Packet: 0x09ad
+packetLen(0x09ad, 12) // ZC_ACK_CASH_BARGAIN_SALE_ITEM_INFO
+
+// Packet: 0x09ae
+packetLen(0x09ae, 19) // CZ_REQ_APPLY_BARGAIN_SALE_ITEM
+
+// Packet: 0x09af
+packetLen(0x09af, 4) // ZC_ACK_APPLY_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b0
+packetLen(0x09b0, 10) // CZ_REQ_REMOVE_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b1
+packetLen(0x09b1, 4) // ZC_ACK_REMOVE_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b2
+packetLen(0x09b2, 10) // ZC_NOTIFY_BARGAIN_SALE_SELLING
+
+// Packet: 0x09b3
+packetLen(0x09b3, 6) // ZC_NOTIFY_BARGAIN_SALE_CLOSE
+
+// Packet: 0x09b4
+packetLen(0x09b4, 6) // CZ_OPEN_BARGAIN_SALE_TOOL
+
+// Packet: 0x09b5
+packetLen(0x09b5, 2) // ZC_OPEN_BARGAIN_SALE_TOOL
+
+// Packet: 0x09b6
+packetLen(0x09b6, 6) // CZ_REQ_OPEN_BANKING
+
+// Packet: 0x09b7
+packetLen(0x09b7, 4) // ZC_ACK_OPEN_BANKING
+
+// Packet: 0x09b8
+packetLen(0x09b8, 6) // CZ_REQ_CLOSE_BANKING
+
+// Packet: 0x09b9
+packetLen(0x09b9, 4) // ZC_ACK_CLOSE_BANKING
+
+// Packet: 0x09ba
+packetLen(0x09ba, 2) // CZ_REQ_OPEN_GUILD_STORAGE
+
+// Packet: 0x09bb
+packetLen(0x09bb, 6) // ZC_ACK_OPEN_GUILD_STORAGE
+
+// Packet: 0x09bc
+packetLen(0x09bc, 6) // CZ_CLOSE_BARGAIN_SALE_TOOL
+
+// Packet: 0x09bd
+packetLen(0x09bd, 2) // ZC_CLOSE_BARGAIN_SALE_TOOL
+
+// Packet: 0x09be
+packetLen(0x09be, 2) // CZ_REQ_CLOSE_GUILD_STORAGE
+
+// Packet: 0x09bf
+packetLen(0x09bf, 4) // ZC_ACK_CLOSE_GUILD_STORAGE
+
+// Packet: 0x09c1
+packetLen(0x09c1, 10) // ZC_C_MARKERINFO
+
+// Packet: 0x09c2
+packetLen(0x09c2, -1) // HC_SECRETSCAN_DATA
+
+// Packet: 0x09c3
+packetLen(0x09c3, 10) // CZ_REQ_COUNT_BARGAIN_SALE_ITEM
+
+// Packet: 0x09c4
+packetLen(0x09c4, 10) // ZC_ACK_COUNT_BARGAIN_SALE_ITEM
+
+// Packet: 0x09c5
+packetLen(0x09c5, 1042) // CS_LOGIN_QUERY
+
+// Packet: 0x09c6
+packetLen(0x09c6, -1) // SC_LOGIN_ANSWER
+
+// Packet: 0x09c7
+packetLen(0x09c7, 18) // SC_LOGIN_ERROR
+
+// Packet: 0x09c8
+packetLen(0x09c8, -1) // CA_LOGIN_OTP
+
+// Packet: 0x09c9
+packetLen(0x09c9, -1) // SC_SOCT
+
+// Packet: 0x09ca
+packetLen(0x09ca, -1) // ZC_SKILL_ENTRY5
+
+// Packet: 0x09cb
+packetLen(0x09cb, 17) // ZC_USE_SKILL2
+
+// Packet: 0x09cc
+packetLen(0x09cc, -1) // ZC_SECRETSCAN_DATA
+
+// Packet: 0x09cd
+packetLen(0x09cd, 8) // ZC_MSG_COLOR
+
+// Packet: 0x09ce
+packetLen(0x09ce, 102) // CZ_ITEM_CREATE_EX
+
+// Packet: 0x09cf
+packetLen(0x09cf, -1) // ZC_NPROTECTGAMEGUARDCSAUTH
+
+// Packet: 0x09d0
+packetLen(0x09d0, -1) // CZ_NPROTECTGAMEGUARDCSAUTH
+
+// Packet: 0x09d1
+packetLen(0x09d1, 14) // ZC_PROGRESS_ACTOR
+
+// Packet: 0x09d2
+packetLen(0x09d2, -1) // ZC_GUILDSTORAGE_ITEMLIST_NORMAL_V5
+
+// Packet: 0x09d3
+packetLen(0x09d3, -1) // ZC_GUILDSTORAGE_ITEMLIST_EQUIP_V5
+
+// Packet: 0x09d4
+packetLen(0x09d4, 2) // CZ_NPC_TRADE_QUIT
+
+// Packet: 0x09d5
+packetLen(0x09d5, -1) // ZC_NPC_MARKET_OPEN
+
+// Packet: 0x09d6
+packetLen(0x09d6, -1) // CZ_NPC_MARKET_PURCHASE
+
+// Packet: 0x09d7
+packetLen(0x09d7, -1) // ZC_NPC_MARKET_PURCHASE_RESULT
+
+// Packet: 0x09d8
+packetLen(0x09d8, 2) // CZ_NPC_MARKET_CLOSE
+
+// Packet: 0x09d9
+packetLen(0x09d9, 4) // CZ_REQ_GUILDSTORAGE_LOG
+
+// Packet: 0x09da
+packetLen(0x09da, -1) // ZC_ACK_GUILDSTORAGE_LOG
+
+// Packet: 0x09db
+packetLen(0x09db, -1) // ZC_NOTIFY_MOVEENTRY10
+
+// Packet: 0x09dc
+packetLen(0x09dc, -1) // ZC_NOTIFY_NEWENTRY10
+
+// Packet: 0x09dd
+packetLen(0x09dd, -1) // ZC_NOTIFY_STANDENTRY10
+
+// Packet: 0x09de
+packetLen(0x09de, -1) // ZC_WHISPER02
+
+// Packet: 0x09df
+packetLen(0x09df, 7) // ZC_ACK_WHISPER02
+
+// Packet: 0x09e0
+packetLen(0x09e0, -1) // SC_LOGIN_ANSWER_WITH_ID
+
+// Packet: 0x09e1
+packetLen(0x09e1, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_GUILDSTORAGE
+
+// Packet: 0x09e2
+packetLen(0x09e2, 8) // CZ_MOVE_ITEM_FROM_GUILDSTORAGE_TO_BODY
+
+// Packet: 0x09e3
+packetLen(0x09e3, 8) // CZ_MOVE_ITEM_FROM_CART_TO_GUILDSTORAGE
+
+// Packet: 0x09e4
+packetLen(0x09e4, 8) // CZ_MOVE_ITEM_FROM_GUILDSTORAGE_TO_CART
+
+// Packet: 0x09e5
+packetLen(0x09e5, 18) // ZC_DELETEITEM_FROM_MCSTORE2
+
+// Packet: 0x09e6
+packetLen(0x09e6, 24) // ZC_UPDATE_ITEM_FROM_BUYING_STORE2
+
+// Packet: 0x09e7
+packetLen(0x09e7, 3) // ZC_NOTIFY_UNREAD_RODEX
+
+// Packet: 0x09e8
+packetLen(0x09e8, 11) // CZ_OPEN_RODEXBOX
+
+// Packet: 0x09e9
+packetLen(0x09e9, 2) // CZ_CLOSE_RODEXBOX
+
+// Packet: 0x09ea
+packetLen(0x09ea, 11) // CZ_REQ_READ_RODEX
+
+// Packet: 0x09eb
+packetLen(0x09eb, -1) // ZC_ACK_READ_RODEX
+
+// Packet: 0x09ec
+packetLen(0x09ec, -1) // CZ_REQ_SEND_RODEX
+
+// Packet: 0x09ed
+packetLen(0x09ed, 3) // ZC_ACK_SEND_RODEX
+
+// Packet: 0x09ee
+packetLen(0x09ee, 11) // CZ_REQ_NEXT_RODEX
+
+// Packet: 0x09ef
+packetLen(0x09ef, 11) // CZ_REQ_REFRESH_RODEX
+
+// Packet: 0x09f0
+packetLen(0x09f0, -1) // ZC_ACK_RODEX_LIST
+
+// Packet: 0x09f1
+packetLen(0x09f1, 11) // CZ_REQ_ZENY_FROM_RODEX
+
+// Packet: 0x09f2
+packetLen(0x09f2, 12) // ZC_ACK_ZENY_FROM_RODEX
+
+// Packet: 0x09f3
+packetLen(0x09f3, 11) // CZ_REQ_ITEM_FROM_RODEX
+
+// Packet: 0x09f4
+packetLen(0x09f4, 12) // ZC_ACK_ITEM_FROM_RODEX
+
+// Packet: 0x09f5
+packetLen(0x09f5, 11) // CZ_REQ_DELETE_RODEX
+
+// Packet: 0x09f6
+packetLen(0x09f6, 11) // ZC_ACK_DELETE_RODEX
+
+// Packet: 0x09f7
+packetLen(0x09f7, 77) // ZC_PROPERTY_HOMUN_2
+
+// Packet: 0x09f8
+packetLen(0x09f8, -1) // ZC_ALL_QUEST_LIST3
+
+// Packet: 0x09f9
+packetLen(0x09f9, 143) // ZC_ADD_QUEST_EX
+
+// Packet: 0x09fa
+packetLen(0x09fa, -1) // ZC_UPDATE_MISSION_HUNT_EX
+
+// Packet: 0x09fb
+packetLen(0x09fb, -1) // CZ_PET_EVOLUTION
+
+// Packet: 0x09fc
+packetLen(0x09fc, 6) // ZC_PET_EVOLUTION_RESULT
+
+// Packet: 0x09fd
+packetLen(0x09fd, -1) // ZC_NOTIFY_MOVEENTRY11
+
+// Packet: 0x09fe
+packetLen(0x09fe, -1) // ZC_NOTIFY_NEWENTRY11
+
+// Packet: 0x09ff
+packetLen(0x09ff, -1) // ZC_NOTIFY_STANDENTRY11
+
+// Packet: 0x0a00
+packetLen(0x0a00, 269) // ZC_SHORTCUT_KEY_LIST_V3
+
+// Packet: 0x0a01
+packetLen(0x0a01, 3) // CZ_SHORTCUTKEYBAR_ROTATE
+
+// Packet: 0x0a02
+packetLen(0x0a02, 4) // ZC_DRESSROOM_OPEN
+
+// Packet: 0x0a03
+packetLen(0x0a03, 2) // CZ_REQ_CANCEL_WRITE_RODEX
+
+// Packet: 0x0a04
+packetLen(0x0a04, 6) // CZ_REQ_ADD_ITEM_RODEX
+
+// Packet: 0x0a05
+packetLen(0x0a05, 63) // ZC_ACK_ADD_ITEM_RODEX
+
+// Packet: 0x0a06
+packetLen(0x0a06, 6) // CZ_REQ_REMOVE_RODEX_ITEM
+
+// Packet: 0x0a07
+packetLen(0x0a07, 9) // ZC_ACK_REMOVE_RODEX_ITEM
+
+// Packet: 0x0a08
+packetLen(0x0a08, 26) // CZ_REQ_OPEN_WRITE_RODEX
+
+// Packet: 0x0a09
+packetLen(0x0a09, 55) // ZC_ADD_EXCHANGE_ITEM3
+
+// Packet: 0x0a0a
+packetLen(0x0a0a, 57) // ZC_ADD_ITEM_TO_STORE3
+
+// Packet: 0x0a0b
+packetLen(0x0a0b, 57) // ZC_ADD_ITEM_TO_CART3
+
+// Packet: 0x0a0c
+packetLen(0x0a0c, 66) // ZC_ITEM_PICKUP_ACK_V6
+
+// Packet: 0x0a0d
+packetLen(0x0a0d, -1) // ZC_INVENTORY_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a0e
+packetLen(0x0a0e, 14) // ZC_BATTLEFIELD_NOTIFY_HP2
+
+// Packet: 0x0a0f
+packetLen(0x0a0f, -1) // ZC_CART_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a10
+packetLen(0x0a10, -1) // ZC_STORE_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a11
+packetLen(0x0a11, -1) // ZC_GUILDSTORAGE_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a12
+packetLen(0x0a12, 27) // ZC_ACK_OPEN_WRITE_RODEX
+
+// Packet: 0x0a13
+packetLen(0x0a13, 26) // CZ_CHECK_RECEIVE_CHARACTER_NAME
+
+// Packet: 0x0a14
+packetLen(0x0a14, 10) // ZC_CHECK_RECEIVE_CHARACTER_NAME
+
+// Packet: 0x0a15
+packetLen(0x0a15, 12) // ZC_GOLDPCCAFE_POINT
+
+// Packet: 0x0a16
+packetLen(0x0a16, 26) // CZ_DYNAMICNPC_CREATE_REQUEST
+
+// Packet: 0x0a17
+packetLen(0x0a17, 6) // ZC_DYNAMICNPC_CREATE_RESULT
+
+// Packet: 0x0a18
+packetLen(0x0a18, 14) // ZC_ACCEPT_ENTER3
+
+// Packet: 0x0a19
+packetLen(0x0a19, 2) // CZ_REQ_OPEN_ROULETTE
+
+// Packet: 0x0a1a
+packetLen(0x0a1a, 25) // ZC_ACK_OPEN_ROULETTE
+
+// Packet: 0x0a1b
+packetLen(0x0a1b, 2) // CZ_REQ_ROULETTE_INFO
+
+// Packet: 0x0a1c
+packetLen(0x0a1c, -1) // ZC_ACK_ROULEITTE_INFO
+
+// Packet: 0x0a1d
+packetLen(0x0a1d, 2) // CZ_REQ_CLOSE_ROULETTE
+
+// Packet: 0x0a1e
+packetLen(0x0a1e, 3) // ZC_ACK_CLOSE_ROULETTE
+
+// Packet: 0x0a1f
+packetLen(0x0a1f, 2) // CZ_REQ_GENERATE_ROULETTE
+
+// Packet: 0x0a20
+packetLen(0x0a20, 23) // ZC_ACK_GENERATE_ROULETTE
+
+// Packet: 0x0a21
+packetLen(0x0a21, 3) // CZ_RECV_ROULETTE_ITEM
+
+// Packet: 0x0a22
+packetLen(0x0a22, 7) // ZC_RECV_ROULETTE_ITEM
+
+// Packet: 0x0a23
+packetLen(0x0a23, -1) // ZC_ALL_ACH_LIST
+
+// Packet: 0x0a24
+packetLen(0x0a24, 66) // ZC_ACH_UPDATE
+
+// Packet: 0x0a25
+packetLen(0x0a25, 6) // CZ_REQ_ACH_REWARD
+
+// Packet: 0x0a26
+packetLen(0x0a26, 7) // ZC_REQ_ACH_REWARD_ACK
+
+// Packet: 0x0a27
+packetLen(0x0a27, 8) // ZC_RECOVERY2
+
+// Packet: 0x0a28
+packetLen(0x0a28, 3) // ZC_ACK_OPENSTORE2
+
+// Packet: 0x0a29
+packetLen(0x0a29, 6) // ZC_REQ_AU_BOT
+
+// Packet: 0x0a2a
+packetLen(0x0a2a, 6) // CZ_ACK_AU_BOT
+
+// Packet: 0x0a2b
+packetLen(0x0a2b, 14) // ZC_SE_CASHSHOP_OPEN2
+
+// Packet: 0x0a2c
+packetLen(0x0a2c, 12) // ZC_SE_PC_BUY_TAIWANCASHITEM_RESULT
+
+// Packet: 0x0a2d
+packetLen(0x0a2d, -1) // ZC_EQUIPWIN_MICROSCOPE_V6
+
+// Packet: 0x0a2e
+packetLen(0x0a2e, 6) // CZ_REQ_CHANGE_TITLE
+
+// Packet: 0x0a2f
+packetLen(0x0a2f, 7) // ZC_ACK_CHANGE_TITLE
+
+// Packet: 0x0a30
+packetLen(0x0a30, 106) // ZC_ACK_REQNAMEALL2
+
+// Packet: 0x0a31
+packetLen(0x0a31, -1) // ZC_RESULT_PACKAGE_ITEM_TEST
+
+// Packet: 0x0a32
+packetLen(0x0a32, 2) // ZC_OPEN_RODEX_THROUGH_NPC_ONLY
+
+// Packet: 0x0a33
+packetLen(0x0a33, 7) // ZC_UPDATE_ROULETTE_COIN
+
+// Packet: 0x0a34
+packetLen(0x0a34, 6) // ZC_UPDATE_TAIWANCASH
+
+// Packet: 0x0a35
+packetLen(0x0a35, 4) // CZ_REQ_ONECLICK_ITEMIDENTIFY
+
+// Packet: 0x0a36
+packetLen(0x0a36, 7) // ZC_HP_INFO_TINY
+
+// Packet: 0x0a37
+packetLen(0x0a37, 69) // ZC_ITEM_PICKUP_ACK_V7
+
+// Packet: 0x0a38
+packetLen(0x0a38, 3) // ZC_OPEN_UI
+
+// Packet: 0x0a39
+packetLen(0x0a39, 36) // CH_MAKE_CHAR
+
+// Packet: 0x0a3a
+packetLen(0x0a3a, 12)
+
+// Packet: 0x0a3b
+packetLen(0x0a3b, -1) // ZC_CUSTOM_HAT_EFFECT
+
+// Packet: 0x0a3c
+packetLen(0x0a3c, -1)
+
+// Packet: 0x0a3d
+packetLen(0x0a3d, 20)
+
+// Packet: 0x0a3e
+packetLen(0x0a3e, -1)
+
+// Packet: 0x0a3f
+packetLen(0x0a3f, 11)
+
+// Packet: 0x0a40
+packetLen(0x0a40, 11)
+
+// Packet: 0x0a41
+packetLen(0x0a41, 18) // ZC_AOE_EFFECT_SKILL
+
+// Packet: 0x0a42
+packetLen(0x0a42, 43)
+
+// Packet: 0x0a43
+packetLen(0x0a43, 85) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0a44
+packetLen(0x0a44, -1) // ZC_GROUP_LIST
+
+// Packet: 0x0a46
+packetLen(0x0a46, 14)
+
+// Packet: 0x0a47
+packetLen(0x0a47, 3) // ZC_STYLE_CHANGE_RES
+
+// Packet: 0x0a48
+packetLen(0x0a48, 2)
+
+// Packet: 0x0a49
+packetLen(0x0a49, 22) // CZ_PRIVATE_AIRSHIP_REQUEST
+
+// Packet: 0x0a4a
+packetLen(0x0a4a, 6) // ZC_PRIVATE_AIRSHIP_RESPONSE
+
+// Packet: 0x0a4b
+packetLen(0x0a4b, 22) // ZC_AIRSHIP_MAPMOVE
+
+// Packet: 0x0a4c
+packetLen(0x0a4c, 28) // ZC_AIRSHIP_SERVERMOVE
+
+// Packet: 0x0a4d
+packetLen(0x0a4d, -1)
+
+// Packet: 0x0a4e
+packetLen(0x0a4e, 6)
+
+// Packet: 0x0a4f
+packetLen(0x0a4f, -1)
+
+// Packet: 0x0a50
+packetLen(0x0a50, 4)
+
+// Packet: 0x0a51
+packetLen(0x0a51, 34) // ZC_CHECK_RECEIVE_CHARACTER_NAME
+
+// Packet: 0x0a52
+packetLen(0x0a52, 20)
+
+// Packet: 0x0a53
+packetLen(0x0a53, 10)
+
+// Packet: 0x0a54
+packetLen(0x0a54, -1)
+
+// Packet: 0x0a55
+packetLen(0x0a55, 2)
+
+// Packet: 0x0a56
+packetLen(0x0a56, 6)
+
+// Packet: 0x0a57
+packetLen(0x0a57, 6)
+
+// Packet: 0x0a58
+packetLen(0x0a58, 8)
+
+// Packet: 0x0a59
+packetLen(0x0a59, -1)
+
+// Packet: 0x0a5a
+packetLen(0x0a5a, 2)
+
+// Packet: 0x0a5b
+packetLen(0x0a5b, 7)
+
+// Packet: 0x0a5c
+packetLen(0x0a5c, 18)
+
+// Packet: 0x0a5d
+packetLen(0x0a5d, 6)
+
+// Packet: 0x0a68
+packetLen(0x0a68, 3) // CZ_REQ_OPEN_UI
+
+// Packet: 0x0a69
+packetLen(0x0a69, 6)
+
+// Packet: 0x0a6a
+packetLen(0x0a6a, 12)
+
+// Packet: 0x0a6b
+packetLen(0x0a6b, -1)
+
+// Packet: 0x0a6c
+packetLen(0x0a6c, 7)
+
+// Packet: 0x0a6d
+packetLen(0x0a6d, -1)
+
+// Packet: 0x0a6e
+packetLen(0x0a6e, -1) // CZ_REQ_SEND_RODEX
+
+// Packet: 0x0a6f
+packetLen(0x0a6f, -1) // ZC_FORMATSTRING_MSG_COLOR
+
+// Packet: 0x0a70
+packetLen(0x0a70, 2)
+
+// Packet: 0x0a71
+packetLen(0x0a71, -1)
+
+// Packet: 0x0a72
+packetLen(0x0a72, 61)
+
+// Packet: 0x0a73
+packetLen(0x0a73, 2)
+
+// Packet: 0x0a74
+packetLen(0x0a74, 8)
+
+// Packet: 0x0a76
+packetLen(0x0a76, 80)
+
+// Packet: 0x0a77
+packetLen(0x0a77, 15)
+
+// Packet: 0x0a78
+packetLen(0x0a78, 15)
+
+// Packet: 0x0a79
+packetLen(0x0a79, -1)
+
+// Packet: 0x0a7b
+packetLen(0x0a7b, -1)
+
+// Packet: 0x0a7c
+packetLen(0x0a7c, -1)
+
+// Packet: 0x0a7d
+packetLen(0x0a7d, -1) // ZC_ACK_RODEX_LIST
+
+// Packet: 0x0a7e
+packetLen(0x0a7e, -1) // ZC_OFFLINE_STORE_OWNER_ITEMS_READY
+
+// Packet: 0x0a7f
+packetLen(0x0a7f, -1) // CZ_OFFLINE_STORE_CREATE
+
+// Packet: 0x0a80
+packetLen(0x0a80, 6)
+
+// Packet: 0x0a81
+packetLen(0x0a81, 4)
+
+// Packet: 0x0a82
+packetLen(0x0a82, 46)
+
+// Packet: 0x0a83
+packetLen(0x0a83, 46)
+
+// Packet: 0x0a84
+packetLen(0x0a84, 94) // ZC_GUILD_INFO
+
+// Packet: 0x0a85
+packetLen(0x0a85, 82)
+
+// Packet: 0x0a86
+packetLen(0x0a86, -1)
+
+// Packet: 0x0a87
+packetLen(0x0a87, -1)
+
+// Packet: 0x0a88
+packetLen(0x0a88, 2)
+
+// Packet: 0x0a89
+packetLen(0x0a89, 61) // ZC_NOTIFY_OFFLINE_STORE
+
+// Packet: 0x0a8a
+packetLen(0x0a8a, 6) // ZC_OFFLINE_STORE_VANISH
+
+// Packet: 0x0a8b
+packetLen(0x0a8b, 2)
+
+// Packet: 0x0a8c
+packetLen(0x0a8c, 2)
+
+// Packet: 0x0a8d
+packetLen(0x0a8d, -1) // ZC_OFFLINE_STORE_OWNER_ITEMS
+
+// Packet: 0x0a8e
+packetLen(0x0a8e, 2)
+
+// Packet: 0x0a8f
+packetLen(0x0a8f, 2)
+
+// Packet: 0x0a90
+packetLen(0x0a90, 3)
+
+// Packet: 0x0a91
+packetLen(0x0a91, -1) // ZC_OFFLINE_STORE_ITEMS
+
+// Packet: 0x0a92
+packetLen(0x0a92, -1)
+
+// Packet: 0x0a93
+packetLen(0x0a93, 3)
+
+// Packet: 0x0a94
+packetLen(0x0a94, 2)
+
+// Packet: 0x0a95
+packetLen(0x0a95, 4)
+
+// Packet: 0x0a96
+packetLen(0x0a96, 61) // ZC_ADD_EXCHANGE_ITEM4
+
+// Packet: 0x0a97
+packetLen(0x0a97, 8) // CZ_ALT_EQUIPMENT_EQUIP
+
+// Packet: 0x0a98
+packetLen(0x0a98, 10) // ZC_ALT_EQUIPMENT_EQUIP
+
+// Packet: 0x0a99
+packetLen(0x0a99, 4)
+
+// Packet: 0x0a9a
+packetLen(0x0a9a, 10) // ZC_ALT_EQUIPMENT_REMOVE
+
+// Packet: 0x0a9b
+packetLen(0x0a9b, -1) // ZC_ALT_EQUIPMENT_ITEMS
+
+// Packet: 0x0a9c
+packetLen(0x0a9c, 2)
+
+// Packet: 0x0a9d
+packetLen(0x0a9d, 4)
+
+// Packet: 0x0a9e
+packetLen(0x0a9e, 2)
+
+// Packet: 0x0a9f
+packetLen(0x0a9f, 2)
+
+// Packet: 0x0aa0
+packetLen(0x0aa0, 2) // ZC_REFINE_OPEN_WINDOW
+
+// Packet: 0x0aa1
+packetLen(0x0aa1, 4) // CZ_REFINE_ADD_ITEM
+
+// Packet: 0x0aa2
+packetLen(0x0aa2, -1) // ZC_REFINE_ADD_ITEM
+
+// Packet: 0x0aa3
+packetLen(0x0aa3, 9) // CZ_REFINE_ITEM_REQUEST
+
+// Packet: 0x0aa4
+packetLen(0x0aa4, 2) // CZ_REFINE_WINDOW_CLOSE
+
+// Packet: 0x0aa5
+packetLen(0x0aa5, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0aa6
+packetLen(0x0aa6, 36) // ZC_MEMBER_ADD
+
+// Packet: 0x0aa7
+packetLen(0x0aa7, 6) // ZC_INVENTORY_MOVE_FAILED
+
+// Packet: 0x0aa8
+packetLen(0x0aa8, 5)
+
+// Packet: 0x0aa9
+packetLen(0x0aa9, -1)
+
+// Packet: 0x0aaa
+packetLen(0x0aaa, -1)
+
+// Packet: 0x0aab
+packetLen(0x0aab, -1)
+
+// Packet: 0x0aac
+packetLen(0x0aac, 69)
+
+// Packet: 0x0aad
+packetLen(0x0aad, 51)
+
+// Packet: 0x0aae
+packetLen(0x0aae, 2)
+
+// Packet: 0x0aaf
+packetLen(0x0aaf, 6)
+
+// Packet: 0x0ab0
+packetLen(0x0ab0, 6)
+
+// Packet: 0x0ab1
+packetLen(0x0ab1, 14)
+
+// Packet: 0x0ab2
+packetLen(0x0ab2, 7) // ZC_GROUP_ISALIVE
+
+// Packet: 0x0ab3
+packetLen(0x0ab3, 19)
+
+// Packet: 0x0ab4
+packetLen(0x0ab4, 6)
+
+// Packet: 0x0ab5
+packetLen(0x0ab5, 2)
+
+// Packet: 0x0ab6
+packetLen(0x0ab6, 8)
+
+// Packet: 0x0ab7
+packetLen(0x0ab7, 4)
+
+// Packet: 0x0ab8
+packetLen(0x0ab8, 2)
+
+// Packet: 0x0ab9
+packetLen(0x0ab9, 47) // ZC_ITEM_PREVIEW
+
+// Packet: 0x0aba
+packetLen(0x0aba, 2)
+
+// Packet: 0x0abb
+packetLen(0x0abb, 2)
+
+// Packet: 0x0abc
+packetLen(0x0abc, -1)
+
+// Packet: 0x0abd
+packetLen(0x0abd, 10) // ZC_PARTY_MEMBER_JOB_LEVEL
+
+// Packet: 0x0abe
+packetLen(0x0abe, -1) // ZC_WARPLIST
+
+// Packet: 0x0abf
+packetLen(0x0abf, -1)
+
+// Packet: 0x0ac0
+packetLen(0x0ac0, 26) // CZ_OPEN_RODEXBOX
+
+// Packet: 0x0ac1
+packetLen(0x0ac1, 26) // CZ_REQ_REFRESH_RODEX
+
+// Packet: 0x0ac2
+packetLen(0x0ac2, -1) // ZC_ACK_RODEX_LIST
+
+// Packet: 0x0ac3
+packetLen(0x0ac3, 2)
+
+// Packet: 0x0ac4
+packetLen(0x0ac4, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x0ac5
+packetLen(0x0ac5, 156) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0ac6
+packetLen(0x0ac6, 156)
+
+// Packet: 0x0ac7
+packetLen(0x0ac7, 156) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0ac8
+packetLen(0x0ac8, 2) // ZC_UNKNOWN_CLEAN_ITEMS_LISTS
+
+// Packet: 0x0ac9
+packetLen(0x0ac9, -1)
+
+// Packet: 0x0aca
+packetLen(0x0aca, 3)
+
+// Packet: 0x0acb
+packetLen(0x0acb, 12) // ZC_PAR_CHANGE
+
+// Packet: 0x0acc
+packetLen(0x0acc, 18) // ZC_NOTIFY_EXP
+
+// Packet: 0x0acd
+packetLen(0x0acd, 23)
+
+// Packet: 0x0ace
+packetLen(0x0ace, 4)
+
+// Packet: 0x0acf
+packetLen(0x0acf, 68) // CA_LOGIN_OTP
+
+// Packet: 0x0ad0
+packetLen(0x0ad0, 11) // CA_OTP_CODE
+
+// Packet: 0x0ad1
+packetLen(0x0ad1, -1)
+
+// Packet: 0x0ad2
+packetLen(0x0ad2, 30)
+
+// Packet: 0x0ad3
+packetLen(0x0ad3, -1)
+
+// Packet: 0x0ad4
+packetLen(0x0ad4, -1)
+
+// Packet: 0x0ad5
+packetLen(0x0ad5, 2)
+
+// Packet: 0x0ad6
+packetLen(0x0ad6, 2)
+
+// Packet: 0x0ad7
+packetLen(0x0ad7, 8)
+
+// Packet: 0x0ad8
+packetLen(0x0ad8, 8)
+
+// Packet: 0x0ad9
+packetLen(0x0ad9, -1)
+
+// Packet: 0x0ada
+packetLen(0x0ada, 32) // ZC_REFINE_STATUS
+
+// Packet: 0x0adb
+packetLen(0x0adb, -1)
+
+// Packet: 0x0adc
+packetLen(0x0adc, 6) // ZC_EQUIPWIN_OTHER
+
+// Packet: 0x0add
+packetLen(0x0add, 24) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x0ade
+packetLen(0x0ade, 6) // ZC_OVERWEIGHT_PERCENT
+
+// Packet: 0x0adf
+packetLen(0x0adf, 58) // ZC_ACK_REQNAME
+
+// Packet: 0x0ae0
+packetLen(0x0ae0, 30)
+
+// Packet: 0x0ae1
+packetLen(0x0ae1, 28)
+
+// Packet: 0x0ae2
+packetLen(0x0ae2, 7) // ZC_OPEN_UI
+
+// Packet: 0x0ae3
+packetLen(0x0ae3, -1) // AC_LOGIN_OTP
+
+// Packet: 0x0ae4
+packetLen(0x0ae4, 89) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0ae5
+packetLen(0x0ae5, -1) // ZC_GROUP_LIST
+
+// Packet: 0x0ae6
+packetLen(0x0ae6, 10)
+
+// Packet: 0x0ae7
+packetLen(0x0ae7, 38)
+
+// Packet: 0x0ae8
+packetLen(0x0ae8, 2)
+
+// Packet: 0x0ae9
+packetLen(0x0ae9, 13) // HC_SECOND_PASSWD_LOGIN
+
+// Packet: 0x0aec
+packetLen(0x0aec, 2)
+
+// Packet: 0x0aed
+packetLen(0x0aed, 2)
+
+// Packet: 0x0aee
+packetLen(0x0aee, 2)
+
+// Packet: 0x0aef
+packetLen(0x0aef, 2) // CZ_ATTENDANCE_REWARD_REQUEST
+
+// Packet: 0x0af0
+packetLen(0x0af0, 10) // ZC_UI_ACTION
+
+// Packet: 0x0af2
+packetLen(0x0af2, 40)
+
+// Packet: 0x0af3
+packetLen(0x0af3, -1)
+
+// Packet: 0x0af4
+packetLen(0x0af4, 11) // CZ_USE_SKILL_TOGROUND
+
+// Packet: 0x0af5
+packetLen(0x0af5, 3)
+
+// Packet: 0x0af6
+packetLen(0x0af6, 88)
+
+// Packet: 0x0af7
+packetLen(0x0af7, 32) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0af8
+packetLen(0x0af8, 11)
+
+// Packet: 0x0af9
+packetLen(0x0af9, 6)
+
+// Packet: 0x0afa
+packetLen(0x0afa, 54)
+
+// Packet: 0x0afb
+packetLen(0x0afb, -1) // ZC_AUTOSPELLLIST
+
+// Packet: 0x0afc
+packetLen(0x0afc, 16)
+
+// Packet: 0x0afd
+packetLen(0x0afd, -1) // ZC_GUILD_POSITION
+
+// Packet: 0x0afe
+packetLen(0x0afe, -1) // ZC_UPDATE_MISSION_HUNT_EX
+
+// Packet: 0x0aff
+packetLen(0x0aff, -1) // ZC_ALL_QUEST_LIST4
+
+// Packet: 0x0b00
+packetLen(0x0b00, 8)
+
+// Packet: 0x0b01
+packetLen(0x0b01, 56)
+
+// Packet: 0x0b02
+packetLen(0x0b02, 26) // AC_REFUSE_LOGIN4
+
+// Packet: 0x0b03
+packetLen(0x0b03, -1) // ZC_EQUIPWIN_MICROSCOPE_V7
+
+// Packet: 0x0b04
+packetLen(0x0b04, 80)
+
+// Packet: 0x0b05
+packetLen(0x0b05, 63) // ZC_OFFLINE_STORE_VISIBLE
+
+// Packet: 0x0b07
+packetLen(0x0b07, -1)
+
+// Packet: 0x0b08
+packetLen(0x0b08, -1) // ZC_INVENTORY_START
+
+// Packet: 0x0b09
+packetLen(0x0b09, -1) // ZC_STORE_ITEMLIST_NORMAL_V6
+
+// Packet: 0x0b0a
+packetLen(0x0b0a, -1) // ZC_STORE_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0b0b
+packetLen(0x0b0b, 4) // ZC_INVENTORY_END
+
+// Packet: 0x0b0c
+packetLen(0x0b0c, 155) // ZC_ADD_QUEST_EX
+
+// Packet: 0x0b0d
+packetLen(0x0b0d, 10) // ZC_REMOVE_EFFECT
+
+// Packet: 0x0b0e
+packetLen(0x0b0e, -1) // ZC_NPC_BARTER_OPEN
+
+// Packet: 0x0b0f
+packetLen(0x0b0f, -1) // CZ_NPC_BARTER_PURCHASE
+
+// Packet: 0x0b10
+packetLen(0x0b10, 10) // CZ_START_USE_SKILL
+
+// Packet: 0x0b11
+packetLen(0x0b11, 4) // CZ_STOP_USE_SKILL
+
+// Packet: 0x0b12
+packetLen(0x0b12, 2) // CZ_NPC_BARTER_CLOSE
+
+// Packet: 0x0b13
+packetLen(0x0b13, 48) // ZC_ITEM_PREVIEW
+
+// Packet: 0x0b14
+packetLen(0x0b14, 2) // CZ_INVENTORY_EXPAND
+
+// Packet: 0x0b15
+packetLen(0x0b15, 7) // ZC_ACK_INVENTORY_EXPAND
+
+// Packet: 0x0b16
+packetLen(0x0b16, 2) // CZ_INVENTORY_EXPAND_CONFIRMED
+
+// Packet: 0x0b17
+packetLen(0x0b17, 3) // ZC_ACK_INVENTORY_EXPAND_RESULT
+
+// Packet: 0x0b18
+packetLen(0x0b18, 4) // ZC_INVENTORY_EXPANSION_INFO
+
+// Packet: 0x0b19
+packetLen(0x0b19, 2) // CZ_INVENTORY_EXPAND_REJECTED
+
+// Packet: 0x0b1a
+packetLen(0x0b1a, 29)
+
+
+#endif /* COMMON_PACKETS2019_LEN_RE_H */
diff --git a/src/common/packets/packets2019_len_zero.h b/src/common/packets/packets2019_len_zero.h
new file mode 100644
index 000000000..08e83f59f
--- /dev/null
+++ b/src/common/packets/packets2019_len_zero.h
@@ -0,0 +1,4386 @@
+/**
+ * This file is part of Hercules.
+ * http://herc.ws - http://github.com/HerculesWS/Hercules
+ *
+ * Copyright (C) 2018-2019 Hercules Dev Team
+ * Copyright (C) 2018-2019 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
+ * 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 COMMON_PACKETS2019_LEN_ZERO_H
+#define COMMON_PACKETS2019_LEN_ZERO_H
+
+/* This file is autogenerated, please do not commit manual changes */
+
+// Packet: 0x0064
+packetLen(0x0064, 55) // CA_LOGIN
+
+// Packet: 0x0065
+packetLen(0x0065, 17) // CH_ENTER
+
+// Packet: 0x0066
+packetLen(0x0066, 3) // CH_SELECT_CHAR
+
+// Packet: 0x0067
+packetLen(0x0067, 37) // CH_MAKE_CHAR
+
+// Packet: 0x0068
+packetLen(0x0068, 46) // CH_DELETE_CHAR
+
+// Packet: 0x0069
+packetLen(0x0069, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x006a
+packetLen(0x006a, 23) // AC_REFUSE_LOGIN
+
+// Packet: 0x006b
+packetLen(0x006b, -1) // HC_ACCEPT_ENTER
+
+// Packet: 0x006c
+packetLen(0x006c, 3) // HC_REFUSE_ENTER
+
+// Packet: 0x006d
+packetLen(0x006d, 157) // HC_ACCEPT_MAKECHAR
+
+// Packet: 0x006e
+packetLen(0x006e, 3) // HC_REFUSE_MAKECHAR
+
+// Packet: 0x006f
+packetLen(0x006f, 2) // HC_ACCEPT_DELETECHAR
+
+// Packet: 0x0070
+packetLen(0x0070, 3) // HC_REFUSE_DELETECHAR
+
+// Packet: 0x0071
+packetLen(0x0071, 28) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0072
+packetLen(0x0072, 22) // CZ_ENTER
+
+// Packet: 0x0073
+packetLen(0x0073, 11) // ZC_ACCEPT_ENTER
+
+// Packet: 0x0074
+packetLen(0x0074, 3) // ZC_REFUSE_ENTER
+
+// Packet: 0x0075
+packetLen(0x0075, -1) // ZC_NOTIFY_INITCHAR
+
+// Packet: 0x0076
+packetLen(0x0076, 9) // ZC_NOTIFY_UPDATECHAR
+
+// Packet: 0x0077
+packetLen(0x0077, 5) // ZC_NOTIFY_UPDATEPLAYER
+
+// Packet: 0x0078
+packetLen(0x0078, 55) // ZC_NOTIFY_STANDENTRY
+
+// Packet: 0x0079
+packetLen(0x0079, 53) // ZC_NOTIFY_NEWENTRY
+
+// Packet: 0x007a
+packetLen(0x007a, 58) // ZC_NOTIFY_ACTENTRY
+
+// Packet: 0x007b
+packetLen(0x007b, 60) // ZC_NOTIFY_MOVEENTRY
+
+// Packet: 0x007c
+packetLen(0x007c, 44) // ZC_NOTIFY_STANDENTRY_NPC
+
+// Packet: 0x007d
+packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
+
+// Packet: 0x007e
+packetLen(0x007e, 105) // CZ_REQUEST_TIME
+
+// Packet: 0x007f
+packetLen(0x007f, 6) // ZC_NOTIFY_TIME
+
+// Packet: 0x0080
+packetLen(0x0080, 7) // ZC_NOTIFY_VANISH
+
+// Packet: 0x0081
+packetLen(0x0081, 3) // SC_NOTIFY_BAN
+
+// Packet: 0x0082
+packetLen(0x0082, 2) // CZ_REQUEST_QUIT
+
+// Packet: 0x0083
+packetLen(0x0083, 2) // ZC_ACCEPT_QUIT
+
+// Packet: 0x0084
+packetLen(0x0084, 2) // ZC_REFUSE_QUIT
+
+// Packet: 0x0085
+packetLen(0x0085, 10) // CZ_REQUEST_MOVE
+
+// Packet: 0x0086
+packetLen(0x0086, 16) // ZC_NOTIFY_MOVE
+
+// Packet: 0x0087
+packetLen(0x0087, 12) // ZC_NOTIFY_PLAYERMOVE
+
+// Packet: 0x0088
+packetLen(0x0088, 10) // ZC_STOPMOVE
+
+// Packet: 0x0089
+packetLen(0x0089, 11) // CZ_REQUEST_ACT
+
+// Packet: 0x008a
+packetLen(0x008a, 29) // ZC_NOTIFY_ACT
+
+// Packet: 0x008b
+packetLen(0x008b, 23) // ZC_NOTIFY_ACT_POSITION
+
+// Packet: 0x008c
+packetLen(0x008c, 14)
+
+// Packet: 0x008d
+packetLen(0x008d, -1) // ZC_NOTIFY_CHAT
+
+// Packet: 0x008e
+packetLen(0x008e, -1) // ZC_NOTIFY_PLAYERCHAT
+
+// Packet: 0x0090
+packetLen(0x0090, 7) // CZ_CONTACTNPC
+
+// Packet: 0x0091
+packetLen(0x0091, 22) // ZC_NPCACK_MAPMOVE
+
+// Packet: 0x0092
+packetLen(0x0092, 28) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0093
+packetLen(0x0093, 2) // ZC_NPCACK_ENABLE
+
+// Packet: 0x0094
+packetLen(0x0094, 19) // CZ_REQNAME
+
+// Packet: 0x0095
+packetLen(0x0095, 30) // ZC_ACK_REQNAME
+
+// Packet: 0x0096
+packetLen(0x0096, -1) // CZ_WHISPER
+
+// Packet: 0x0097
+packetLen(0x0097, -1) // ZC_WHISPER
+
+// Packet: 0x0098
+packetLen(0x0098, 3) // ZC_ACK_WHISPER
+
+// Packet: 0x0099
+packetLen(0x0099, -1) // CZ_BROADCAST
+
+// Packet: 0x009a
+packetLen(0x009a, -1) // ZC_BROADCAST
+
+// Packet: 0x009b
+packetLen(0x009b, 34) // CZ_CHANGE_DIRECTION
+
+// Packet: 0x009c
+packetLen(0x009c, 9) // ZC_CHANGE_DIRECTION
+
+// Packet: 0x009d
+packetLen(0x009d, 19) // ZC_ITEM_ENTRY
+
+// Packet: 0x009e
+packetLen(0x009e, 19) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x009f
+packetLen(0x009f, 20) // CZ_ITEM_PICKUP
+
+// Packet: 0x00a0
+packetLen(0x00a0, 33) // ZC_ITEM_PICKUP_ACK
+
+// Packet: 0x00a1
+packetLen(0x00a1, 6) // ZC_ITEM_DISAPPEAR
+
+// Packet: 0x00a2
+packetLen(0x00a2, 14) // CZ_ITEM_THROW
+
+// Packet: 0x00a3
+packetLen(0x00a3, -1) // ZC_NORMAL_ITEMLIST
+
+// Packet: 0x00a4
+packetLen(0x00a4, -1) // ZC_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a5
+packetLen(0x00a5, -1) // ZC_STORE_NORMAL_ITEMLIST
+
+// Packet: 0x00a6
+packetLen(0x00a6, -1) // ZC_STORE_EQUIPMENT_ITEMLIST
+
+// Packet: 0x00a7
+packetLen(0x00a7, 9)
+
+// Packet: 0x00a8
+packetLen(0x00a8, 7) // ZC_USE_ITEM_ACK
+
+// Packet: 0x00a9
+packetLen(0x00a9, 6) // CZ_REQ_WEAR_EQUIP
+
+// Packet: 0x00aa
+packetLen(0x00aa, 9) // ZC_REQ_WEAR_EQUIP_ACK
+
+// Packet: 0x00ab
+packetLen(0x00ab, 4) // CZ_REQ_TAKEOFF_EQUIP
+
+// Packet: 0x00ac
+packetLen(0x00ac, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK
+
+// Packet: 0x00ae
+packetLen(0x00ae, -1) // ZC_REQ_ITEM_EXPLANATION_ACK
+
+// Packet: 0x00af
+packetLen(0x00af, 6) // ZC_ITEM_THROW_ACK
+
+// Packet: 0x00b0
+packetLen(0x00b0, 8) // ZC_PAR_CHANGE
+
+// Packet: 0x00b1
+packetLen(0x00b1, 8) // ZC_LONGPAR_CHANGE
+
+// Packet: 0x00b2
+packetLen(0x00b2, 3) // CZ_RESTART
+
+// Packet: 0x00b3
+packetLen(0x00b3, 3) // ZC_RESTART_ACK
+
+// Packet: 0x00b4
+packetLen(0x00b4, -1) // ZC_SAY_DIALOG
+
+// Packet: 0x00b5
+packetLen(0x00b5, 6) // ZC_WAIT_DIALOG
+
+// Packet: 0x00b6
+packetLen(0x00b6, 6) // ZC_CLOSE_DIALOG
+
+// Packet: 0x00b7
+packetLen(0x00b7, -1) // ZC_MENU_LIST
+
+// Packet: 0x00b8
+packetLen(0x00b8, 7) // CZ_CHOOSE_MENU
+
+// Packet: 0x00b9
+packetLen(0x00b9, 6) // CZ_REQ_NEXT_SCRIPT
+
+// Packet: 0x00ba
+packetLen(0x00ba, 2) // CZ_REQ_STATUS
+
+// Packet: 0x00bb
+packetLen(0x00bb, 5) // CZ_STATUS_CHANGE
+
+// Packet: 0x00bc
+packetLen(0x00bc, 6) // ZC_STATUS_CHANGE_ACK
+
+// Packet: 0x00bd
+packetLen(0x00bd, 44) // ZC_STATUS
+
+// Packet: 0x00be
+packetLen(0x00be, 5) // ZC_STATUS_CHANGE
+
+// Packet: 0x00bf
+packetLen(0x00bf, 3) // CZ_REQ_EMOTION
+
+// Packet: 0x00c0
+packetLen(0x00c0, 7) // ZC_EMOTION
+
+// Packet: 0x00c1
+packetLen(0x00c1, 2) // CZ_REQ_USER_COUNT
+
+// Packet: 0x00c2
+packetLen(0x00c2, 6) // ZC_USER_COUNT
+
+// Packet: 0x00c3
+packetLen(0x00c3, 8) // ZC_SPRITE_CHANGE
+
+// Packet: 0x00c4
+packetLen(0x00c4, 6) // ZC_SELECT_DEALTYPE
+
+// Packet: 0x00c5
+packetLen(0x00c5, 7) // CZ_ACK_SELECT_DEALTYPE
+
+// Packet: 0x00c6
+packetLen(0x00c6, -1) // ZC_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c7
+packetLen(0x00c7, -1) // ZC_PC_SELL_ITEMLIST
+
+// Packet: 0x00c8
+packetLen(0x00c8, -1) // CZ_PC_PURCHASE_ITEMLIST
+
+// Packet: 0x00c9
+packetLen(0x00c9, -1) // CZ_PC_SELL_ITEMLIST
+
+// Packet: 0x00ca
+packetLen(0x00ca, 3) // ZC_PC_PURCHASE_RESULT
+
+// Packet: 0x00cb
+packetLen(0x00cb, 3) // ZC_PC_SELL_RESULT
+
+// Packet: 0x00cc
+packetLen(0x00cc, 6) // CZ_DISCONNECT_CHARACTER
+
+// Packet: 0x00cd
+packetLen(0x00cd, 3) // ZC_ACK_DISCONNECT_CHARACTER
+
+// Packet: 0x00ce
+packetLen(0x00ce, 2) // CZ_DISCONNECT_ALL_CHARACTER
+
+// Packet: 0x00cf
+packetLen(0x00cf, 27) // CZ_SETTING_WHISPER_PC
+
+// Packet: 0x00d0
+packetLen(0x00d0, 3) // CZ_SETTING_WHISPER_STATE
+
+// Packet: 0x00d1
+packetLen(0x00d1, 4) // ZC_SETTING_WHISPER_PC
+
+// Packet: 0x00d2
+packetLen(0x00d2, 4) // ZC_SETTING_WHISPER_STATE
+
+// Packet: 0x00d3
+packetLen(0x00d3, 2) // CZ_REQ_WHISPER_LIST
+
+// Packet: 0x00d4
+packetLen(0x00d4, -1) // ZC_WHISPER_LIST
+
+// Packet: 0x00d5
+packetLen(0x00d5, -1) // CZ_CREATE_CHATROOM
+
+// Packet: 0x00d6
+packetLen(0x00d6, 3) // ZC_ACK_CREATE_CHATROOM
+
+// Packet: 0x00d7
+packetLen(0x00d7, -1) // ZC_ROOM_NEWENTRY
+
+// Packet: 0x00d8
+packetLen(0x00d8, 6) // ZC_DESTROY_ROOM
+
+// Packet: 0x00d9
+packetLen(0x00d9, 14) // CZ_REQ_ENTER_ROOM
+
+// Packet: 0x00da
+packetLen(0x00da, 3) // ZC_REFUSE_ENTER_ROOM
+
+// Packet: 0x00db
+packetLen(0x00db, -1) // ZC_ENTER_ROOM
+
+// Packet: 0x00dc
+packetLen(0x00dc, 28) // ZC_MEMBER_NEWENTRY
+
+// Packet: 0x00dd
+packetLen(0x00dd, 29) // ZC_MEMBER_EXIT
+
+// Packet: 0x00de
+packetLen(0x00de, -1) // CZ_CHANGE_CHATROOM
+
+// Packet: 0x00df
+packetLen(0x00df, -1) // ZC_CHANGE_CHATROOM
+
+// Packet: 0x00e0
+packetLen(0x00e0, 30) // CZ_REQ_ROLE_CHANGE
+
+// Packet: 0x00e1
+packetLen(0x00e1, 30) // ZC_ROLE_CHANGE
+
+// Packet: 0x00e2
+packetLen(0x00e2, 26) // CZ_REQ_EXPEL_MEMBER
+
+// Packet: 0x00e3
+packetLen(0x00e3, 2) // CZ_EXIT_ROOM
+
+// Packet: 0x00e4
+packetLen(0x00e4, 6) // CZ_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e5
+packetLen(0x00e5, 26) // ZC_REQ_EXCHANGE_ITEM
+
+// Packet: 0x00e6
+packetLen(0x00e6, 3) // CZ_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e7
+packetLen(0x00e7, 3) // ZC_ACK_EXCHANGE_ITEM
+
+// Packet: 0x00e8
+packetLen(0x00e8, 8) // CZ_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00e9
+packetLen(0x00e9, 29) // ZC_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00ea
+packetLen(0x00ea, 5) // ZC_ACK_ADD_EXCHANGE_ITEM
+
+// Packet: 0x00eb
+packetLen(0x00eb, 2) // CZ_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ec
+packetLen(0x00ec, 3) // ZC_CONCLUDE_EXCHANGE_ITEM
+
+// Packet: 0x00ed
+packetLen(0x00ed, 2) // CZ_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ee
+packetLen(0x00ee, 2) // ZC_CANCEL_EXCHANGE_ITEM
+
+// Packet: 0x00ef
+packetLen(0x00ef, 2) // CZ_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f0
+packetLen(0x00f0, 3) // ZC_EXEC_EXCHANGE_ITEM
+
+// Packet: 0x00f1
+packetLen(0x00f1, 2) // ZC_EXCHANGEITEM_UNDO
+
+// Packet: 0x00f2
+packetLen(0x00f2, 6) // ZC_NOTIFY_STOREITEM_COUNTINFO
+
+// Packet: 0x00f3
+packetLen(0x00f3, -1) // CZ_REQUEST_CHAT
+
+// Packet: 0x00f4
+packetLen(0x00f4, 31) // ZC_ADD_ITEM_TO_STORE
+
+// Packet: 0x00f5
+packetLen(0x00f5, 11) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+
+// Packet: 0x00f6
+packetLen(0x00f6, 8) // ZC_DELETE_ITEM_FROM_STORE
+
+// Packet: 0x00f7
+packetLen(0x00f7, 17) // CZ_REQUEST_TIME
+
+// Packet: 0x00f8
+packetLen(0x00f8, 2) // ZC_CLOSE_STORE
+
+// Packet: 0x00f9
+packetLen(0x00f9, 26) // CZ_MAKE_GROUP
+
+// Packet: 0x00fa
+packetLen(0x00fa, 3) // ZC_ACK_MAKE_GROUP
+
+// Packet: 0x00fb
+packetLen(0x00fb, -1) // ZC_GROUP_LIST
+
+// Packet: 0x00fc
+packetLen(0x00fc, 6) // CZ_REQ_JOIN_GROUP
+
+// Packet: 0x00fd
+packetLen(0x00fd, 27) // ZC_ACK_REQ_JOIN_GROUP
+
+// Packet: 0x00fe
+packetLen(0x00fe, 30) // ZC_REQ_JOIN_GROUP
+
+// Packet: 0x00ff
+packetLen(0x00ff, 10) // CZ_JOIN_GROUP
+
+// Packet: 0x0100
+packetLen(0x0100, 2) // CZ_REQ_LEAVE_GROUP
+
+// Packet: 0x0101
+packetLen(0x0101, 6) // ZC_GROUPINFO_CHANGE
+
+// Packet: 0x0102
+packetLen(0x0102, 6) // CZ_CHANGE_GROUPEXPOPTION
+
+// Packet: 0x0103
+packetLen(0x0103, 30) // CZ_REQ_EXPEL_GROUP_MEMBER
+
+// Packet: 0x0104
+packetLen(0x0104, 79) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0105
+packetLen(0x0105, 31) // ZC_DELETE_MEMBER_FROM_GROUP
+
+// Packet: 0x0106
+packetLen(0x0106, 10) // ZC_NOTIFY_HP_TO_GROUPM
+
+// Packet: 0x0107
+packetLen(0x0107, 10) // ZC_NOTIFY_POSITION_TO_GROUPM
+
+// Packet: 0x0108
+packetLen(0x0108, -1) // CZ_REQUEST_CHAT_PARTY
+
+// Packet: 0x0109
+packetLen(0x0109, -1) // ZC_NOTIFY_CHAT_PARTY
+
+// Packet: 0x010a
+packetLen(0x010a, 6) // ZC_MVP_GETTING_ITEM
+
+// Packet: 0x010b
+packetLen(0x010b, 6) // ZC_MVP_GETTING_SPECIAL_EXP
+
+// Packet: 0x010c
+packetLen(0x010c, 6) // ZC_MVP
+
+// Packet: 0x010d
+packetLen(0x010d, 2) // ZC_THROW_MVPITEM
+
+// Packet: 0x010e
+packetLen(0x010e, 11) // ZC_SKILLINFO_UPDATE
+
+// Packet: 0x010f
+packetLen(0x010f, -1) // ZC_SKILLINFO_LIST
+
+// Packet: 0x0110
+packetLen(0x0110, 14) // ZC_ACK_TOUSESKILL
+
+// Packet: 0x0111
+packetLen(0x0111, 39) // ZC_ADD_SKILL
+
+// Packet: 0x0112
+packetLen(0x0112, 4) // CZ_UPGRADE_SKILLLEVEL
+
+// Packet: 0x0113
+packetLen(0x0113, 25) // CZ_USE_SKILL
+
+// Packet: 0x0114
+packetLen(0x0114, 31) // ZC_NOTIFY_SKILL
+
+// Packet: 0x0115
+packetLen(0x0115, 35) // ZC_NOTIFY_SKILL_POSITION
+
+// Packet: 0x0116
+packetLen(0x0116, 17) // CZ_USE_SKILL_TOGROUND
+
+// Packet: 0x0117
+packetLen(0x0117, 18) // ZC_NOTIFY_GROUNDSKILL
+
+// Packet: 0x0118
+packetLen(0x0118, 2) // CZ_CANCEL_LOCKON
+
+// Packet: 0x0119
+packetLen(0x0119, 13) // ZC_STATE_CHANGE
+
+// Packet: 0x011a
+packetLen(0x011a, 15) // ZC_USE_SKILL
+
+// Packet: 0x011b
+packetLen(0x011b, 20) // CZ_SELECT_WARPPOINT
+
+// Packet: 0x011c
+packetLen(0x011c, 68) // ZC_WARPLIST
+
+// Packet: 0x011d
+packetLen(0x011d, 2) // CZ_REMEMBER_WARPPOINT
+
+// Packet: 0x011e
+packetLen(0x011e, 3) // ZC_ACK_REMEMBER_WARPPOINT
+
+// Packet: 0x011f
+packetLen(0x011f, 16) // ZC_SKILL_ENTRY
+
+// Packet: 0x0120
+packetLen(0x0120, 6) // ZC_SKILL_DISAPPEAR
+
+// Packet: 0x0121
+packetLen(0x0121, 14) // ZC_NOTIFY_CARTITEM_COUNTINFO
+
+// Packet: 0x0122
+packetLen(0x0122, -1) // ZC_CART_EQUIPMENT_ITEMLIST
+
+// Packet: 0x0123
+packetLen(0x0123, -1) // ZC_CART_NORMAL_ITEMLIST
+
+// Packet: 0x0124
+packetLen(0x0124, 31) // ZC_ADD_ITEM_TO_CART
+
+// Packet: 0x0125
+packetLen(0x0125, 8) // ZC_DELETE_ITEM_FROM_CART
+
+// Packet: 0x0126
+packetLen(0x0126, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_CART
+
+// Packet: 0x0127
+packetLen(0x0127, 8) // CZ_MOVE_ITEM_FROM_CART_TO_BODY
+
+// Packet: 0x0128
+packetLen(0x0128, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_CART
+
+// Packet: 0x0129
+packetLen(0x0129, 8) // CZ_MOVE_ITEM_FROM_CART_TO_STORE
+
+// Packet: 0x012a
+packetLen(0x012a, 2) // CZ_REQ_CARTOFF
+
+// Packet: 0x012b
+packetLen(0x012b, 2) // ZC_CARTOFF
+
+// Packet: 0x012c
+packetLen(0x012c, 3) // ZC_ACK_ADDITEM_TO_CART
+
+// Packet: 0x012d
+packetLen(0x012d, 4) // ZC_OPENSTORE
+
+// Packet: 0x012e
+packetLen(0x012e, 2) // CZ_REQ_CLOSESTORE
+
+// Packet: 0x012f
+packetLen(0x012f, -1) // CZ_REQ_OPENSTORE
+
+// Packet: 0x0130
+packetLen(0x0130, 6) // CZ_REQ_BUY_FROMMC
+
+// Packet: 0x0131
+packetLen(0x0131, 86) // ZC_STORE_ENTRY
+
+// Packet: 0x0132
+packetLen(0x0132, 6) // ZC_DISAPPEAR_ENTRY
+
+// Packet: 0x0133
+packetLen(0x0133, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0134
+packetLen(0x0134, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC
+
+// Packet: 0x0135
+packetLen(0x0135, 7) // ZC_PC_PURCHASE_RESULT_FROMMC
+
+// Packet: 0x0136
+packetLen(0x0136, -1) // ZC_PC_PURCHASE_MYITEMLIST
+
+// Packet: 0x0137
+packetLen(0x0137, 6) // ZC_DELETEITEM_FROM_MCSTORE
+
+// Packet: 0x0138
+packetLen(0x0138, 3) // CZ_PKMODE_CHANGE
+
+// Packet: 0x0139
+packetLen(0x0139, 16) // ZC_ATTACK_FAILURE_FOR_DISTANCE
+
+// Packet: 0x013a
+packetLen(0x013a, 4) // ZC_ATTACK_RANGE
+
+// Packet: 0x013b
+packetLen(0x013b, 4) // ZC_ACTION_FAILURE
+
+// Packet: 0x013c
+packetLen(0x013c, 4) // ZC_EQUIP_ARROW
+
+// Packet: 0x013d
+packetLen(0x013d, 6) // ZC_RECOVERY
+
+// Packet: 0x013e
+packetLen(0x013e, 24) // ZC_USESKILL_ACK
+
+// Packet: 0x013f
+packetLen(0x013f, 26) // CZ_ITEM_CREATE
+
+// Packet: 0x0140
+packetLen(0x0140, 22) // CZ_MOVETO_MAP
+
+// Packet: 0x0141
+packetLen(0x0141, 14) // ZC_COUPLESTATUS
+
+// Packet: 0x0142
+packetLen(0x0142, 6) // ZC_OPEN_EDITDLG
+
+// Packet: 0x0143
+packetLen(0x0143, 10) // CZ_INPUT_EDITDLG
+
+// Packet: 0x0144
+packetLen(0x0144, 23) // ZC_COMPASS
+
+// Packet: 0x0145
+packetLen(0x0145, 19) // ZC_SHOW_IMAGE
+
+// Packet: 0x0146
+packetLen(0x0146, 6) // CZ_CLOSE_DIALOG
+
+// Packet: 0x0147
+packetLen(0x0147, 39) // ZC_AUTORUN_SKILL
+
+// Packet: 0x0148
+packetLen(0x0148, 8) // ZC_RESURRECTION
+
+// Packet: 0x0149
+packetLen(0x0149, 9) // CZ_REQ_GIVE_MANNER_POINT
+
+// Packet: 0x014a
+packetLen(0x014a, 6) // ZC_ACK_GIVE_MANNER_POINT
+
+// Packet: 0x014b
+packetLen(0x014b, 27) // ZC_NOTIFY_MANNER_POINT_GIVEN
+
+// Packet: 0x014c
+packetLen(0x014c, -1) // ZC_MYGUILD_BASIC_INFO
+
+// Packet: 0x014d
+packetLen(0x014d, 2) // CZ_REQ_GUILD_MENUINTERFACE
+
+// Packet: 0x014e
+packetLen(0x014e, 6) // ZC_ACK_GUILD_MENUINTERFACE
+
+// Packet: 0x014f
+packetLen(0x014f, 6) // CZ_REQ_GUILD_MENU
+
+// Packet: 0x0150
+packetLen(0x0150, 110) // ZC_GUILD_INFO
+
+// Packet: 0x0151
+packetLen(0x0151, 6) // CZ_REQ_GUILD_EMBLEM_IMG
+
+// Packet: 0x0152
+packetLen(0x0152, -1) // ZC_GUILD_EMBLEM_IMG
+
+// Packet: 0x0153
+packetLen(0x0153, -1) // CZ_REGISTER_GUILD_EMBLEM_IMG
+
+// Packet: 0x0154
+packetLen(0x0154, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0155
+packetLen(0x0155, -1) // CZ_REQ_CHANGE_MEMBERPOS
+
+// Packet: 0x0156
+packetLen(0x0156, -1) // ZC_ACK_REQ_CHANGE_MEMBERS
+
+// Packet: 0x0157
+packetLen(0x0157, 6) // CZ_REQ_OPEN_MEMBER_INFO
+
+// Packet: 0x0159
+packetLen(0x0159, 54) // CZ_REQ_LEAVE_GUILD
+
+// Packet: 0x015a
+packetLen(0x015a, 66) // ZC_ACK_LEAVE_GUILD
+
+// Packet: 0x015b
+packetLen(0x015b, 54) // CZ_REQ_BAN_GUILD
+
+// Packet: 0x015c
+packetLen(0x015c, 90) // ZC_ACK_BAN_GUILD
+
+// Packet: 0x015d
+packetLen(0x015d, 42) // CZ_REQ_DISORGANIZE_GUILD
+
+// Packet: 0x015e
+packetLen(0x015e, 6) // ZC_ACK_DISORGANIZE_GUILD_RESULT
+
+// Packet: 0x015f
+packetLen(0x015f, 42) // ZC_ACK_DISORGANIZE_GUILD
+
+// Packet: 0x0160
+packetLen(0x0160, -1) // ZC_POSITION_INFO
+
+// Packet: 0x0161
+packetLen(0x0161, -1) // CZ_REG_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0162
+packetLen(0x0162, -1) // ZC_GUILD_SKILLINFO
+
+// Packet: 0x0163
+packetLen(0x0163, -1) // ZC_BAN_LIST
+
+// Packet: 0x0164
+packetLen(0x0164, -1) // ZC_OTHER_GUILD_LIST
+
+// Packet: 0x0165
+packetLen(0x0165, 30) // CZ_REQ_MAKE_GUILD
+
+// Packet: 0x0166
+packetLen(0x0166, -1) // ZC_POSITION_ID_NAME_INFO
+
+// Packet: 0x0167
+packetLen(0x0167, 3) // ZC_RESULT_MAKE_GUILD
+
+// Packet: 0x0168
+packetLen(0x0168, 14) // CZ_REQ_JOIN_GUILD
+
+// Packet: 0x0169
+packetLen(0x0169, 3) // ZC_ACK_REQ_JOIN_GUILD
+
+// Packet: 0x016a
+packetLen(0x016a, 30) // ZC_REQ_JOIN_GUILD
+
+// Packet: 0x016b
+packetLen(0x016b, 10) // CZ_JOIN_GUILD
+
+// Packet: 0x016c
+packetLen(0x016c, 43) // ZC_UPDATE_GDID
+
+// Packet: 0x016d
+packetLen(0x016d, 14) // ZC_UPDATE_CHARSTAT
+
+// Packet: 0x016e
+packetLen(0x016e, 186) // CZ_GUILD_NOTICE
+
+// Packet: 0x016f
+packetLen(0x016f, 182) // ZC_GUILD_NOTICE
+
+// Packet: 0x0170
+packetLen(0x0170, 14) // CZ_REQ_ALLY_GUILD
+
+// Packet: 0x0171
+packetLen(0x0171, 30) // ZC_REQ_ALLY_GUILD
+
+// Packet: 0x0172
+packetLen(0x0172, 10) // CZ_ALLY_GUILD
+
+// Packet: 0x0173
+packetLen(0x0173, 3) // ZC_ACK_REQ_ALLY_GUILD
+
+// Packet: 0x0174
+packetLen(0x0174, -1) // ZC_ACK_CHANGE_GUILD_POSITIONINFO
+
+// Packet: 0x0175
+packetLen(0x0175, 6) // CZ_REQ_GUILD_MEMBER_INFO
+
+// Packet: 0x0176
+packetLen(0x0176, 106) // ZC_ACK_GUILD_MEMBER_INFO
+
+// Packet: 0x0177
+packetLen(0x0177, -1) // ZC_ITEMIDENTIFY_LIST
+
+// Packet: 0x0178
+packetLen(0x0178, 4) // CZ_REQ_ITEMIDENTIFY
+
+// Packet: 0x0179
+packetLen(0x0179, 5) // ZC_ACK_ITEMIDENTIFY
+
+// Packet: 0x017a
+packetLen(0x017a, 4) // CZ_REQ_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017b
+packetLen(0x017b, -1) // ZC_ITEMCOMPOSITION_LIST
+
+// Packet: 0x017c
+packetLen(0x017c, 6) // CZ_REQ_ITEMCOMPOSITION
+
+// Packet: 0x017d
+packetLen(0x017d, 7) // ZC_ACK_ITEMCOMPOSITION
+
+// Packet: 0x017e
+packetLen(0x017e, -1) // CZ_GUILD_CHAT
+
+// Packet: 0x017f
+packetLen(0x017f, -1) // ZC_GUILD_CHAT
+
+// Packet: 0x0180
+packetLen(0x0180, 6) // CZ_REQ_HOSTILE_GUILD
+
+// Packet: 0x0181
+packetLen(0x0181, 3) // ZC_ACK_REQ_HOSTILE_GUILD
+
+// Packet: 0x0182
+packetLen(0x0182, 106) // ZC_MEMBER_ADD
+
+// Packet: 0x0183
+packetLen(0x0183, 10) // CZ_REQ_DELETE_RELATED_GUILD
+
+// Packet: 0x0184
+packetLen(0x0184, 10) // ZC_DELETE_RELATED_GUILD
+
+// Packet: 0x0185
+packetLen(0x0185, 34) // ZC_ADD_RELATED_GUILD
+
+// Packet: 0x0187
+packetLen(0x0187, 6) // CH_UNKNOWN_PING
+
+// Packet: 0x0188
+packetLen(0x0188, 8) // ZC_ACK_ITEMREFINING
+
+// Packet: 0x0189
+packetLen(0x0189, 4) // ZC_NOTIFY_MAPINFO
+
+// Packet: 0x018a
+packetLen(0x018a, 4) // CZ_REQ_DISCONNECT
+
+// Packet: 0x018b
+packetLen(0x018b, 4) // ZC_ACK_REQ_DISCONNECT
+
+// Packet: 0x018c
+packetLen(0x018c, 29) // ZC_MONSTER_INFO
+
+// Packet: 0x018d
+packetLen(0x018d, -1) // ZC_MAKABLEITEMLIST
+
+// Packet: 0x018e
+packetLen(0x018e, 18) // CZ_REQMAKINGITEM
+
+// Packet: 0x018f
+packetLen(0x018f, 8) // ZC_ACK_REQMAKINGITEM
+
+// Packet: 0x0190
+packetLen(0x0190, 23) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+
+// Packet: 0x0191
+packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+
+// Packet: 0x0192
+packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
+
+// Packet: 0x0193
+packetLen(0x0193, 2) // CZ_REQNAME_BYGID
+
+// Packet: 0x0194
+packetLen(0x0194, 30) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0195
+packetLen(0x0195, 102) // ZC_ACK_REQNAMEALL
+
+// Packet: 0x0196
+packetLen(0x0196, 9) // ZC_MSG_STATE_CHANGE
+
+// Packet: 0x0197
+packetLen(0x0197, 4) // CZ_RESET
+
+// Packet: 0x0198
+packetLen(0x0198, 8) // CZ_CHANGE_MAPTYPE
+
+// Packet: 0x0199
+packetLen(0x0199, 4) // ZC_NOTIFY_MAPPROPERTY
+
+// Packet: 0x019a
+packetLen(0x019a, 14) // ZC_NOTIFY_RANKING
+
+// Packet: 0x019b
+packetLen(0x019b, 10) // ZC_NOTIFY_EFFECT
+
+// Packet: 0x019c
+packetLen(0x019c, -1) // CZ_LOCALBROADCAST
+
+// Packet: 0x019d
+packetLen(0x019d, 6) // CZ_CHANGE_EFFECTSTATE
+
+// Packet: 0x019e
+packetLen(0x019e, 2) // ZC_START_CAPTURE
+
+// Packet: 0x019f
+packetLen(0x019f, 6) // CZ_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a0
+packetLen(0x01a0, 3) // ZC_TRYCAPTURE_MONSTER
+
+// Packet: 0x01a1
+packetLen(0x01a1, 3) // CZ_COMMAND_PET
+
+// Packet: 0x01a2
+packetLen(0x01a2, 37) // ZC_PROPERTY_PET
+
+// Packet: 0x01a3
+packetLen(0x01a3, 7) // ZC_FEED_PET
+
+// Packet: 0x01a4
+packetLen(0x01a4, 11) // ZC_CHANGESTATE_PET
+
+// Packet: 0x01a5
+packetLen(0x01a5, 26) // CZ_RENAME_PET
+
+// Packet: 0x01a6
+packetLen(0x01a6, -1) // ZC_PETEGG_LIST
+
+// Packet: 0x01a7
+packetLen(0x01a7, 4) // CZ_SELECT_PETEGG
+
+// Packet: 0x01a8
+packetLen(0x01a8, 4) // CZ_PETEGG_INFO
+
+// Packet: 0x01a9
+packetLen(0x01a9, 6) // CZ_PET_ACT
+
+// Packet: 0x01aa
+packetLen(0x01aa, 10) // ZC_PET_ACT
+
+// Packet: 0x01ab
+packetLen(0x01ab, 12) // ZC_PAR_CHANGE_USER
+
+// Packet: 0x01ac
+packetLen(0x01ac, 6) // ZC_SKILL_UPDATE
+
+// Packet: 0x01ad
+packetLen(0x01ad, -1) // ZC_MAKINGARROW_LIST
+
+// Packet: 0x01ae
+packetLen(0x01ae, 6) // CZ_REQ_MAKINGARROW
+
+// Packet: 0x01af
+packetLen(0x01af, 4) // CZ_REQ_CHANGECART
+
+// Packet: 0x01b0
+packetLen(0x01b0, 11) // ZC_NPCSPRITE_CHANGE
+
+// Packet: 0x01b1
+packetLen(0x01b1, 7) // ZC_SHOWDIGIT
+
+// Packet: 0x01b2
+packetLen(0x01b2, -1) // CZ_REQ_OPENSTORE2
+
+// Packet: 0x01b3
+packetLen(0x01b3, 67) // ZC_SHOW_IMAGE2
+
+// Packet: 0x01b4
+packetLen(0x01b4, 12) // ZC_CHANGE_GUILD
+
+// Packet: 0x01b5
+packetLen(0x01b5, 18) // SC_BILLING_INFO
+
+// Packet: 0x01b6
+packetLen(0x01b6, 114) // ZC_GUILD_INFO2
+
+// Packet: 0x01b7
+packetLen(0x01b7, 6) // CZ_GUILD_ZENY
+
+// Packet: 0x01b8
+packetLen(0x01b8, 3) // ZC_GUILD_ZENY_ACK
+
+// Packet: 0x01b9
+packetLen(0x01b9, 6) // ZC_DISPEL
+
+// Packet: 0x01ba
+packetLen(0x01ba, 26) // CZ_REMOVE_AID
+
+// Packet: 0x01bb
+packetLen(0x01bb, 26) // CZ_SHIFT
+
+// Packet: 0x01bc
+packetLen(0x01bc, 26) // CZ_RECALL
+
+// Packet: 0x01bd
+packetLen(0x01bd, 26) // CZ_RECALL_GID
+
+// Packet: 0x01be
+packetLen(0x01be, 2) // AC_ASK_PNGAMEROOM
+
+// Packet: 0x01bf
+packetLen(0x01bf, 3) // CA_REPLY_PNGAMEROOM
+
+// Packet: 0x01c0
+packetLen(0x01c0, 2) // CZ_REQ_REMAINTIME
+
+// Packet: 0x01c1
+packetLen(0x01c1, 14) // ZC_REPLY_REMAINTIME
+
+// Packet: 0x01c2
+packetLen(0x01c2, 10) // ZC_INFO_REMAINTIME
+
+// Packet: 0x01c3
+packetLen(0x01c3, -1) // ZC_BROADCAST2
+
+// Packet: 0x01c4
+packetLen(0x01c4, 32) // ZC_ADD_ITEM_TO_STORE2
+
+// Packet: 0x01c5
+packetLen(0x01c5, 32) // ZC_ADD_ITEM_TO_CART2
+
+// Packet: 0x01c6
+packetLen(0x01c6, 4) // CS_REQ_ENCRYPTION
+
+// Packet: 0x01c7
+packetLen(0x01c7, 2) // SC_ACK_ENCRYPTION
+
+// Packet: 0x01c8
+packetLen(0x01c8, 15) // ZC_USE_ITEM_ACK2
+
+// Packet: 0x01c9
+packetLen(0x01c9, 97) // ZC_SKILL_ENTRY2
+
+// Packet: 0x01ca
+packetLen(0x01ca, 3) // CZ_REQMAKINGHOMUN
+
+// Packet: 0x01cb
+packetLen(0x01cb, 9) // CZ_MONSTER_TALK
+
+// Packet: 0x01cc
+packetLen(0x01cc, 9) // ZC_MONSTER_TALK
+
+// Packet: 0x01cd
+packetLen(0x01cd, 30) // ZC_AUTOSPELLLIST
+
+// Packet: 0x01ce
+packetLen(0x01ce, 6) // CZ_SELECTAUTOSPELL
+
+// Packet: 0x01cf
+packetLen(0x01cf, 28) // ZC_DEVOTIONLIST
+
+// Packet: 0x01d0
+packetLen(0x01d0, 8) // ZC_SPIRITS
+
+// Packet: 0x01d1
+packetLen(0x01d1, 14) // ZC_BLADESTOP
+
+// Packet: 0x01d2
+packetLen(0x01d2, 10) // ZC_COMBODELAY
+
+// Packet: 0x01d3
+packetLen(0x01d3, 35) // ZC_SOUND
+
+// Packet: 0x01d4
+packetLen(0x01d4, 6) // ZC_OPEN_EDITDLGSTR
+
+// Packet: 0x01d5
+packetLen(0x01d5, -1) // CZ_INPUT_EDITDLGSTR
+
+// Packet: 0x01d6
+packetLen(0x01d6, 4) // ZC_NOTIFY_MAPPROPERTY2
+
+// Packet: 0x01d7
+packetLen(0x01d7, 15) // ZC_SPRITE_CHANGE2
+
+// Packet: 0x01d8
+packetLen(0x01d8, 58) // ZC_NOTIFY_STANDENTRY2
+
+// Packet: 0x01d9
+packetLen(0x01d9, 57) // ZC_NOTIFY_NEWENTRY2
+
+// Packet: 0x01da
+packetLen(0x01da, 64) // ZC_NOTIFY_MOVEENTRY2
+
+// Packet: 0x01db
+packetLen(0x01db, 2) // CA_REQ_HASH
+
+// Packet: 0x01dc
+packetLen(0x01dc, -1) // AC_ACK_HASH
+
+// Packet: 0x01dd
+packetLen(0x01dd, 47) // CA_LOGIN2
+
+// Packet: 0x01de
+packetLen(0x01de, 33) // ZC_NOTIFY_SKILL2
+
+// Packet: 0x01df
+packetLen(0x01df, 6) // CZ_REQ_ACCOUNTNAME
+
+// Packet: 0x01e0
+packetLen(0x01e0, 30) // ZC_ACK_ACCOUNTNAME
+
+// Packet: 0x01e1
+packetLen(0x01e1, 8) // ZC_SPIRITS2
+
+// Packet: 0x01e2
+packetLen(0x01e2, 34) // ZC_REQ_COUPLE
+
+// Packet: 0x01e3
+packetLen(0x01e3, 14) // CZ_JOIN_COUPLE
+
+// Packet: 0x01e4
+packetLen(0x01e4, 2) // ZC_START_COUPLE
+
+// Packet: 0x01e5
+packetLen(0x01e5, 6) // CZ_REQ_JOIN_COUPLE
+
+// Packet: 0x01e6
+packetLen(0x01e6, 26) // ZC_COUPLENAME
+
+// Packet: 0x01e7
+packetLen(0x01e7, 2) // CZ_DORIDORI
+
+// Packet: 0x01e8
+packetLen(0x01e8, 28) // CZ_MAKE_GROUP2
+
+// Packet: 0x01e9
+packetLen(0x01e9, 81) // ZC_ADD_MEMBER_TO_GROUP2
+
+// Packet: 0x01ea
+packetLen(0x01ea, 6) // ZC_CONGRATULATION
+
+// Packet: 0x01eb
+packetLen(0x01eb, 10) // ZC_NOTIFY_POSITION_TO_GUILDM
+
+// Packet: 0x01ec
+packetLen(0x01ec, 26) // ZC_GUILD_MEMBER_MAP_CHANGE
+
+// Packet: 0x01ed
+packetLen(0x01ed, 2) // CZ_CHOPOKGI
+
+// Packet: 0x01ee
+packetLen(0x01ee, -1) // ZC_NORMAL_ITEMLIST2
+
+// Packet: 0x01ef
+packetLen(0x01ef, -1) // ZC_CART_NORMAL_ITEMLIST2
+
+// Packet: 0x01f0
+packetLen(0x01f0, -1) // ZC_STORE_NORMAL_ITEMLIST2
+
+// Packet: 0x01f1
+packetLen(0x01f1, -1) // AC_NOTIFY_ERROR
+
+// Packet: 0x01f2
+packetLen(0x01f2, 20) // ZC_UPDATE_CHARSTAT2
+
+// Packet: 0x01f3
+packetLen(0x01f3, 10) // ZC_NOTIFY_EFFECT2
+
+// Packet: 0x01f4
+packetLen(0x01f4, 32) // ZC_REQ_EXCHANGE_ITEM2
+
+// Packet: 0x01f5
+packetLen(0x01f5, 9) // ZC_ACK_EXCHANGE_ITEM2
+
+// Packet: 0x01f6
+packetLen(0x01f6, 34) // ZC_REQ_BABY
+
+// Packet: 0x01f7
+packetLen(0x01f7, 14) // CZ_JOIN_BABY
+
+// Packet: 0x01f8
+packetLen(0x01f8, 2) // ZC_START_BABY
+
+// Packet: 0x01f9
+packetLen(0x01f9, 6) // CZ_REQ_JOIN_BABY
+
+// Packet: 0x01fa
+packetLen(0x01fa, 48) // CA_LOGIN3
+
+// Packet: 0x01fb
+packetLen(0x01fb, 56) // CH_DELETE_CHAR2
+
+// Packet: 0x01fc
+packetLen(0x01fc, -1) // ZC_REPAIRITEMLIST
+
+// Packet: 0x01fd
+packetLen(0x01fd, 25) // CZ_REQ_ITEMREPAIR
+
+// Packet: 0x01fe
+packetLen(0x01fe, 5) // ZC_ACK_ITEMREPAIR
+
+// Packet: 0x01ff
+packetLen(0x01ff, 10) // ZC_HIGHJUMP
+
+// Packet: 0x0200
+packetLen(0x0200, 26) // CA_CONNECT_INFO_CHANGED
+
+// Packet: 0x0201
+packetLen(0x0201, -1) // ZC_FRIENDS_LIST
+
+// Packet: 0x0202
+packetLen(0x0202, 26) // CZ_ADD_FRIENDS
+
+// Packet: 0x0203
+packetLen(0x0203, 10) // CZ_DELETE_FRIENDS
+
+// Packet: 0x0204
+packetLen(0x0204, 18) // CA_EXE_HASHCHECK
+
+// Packet: 0x0205
+packetLen(0x0205, 26) // ZC_DIVORCE
+
+// Packet: 0x0206
+packetLen(0x0206, 35) // ZC_FRIENDS_STATE
+
+// Packet: 0x0207
+packetLen(0x0207, 34) // ZC_REQ_ADD_FRIENDS
+
+// Packet: 0x0208
+packetLen(0x0208, 14) // CZ_ACK_REQ_ADD_FRIENDS
+
+// Packet: 0x0209
+packetLen(0x0209, 36) // ZC_ADD_FRIENDS_LIST
+
+// Packet: 0x020a
+packetLen(0x020a, 10) // ZC_DELETE_FRIENDS
+
+// Packet: 0x020d
+packetLen(0x020d, -1) // HC_BLOCK_CHARACTER
+
+// Packet: 0x020e
+packetLen(0x020e, 32) // ZC_STARSKILL
+
+// Packet: 0x0212
+packetLen(0x0212, 26) // CZ_REQ_GIVE_MANNER_BYNAME
+
+// Packet: 0x0213
+packetLen(0x0213, 26) // CZ_REQ_STATUS_GM
+
+// Packet: 0x0214
+packetLen(0x0214, 42) // ZC_ACK_STATUS_GM
+
+// Packet: 0x0215
+packetLen(0x0215, 6) // ZC_SKILLMSG
+
+// Packet: 0x0216
+packetLen(0x0216, 6) // ZC_BABYMSG
+
+// Packet: 0x0217
+packetLen(0x0217, 2) // CZ_BLACKSMITH_RANK
+
+// Packet: 0x0218
+packetLen(0x0218, 2) // CZ_ALCHEMIST_RANK
+
+// Packet: 0x0219
+packetLen(0x0219, 282) // ZC_BLACKSMITH_RANK
+
+// Packet: 0x021a
+packetLen(0x021a, 282) // ZC_ALCHEMIST_RANK
+
+// Packet: 0x021b
+packetLen(0x021b, 10) // ZC_BLACKSMITH_POINT
+
+// Packet: 0x021c
+packetLen(0x021c, 10) // ZC_ALCHEMIST_POINT
+
+// Packet: 0x021d
+packetLen(0x021d, 6) // CZ_LESSEFFECT
+
+// Packet: 0x021e
+packetLen(0x021e, 6) // ZC_LESSEFFECT
+
+// Packet: 0x021f
+packetLen(0x021f, 66) // ZC_NOTIFY_PKINFO
+
+// Packet: 0x0220
+packetLen(0x0220, 10) // ZC_NOTIFY_CRAZYKILLER
+
+// Packet: 0x0221
+packetLen(0x0221, -1) // ZC_NOTIFY_WEAPONITEMLIST
+
+// Packet: 0x0222
+packetLen(0x0222, 6) // CZ_REQ_WEAPONREFINE
+
+// Packet: 0x0223
+packetLen(0x0223, 10) // ZC_ACK_WEAPONREFINE
+
+// Packet: 0x0224
+packetLen(0x0224, 10) // ZC_TAEKWON_POINT
+
+// Packet: 0x0225
+packetLen(0x0225, 2) // CZ_TAEKWON_RANK
+
+// Packet: 0x0226
+packetLen(0x0226, 282) // ZC_TAEKWON_RANK
+
+// Packet: 0x0227
+packetLen(0x0227, 18) // ZC_GAME_GUARD
+
+// Packet: 0x0228
+packetLen(0x0228, 18) // CZ_ACK_GAME_GUARD
+
+// Packet: 0x0229
+packetLen(0x0229, 15) // ZC_STATE_CHANGE3
+
+// Packet: 0x022a
+packetLen(0x022a, 62) // ZC_NOTIFY_STANDENTRY3
+
+// Packet: 0x022b
+packetLen(0x022b, 61) // ZC_NOTIFY_NEWENTRY3
+
+// Packet: 0x022c
+packetLen(0x022c, 69) // ZC_NOTIFY_MOVEENTRY3
+
+// Packet: 0x022d
+packetLen(0x022d, 5) // CZ_COMMAND_MER
+
+// Packet: 0x022e
+packetLen(0x022e, 73) // ZC_PROPERTY_HOMUN
+
+// Packet: 0x022f
+packetLen(0x022f, 7) // ZC_FEED_MER
+
+// Packet: 0x0230
+packetLen(0x0230, 12) // ZC_CHANGESTATE_MER
+
+// Packet: 0x0231
+packetLen(0x0231, 26) // CZ_RENAME_MER
+
+// Packet: 0x0232
+packetLen(0x0232, 9) // CZ_REQUEST_MOVENPC
+
+// Packet: 0x0233
+packetLen(0x0233, 11) // CZ_REQUEST_ACTNPC
+
+// Packet: 0x0234
+packetLen(0x0234, 6) // CZ_REQUEST_MOVETOOWNER
+
+// Packet: 0x0235
+packetLen(0x0235, -1) // ZC_HOSKILLINFO_LIST
+
+// Packet: 0x0236
+packetLen(0x0236, 10) // ZC_KILLER_POINT
+
+// Packet: 0x0237
+packetLen(0x0237, 2) // CZ_KILLER_RANK
+
+// Packet: 0x0238
+packetLen(0x0238, 282) // ZC_KILLER_RANK
+
+// Packet: 0x0239
+packetLen(0x0239, 11) // ZC_HOSKILLINFO_UPDATE
+
+// Packet: 0x023a
+packetLen(0x023a, 4) // ZC_REQ_STORE_PASSWORD
+
+// Packet: 0x023b
+packetLen(0x023b, 36) // CZ_ACK_STORE_PASSWORD
+
+// Packet: 0x023c
+packetLen(0x023c, 6) // ZC_RESULT_STORE_PASSWORD
+
+// Packet: 0x023d
+packetLen(0x023d, 6) // AC_EVENT_RESULT
+
+// Packet: 0x023e
+packetLen(0x023e, 8) // HC_REQUEST_CHARACTER_PASSWORD
+
+// Packet: 0x023f
+packetLen(0x023f, 2) // CZ_MAIL_GET_LIST
+
+// Packet: 0x0240
+packetLen(0x0240, -1) // ZC_MAIL_REQ_GET_LIST
+
+// Packet: 0x0241
+packetLen(0x0241, 6) // CZ_MAIL_OPEN
+
+// Packet: 0x0242
+packetLen(0x0242, -1) // ZC_MAIL_REQ_OPEN
+
+// Packet: 0x0243
+packetLen(0x0243, 6) // CZ_MAIL_DELETE
+
+// Packet: 0x0244
+packetLen(0x0244, 6) // CZ_MAIL_GET_ITEM
+
+// Packet: 0x0245
+packetLen(0x0245, 3) // ZC_MAIL_REQ_GET_ITEM
+
+// Packet: 0x0246
+packetLen(0x0246, 4) // CZ_MAIL_RESET_ITEM
+
+// Packet: 0x0247
+packetLen(0x0247, 8) // CZ_MAIL_ADD_ITEM
+
+// Packet: 0x0248
+packetLen(0x0248, -1) // CZ_MAIL_SEND
+
+// Packet: 0x0249
+packetLen(0x0249, 3) // ZC_MAIL_REQ_SEND
+
+// Packet: 0x024a
+packetLen(0x024a, 70) // ZC_MAIL_RECEIVE
+
+// Packet: 0x024b
+packetLen(0x024b, 4) // CZ_AUCTION_CREATE
+
+// Packet: 0x024c
+packetLen(0x024c, 8) // CZ_AUCTION_ADD_ITEM
+
+// Packet: 0x024d
+packetLen(0x024d, 12) // CZ_AUCTION_ADD
+
+// Packet: 0x024e
+packetLen(0x024e, 6) // CZ_AUCTION_ADD_CANCEL
+
+// Packet: 0x024f
+packetLen(0x024f, 10) // CZ_AUCTION_BUY
+
+// Packet: 0x0250
+packetLen(0x0250, 3) // ZC_AUCTION_RESULT
+
+// Packet: 0x0251
+packetLen(0x0251, 34) // CZ_AUCTION_ITEM_SEARCH
+
+// Packet: 0x0252
+packetLen(0x0252, -1) // ZC_AUCTION_ITEM_REQ_SEARCH
+
+// Packet: 0x0253
+packetLen(0x0253, 3) // ZC_STARPLACE
+
+// Packet: 0x0254
+packetLen(0x0254, 3) // CZ_AGREE_STARPLACE
+
+// Packet: 0x0255
+packetLen(0x0255, 5) // ZC_ACK_MAIL_ADD_ITEM
+
+// Packet: 0x0256
+packetLen(0x0256, 5) // ZC_ACK_AUCTION_ADD_ITEM
+
+// Packet: 0x0257
+packetLen(0x0257, 8) // ZC_ACK_MAIL_DELETE
+
+// Packet: 0x0258
+packetLen(0x0258, 2) // CA_REQ_GAME_GUARD_CHECK
+
+// Packet: 0x0259
+packetLen(0x0259, 3) // AC_ACK_GAME_GUARD
+
+// Packet: 0x025a
+packetLen(0x025a, -1) // ZC_MAKINGITEM_LIST
+
+// Packet: 0x025b
+packetLen(0x025b, 8) // CZ_REQ_MAKINGITEM
+
+// Packet: 0x025c
+packetLen(0x025c, 4) // CZ_AUCTION_REQ_MY_INFO
+
+// Packet: 0x025d
+packetLen(0x025d, 6) // CZ_AUCTION_REQ_MY_SELL_STOP
+
+// Packet: 0x025e
+packetLen(0x025e, 4) // ZC_AUCTION_ACK_MY_SELL_STOP
+
+// Packet: 0x025f
+packetLen(0x025f, 6) // ZC_AUCTION_WINDOWS
+
+// Packet: 0x0260
+packetLen(0x0260, 6) // ZC_MAIL_WINDOWS
+
+// Packet: 0x0261
+packetLen(0x0261, 11) // AC_REQ_LOGIN_OLDEKEY
+
+// Packet: 0x0262
+packetLen(0x0262, 11) // AC_REQ_LOGIN_NEWEKEY
+
+// Packet: 0x0263
+packetLen(0x0263, 11) // AC_REQ_LOGIN_CARDPASS
+
+// Packet: 0x0264
+packetLen(0x0264, 20) // CA_ACK_LOGIN_OLDEKEY
+
+// Packet: 0x0265
+packetLen(0x0265, 20) // CA_ACK_LOGIN_NEWEKEY
+
+// Packet: 0x0266
+packetLen(0x0266, 30) // CA_ACK_LOGIN_CARDPASS
+
+// Packet: 0x0267
+packetLen(0x0267, 4) // AC_ACK_EKEY_FAIL_NOTEXIST
+
+// Packet: 0x0268
+packetLen(0x0268, 4) // AC_ACK_EKEY_FAIL_NOTUSESEKEY
+
+// Packet: 0x0269
+packetLen(0x0269, 4) // AC_ACK_EKEY_FAIL_NOTUSEDEKEY
+
+// Packet: 0x026a
+packetLen(0x026a, 4) // AC_ACK_EKEY_FAIL_AUTHREFUSE
+
+// Packet: 0x026b
+packetLen(0x026b, 4) // AC_ACK_EKEY_FAIL_INPUTEKEY
+
+// Packet: 0x026c
+packetLen(0x026c, 4) // AC_ACK_EKEY_FAIL_NOTICE
+
+// Packet: 0x026d
+packetLen(0x026d, 4) // AC_ACK_EKEY_FAIL_NEEDCARDPASS
+
+// Packet: 0x026f
+packetLen(0x026f, 2) // AC_ACK_FIRST_LOGIN
+
+// Packet: 0x0270
+packetLen(0x0270, 2) // AC_REQ_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0271
+packetLen(0x0271, 40) // CA_ACK_LOGIN_ACCOUNT_INFO
+
+// Packet: 0x0272
+packetLen(0x0272, 44) // AC_ACK_PT_ID_INFO
+
+// Packet: 0x0273
+packetLen(0x0273, 30) // CZ_REQ_MAIL_RETURN
+
+// Packet: 0x0274
+packetLen(0x0274, 8) // ZC_ACK_MAIL_RETURN
+
+// Packet: 0x0275
+packetLen(0x0275, 37) // CH_ENTER2
+
+// Packet: 0x0276
+packetLen(0x0276, -1) // AC_ACCEPT_LOGIN2
+
+// Packet: 0x0277
+packetLen(0x0277, 84) // CA_LOGIN_PCBANG
+
+// Packet: 0x0278
+packetLen(0x0278, 2) // ZC_NOTIFY_PCBANG
+
+// Packet: 0x0279
+packetLen(0x0279, 2) // CZ_HUNTINGLIST
+
+// Packet: 0x027a
+packetLen(0x027a, -1) // ZC_HUNTINGLIST
+
+// Packet: 0x027b
+packetLen(0x027b, 14) // ZC_PCBANG_EFFECT
+
+// Packet: 0x027c
+packetLen(0x027c, 60) // CA_LOGIN4
+
+// Packet: 0x027d
+packetLen(0x027d, 62) // ZC_PROPERTY_MERCE
+
+// Packet: 0x027e
+packetLen(0x027e, -1) // ZC_SHANDA_PROTECT
+
+// Packet: 0x027f
+packetLen(0x027f, 8) // CA_CLIENT_TYPE
+
+// Packet: 0x0280
+packetLen(0x0280, 12) // ZC_GANGSI_POINT
+
+// Packet: 0x0281
+packetLen(0x0281, 4) // CZ_GANGSI_RANK
+
+// Packet: 0x0282
+packetLen(0x0282, 284) // ZC_GANGSI_RANK
+
+// Packet: 0x0283
+packetLen(0x0283, 6) // ZC_AID
+
+// Packet: 0x0284
+packetLen(0x0284, 14) // ZC_NOTIFY_EFFECT3
+
+// Packet: 0x0285
+packetLen(0x0285, 6) // ZC_DEATH_QUESTION
+
+// Packet: 0x0286
+packetLen(0x0286, 4) // CZ_DEATH_QUESTION
+
+// Packet: 0x0287
+packetLen(0x0287, -1) // ZC_PC_CASH_POINT_ITEMLIST
+
+// Packet: 0x0288
+packetLen(0x0288, -1) // CZ_PC_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0289
+packetLen(0x0289, 12) // ZC_PC_CASH_POINT_UPDATE
+
+// Packet: 0x028a
+packetLen(0x028a, 18) // ZC_NPC_SHOWEFST_UPDATE
+
+// Packet: 0x028b
+packetLen(0x028b, -1) // HC_CHARNOTBEENSELECTED
+
+// Packet: 0x028c
+packetLen(0x028c, 46) // CH_SELECT_CHAR_GOINGTOBEUSED
+
+// Packet: 0x028d
+packetLen(0x028d, 34) // CH_REQ_IS_VALID_CHARNAME
+
+// Packet: 0x028e
+packetLen(0x028e, 4) // HC_ACK_IS_VALID_CHARNAME
+
+// Packet: 0x028f
+packetLen(0x028f, 6) // CH_REQ_CHANGE_CHARNAME
+
+// Packet: 0x0290
+packetLen(0x0290, 4) // HC_ACK_CHANGE_CHARNAME
+
+// Packet: 0x0291
+packetLen(0x0291, 4) // ZC_MSG
+
+// Packet: 0x0292
+packetLen(0x0292, 2) // CZ_STANDING_RESURRECTION
+
+// Packet: 0x0293
+packetLen(0x0293, 70) // ZC_BOSS_INFO
+
+// Packet: 0x0294
+packetLen(0x0294, 10) // ZC_READ_BOOK
+
+// Packet: 0x0295
+packetLen(0x0295, -1) // ZC_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0296
+packetLen(0x0296, -1) // ZC_STORE_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0297
+packetLen(0x0297, -1) // ZC_CART_EQUIPMENT_ITEMLIST2
+
+// Packet: 0x0298
+packetLen(0x0298, 10) // ZC_CASH_TIME_COUNTER
+
+// Packet: 0x0299
+packetLen(0x0299, 8) // ZC_CASH_ITEM_DELETE
+
+// Packet: 0x029a
+packetLen(0x029a, 37) // ZC_ITEM_PICKUP_ACK2
+
+// Packet: 0x029b
+packetLen(0x029b, 80) // ZC_MER_INIT
+
+// Packet: 0x029c
+packetLen(0x029c, 66) // ZC_MER_PROPERTY
+
+// Packet: 0x029d
+packetLen(0x029d, -1) // ZC_MER_SKILLINFO_LIST
+
+// Packet: 0x029e
+packetLen(0x029e, 11) // ZC_MER_SKILLINFO_UPDATE
+
+// Packet: 0x029f
+packetLen(0x029f, 3) // CZ_MER_COMMAND
+
+// Packet: 0x02a2
+packetLen(0x02a2, 8) // ZC_MER_PAR_CHANGE
+
+// Packet: 0x02a5
+packetLen(0x02a5, 8) // CZ_KSY_EVENT
+
+// Packet: 0x02a6
+packetLen(0x02a6, -1) // ZC_HACKSH_CPX_MSG
+
+// Packet: 0x02a7
+packetLen(0x02a7, -1) // CZ_HACKSH_CPX_MSG
+
+// Packet: 0x02aa
+packetLen(0x02aa, 4) // ZC_REQ_CASH_PASSWORD
+
+// Packet: 0x02ab
+packetLen(0x02ab, 36) // CZ_ACK_CASH_PASSWORD
+
+// Packet: 0x02ac
+packetLen(0x02ac, 6) // ZC_RESULT_CASH_PASSWORD
+
+// Packet: 0x02ad
+packetLen(0x02ad, 8) // AC_REQUEST_SECOND_PASSWORD
+
+// Packet: 0x02b0
+packetLen(0x02b0, 85) // CA_LOGIN_HAN
+
+// Packet: 0x02b1
+packetLen(0x02b1, -1) // ZC_ALL_QUEST_LIST
+
+// Packet: 0x02b2
+packetLen(0x02b2, -1) // ZC_ALL_QUEST_MISSION
+
+// Packet: 0x02b3
+packetLen(0x02b3, 107) // ZC_ADD_QUEST
+
+// Packet: 0x02b4
+packetLen(0x02b4, 6) // ZC_DEL_QUEST
+
+// Packet: 0x02b5
+packetLen(0x02b5, -1) // ZC_UPDATE_MISSION_HUNT
+
+// Packet: 0x02b6
+packetLen(0x02b6, 7) // CZ_ACTIVE_QUEST
+
+// Packet: 0x02b7
+packetLen(0x02b7, 7) // ZC_ACTIVE_QUEST
+
+// Packet: 0x02b8
+packetLen(0x02b8, 32) // ZC_ITEM_PICKUP_PARTY
+
+// Packet: 0x02b9
+packetLen(0x02b9, 191) // ZC_SHORTCUT_KEY_LIST
+
+// Packet: 0x02ba
+packetLen(0x02ba, 11) // CZ_SHORTCUT_KEY_CHANGE
+
+// Packet: 0x02bb
+packetLen(0x02bb, 8) // ZC_EQUIPITEM_DAMAGED
+
+// Packet: 0x02bc
+packetLen(0x02bc, 6) // ZC_NOTIFY_PCBANG_PLAYING_TIME
+
+// Packet: 0x02c1
+packetLen(0x02c1, -1) // ZC_NPC_CHAT
+
+// Packet: 0x02c2
+packetLen(0x02c2, -1) // ZC_FORMATSTRING_MSG
+
+// Packet: 0x02c4
+packetLen(0x02c4, 26) // CZ_PARTY_JOIN_REQ
+
+// Packet: 0x02c5
+packetLen(0x02c5, 30) // ZC_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c6
+packetLen(0x02c6, 30) // ZC_PARTY_JOIN_REQ
+
+// Packet: 0x02c7
+packetLen(0x02c7, 7) // CZ_PARTY_JOIN_REQ_ACK
+
+// Packet: 0x02c8
+packetLen(0x02c8, 3) // CZ_PARTY_CONFIG
+
+// Packet: 0x02c9
+packetLen(0x02c9, 3) // ZC_PARTY_CONFIG
+
+// Packet: 0x02ca
+packetLen(0x02ca, 3) // HC_REFUSE_SELECTCHAR
+
+// Packet: 0x02cb
+packetLen(0x02cb, 65) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_INFO
+
+// Packet: 0x02cc
+packetLen(0x02cc, 4) // ZC_MEMORIALDUNGEON_SUBSCRIPTION_NOTIFY
+
+// Packet: 0x02cd
+packetLen(0x02cd, 71) // ZC_MEMORIALDUNGEON_INFO
+
+// Packet: 0x02ce
+packetLen(0x02ce, 10) // ZC_MEMORIALDUNGEON_NOTIFY
+
+// Packet: 0x02cf
+packetLen(0x02cf, 6) // CZ_MEMORIALDUNGEON_COMMAND
+
+// Packet: 0x02d0
+packetLen(0x02d0, -1) // ZC_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d1
+packetLen(0x02d1, -1) // ZC_STORE_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d2
+packetLen(0x02d2, -1) // ZC_CART_EQUIPMENT_ITEMLIST3
+
+// Packet: 0x02d3
+packetLen(0x02d3, 4) // ZC_NOTIFY_BIND_ON_EQUIP
+
+// Packet: 0x02d4
+packetLen(0x02d4, 39) // ZC_ITEM_PICKUP_ACK3
+
+// Packet: 0x02d5
+packetLen(0x02d5, 2) // ZC_ISVR_DISCONNECT
+
+// Packet: 0x02d6
+packetLen(0x02d6, 6) // CZ_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d7
+packetLen(0x02d7, -1) // ZC_EQUIPWIN_MICROSCOPE
+
+// Packet: 0x02d8
+packetLen(0x02d8, 10) // CZ_CONFIG
+
+// Packet: 0x02d9
+packetLen(0x02d9, 10) // ZC_CONFIG
+
+// Packet: 0x02da
+packetLen(0x02da, 3) // ZC_CONFIG_NOTIFY
+
+// Packet: 0x02db
+packetLen(0x02db, -1) // CZ_BATTLEFIELD_CHAT
+
+// Packet: 0x02dc
+packetLen(0x02dc, -1) // ZC_BATTLEFIELD_CHAT
+
+// Packet: 0x02dd
+packetLen(0x02dd, 32) // ZC_BATTLEFIELD_NOTIFY_CAMPINFO
+
+// Packet: 0x02de
+packetLen(0x02de, 6) // ZC_BATTLEFIELD_NOTIFY_POINT
+
+// Packet: 0x02df
+packetLen(0x02df, 36) // ZC_BATTLEFIELD_NOTIFY_POSITION
+
+// Packet: 0x02e0
+packetLen(0x02e0, 34) // ZC_BATTLEFIELD_NOTIFY_HP
+
+// Packet: 0x02e1
+packetLen(0x02e1, 33) // ZC_NOTIFY_ACT2
+
+// Packet: 0x02e2
+packetLen(0x02e2, 20) // CZ_USE_ITEM_NEW_JAPEN
+
+// Packet: 0x02e3
+packetLen(0x02e3, 22) // CZ_USE_SKILL_NEW_JAPEN
+
+// Packet: 0x02e4
+packetLen(0x02e4, 11) // CZ_ITEM_PICKUP_NEW_JAPEN
+
+// Packet: 0x02e5
+packetLen(0x02e5, 9) // CZ_REQUEST_MOVE_NEW_JAPEN
+
+// Packet: 0x02e6
+packetLen(0x02e6, 6) // CZ_BOT_CHECK
+
+// Packet: 0x02e7
+packetLen(0x02e7, -1) // ZC_MAPPROPERTY
+
+// Packet: 0x02e8
+packetLen(0x02e8, -1) // ZC_NORMAL_ITEMLIST3
+
+// Packet: 0x02e9
+packetLen(0x02e9, -1) // ZC_CART_NORMAL_ITEMLIST3
+
+// Packet: 0x02ea
+packetLen(0x02ea, -1) // ZC_STORE_NORMAL_ITEMLIST3
+
+// Packet: 0x02eb
+packetLen(0x02eb, 13) // ZC_ACCEPT_ENTER2
+
+// Packet: 0x02ec
+packetLen(0x02ec, 71) // ZC_NOTIFY_MOVEENTRY4
+
+// Packet: 0x02ed
+packetLen(0x02ed, 63) // ZC_NOTIFY_NEWENTRY4
+
+// Packet: 0x02ee
+packetLen(0x02ee, 64) // ZC_NOTIFY_STANDENTRY4
+
+// Packet: 0x02ef
+packetLen(0x02ef, 8) // ZC_NOTIFY_FONT
+
+// Packet: 0x02f0
+packetLen(0x02f0, 10) // ZC_PROGRESS
+
+// Packet: 0x02f1
+packetLen(0x02f1, 2) // CZ_PROGRESS
+
+// Packet: 0x02f2
+packetLen(0x02f2, 2) // ZC_PROGRESS_CANCEL
+
+// Packet: 0x02f3
+packetLen(0x02f3, -1) // CZ_IRMAIL_SEND
+
+// Packet: 0x02f4
+packetLen(0x02f4, 3) // ZC_IRMAIL_SEND_RES
+
+// Packet: 0x02f5
+packetLen(0x02f5, 7) // ZC_IRMAIL_NOTIFY
+
+// Packet: 0x02f6
+packetLen(0x02f6, 7) // CZ_IRMAIL_LIST
+
+// Packet: 0x035c
+packetLen(0x035c, 2) // CZ_OPEN_SIMPLE_CASHSHOP_ITEMLIST
+
+// Packet: 0x035d
+packetLen(0x035d, -1) // ZC_SIMPLE_CASHSHOP_POINT_ITEMLIST
+
+// Packet: 0x035e
+packetLen(0x035e, 2) // CZ_CLOSE_WINDOW
+
+// Packet: 0x035f
+packetLen(0x035f, 5) // CZ_REQUEST_MOVE2
+
+// Packet: 0x0360
+packetLen(0x0360, 6) // CZ_REQUEST_TIME2
+
+// Packet: 0x0361
+packetLen(0x0361, 5) // CZ_CHANGE_DIRECTION2
+
+// Packet: 0x0362
+packetLen(0x0362, 6) // CZ_ITEM_PICKUP2
+
+// Packet: 0x0363
+packetLen(0x0363, 6) // CZ_ITEM_THROW2
+
+// Packet: 0x0364
+packetLen(0x0364, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_STORE2
+
+// Packet: 0x0365
+packetLen(0x0365, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
+
+// Packet: 0x0366
+packetLen(0x0366, 10) // CZ_USE_SKILL_TOGROUND2
+
+// Packet: 0x0367
+packetLen(0x0367, 90) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+
+// Packet: 0x0368
+packetLen(0x0368, 6) // CZ_REQNAME2
+
+// Packet: 0x0369
+packetLen(0x0369, 6) // CZ_REQNAME_BYGID2
+
+// Packet: 0x03dd
+packetLen(0x03dd, 18) // AHC_GAME_GUARD
+
+// Packet: 0x03de
+packetLen(0x03de, 18) // CAH_ACK_GAME_GUARD
+
+// Packet: 0x0436
+packetLen(0x0436, 19) // CZ_ENTER2
+
+// Packet: 0x0437
+packetLen(0x0437, 7) // CZ_REQUEST_ACT2
+
+// Packet: 0x0438
+packetLen(0x0438, 10) // CZ_USE_SKILL2
+
+// Packet: 0x0439
+packetLen(0x0439, 8) // CZ_USE_ITEM2
+
+// Packet: 0x043d
+packetLen(0x043d, 8) // ZC_SKILL_POSTDELAY
+
+// Packet: 0x043e
+packetLen(0x043e, -1) // ZC_SKILL_POSTDELAY_LIST
+
+// Packet: 0x043f
+packetLen(0x043f, 25) // ZC_MSG_STATE_CHANGE2
+
+// Packet: 0x0440
+packetLen(0x0440, 10) // ZC_MILLENNIUMSHIELD
+
+// Packet: 0x0441
+packetLen(0x0441, 4) // ZC_SKILLINFO_DELETE
+
+// Packet: 0x0442
+packetLen(0x0442, -1) // ZC_SKILL_SELECT_REQUEST
+
+// Packet: 0x0443
+packetLen(0x0443, 8) // CZ_SKILL_SELECT_RESPONSE
+
+// Packet: 0x0444
+packetLen(0x0444, -1) // ZC_SIMPLE_CASH_POINT_ITEMLIST
+
+// Packet: 0x0445
+packetLen(0x0445, 12) // CZ_SIMPLE_BUY_CASH_POINT_ITEM
+
+// Packet: 0x0446
+packetLen(0x0446, 14) // ZC_QUEST_NOTIFY_EFFECT
+
+// Packet: 0x0447
+packetLen(0x0447, 2) // CZ_BLOCKING_PLAY_CANCEL
+
+// Packet: 0x0448
+packetLen(0x0448, -1) // HC_CHARACTER_LIST
+
+// Packet: 0x0449
+packetLen(0x0449, 4) // ZC_HACKSH_ERROR_MSG
+
+// Packet: 0x044a
+packetLen(0x044a, 6) // CZ_CLIENT_VERSION
+
+// Packet: 0x044b
+packetLen(0x044b, 2) // CZ_CLOSE_SIMPLECASH_SHOP
+
+// Packet: 0x07d7
+packetLen(0x07d7, 8) // CZ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d8
+packetLen(0x07d8, 8) // ZC_REQ_GROUPINFO_CHANGE_V2
+
+// Packet: 0x07d9
+packetLen(0x07d9, 268) // ZC_SHORTCUT_KEY_LIST_V2
+
+// Packet: 0x07da
+packetLen(0x07da, 6) // CZ_CHANGE_GROUP_MASTER
+
+// Packet: 0x07db
+packetLen(0x07db, 8) // ZC_HO_PAR_CHANGE
+
+// Packet: 0x07dc
+packetLen(0x07dc, 6) // CZ_SEEK_PARTY
+
+// Packet: 0x07dd
+packetLen(0x07dd, 54) // ZC_SEEK_PARTY
+
+// Packet: 0x07de
+packetLen(0x07de, 30) // CZ_SEEK_PARTY_MEMBER
+
+// Packet: 0x07df
+packetLen(0x07df, 54) // ZC_SEEK_PARTY_MEMBER
+
+// Packet: 0x07e0
+packetLen(0x07e0, 58) // ZC_ES_NOTI_MYINFO
+
+// Packet: 0x07e1
+packetLen(0x07e1, 15) // ZC_SKILLINFO_UPDATE2
+
+// Packet: 0x07e2
+packetLen(0x07e2, 8) // ZC_MSG_VALUE
+
+// Packet: 0x07e3
+packetLen(0x07e3, 6) // ZC_ITEMLISTWIN_OPEN
+
+// Packet: 0x07e4
+packetLen(0x07e4, -1) // CZ_ITEMLISTWIN_RES
+
+// Packet: 0x07e5
+packetLen(0x07e5, 4) // CH_ENTER_CHECKBOT
+
+// Packet: 0x07e6
+packetLen(0x07e6, 8) // ZC_MSG_SKILL
+
+// Packet: 0x07e7
+packetLen(0x07e7, 32) // CH_CHECKBOT
+
+// Packet: 0x07e8
+packetLen(0x07e8, -1) // HC_CHECKBOT
+
+// Packet: 0x07e9
+packetLen(0x07e9, 5) // HC_CHECKBOT_RESULT
+
+// Packet: 0x07ea
+packetLen(0x07ea, 2) // CZ_BATTLE_FIELD_LIST
+
+// Packet: 0x07eb
+packetLen(0x07eb, -1) // ZC_BATTLE_FIELD_LIST
+
+// Packet: 0x07ec
+packetLen(0x07ec, 8) // CZ_JOIN_BATTLE_FIELD
+
+// Packet: 0x07ed
+packetLen(0x07ed, 10) // ZC_JOIN_BATTLE_FIELD
+
+// Packet: 0x07ee
+packetLen(0x07ee, 6) // CZ_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07ef
+packetLen(0x07ef, 8) // ZC_CANCEL_BATTLE_FIELD
+
+// Packet: 0x07f0
+packetLen(0x07f0, 6) // CZ_REQ_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f1
+packetLen(0x07f1, 18) // ZC_ACK_BATTLE_STATE_MONITOR
+
+// Packet: 0x07f2
+packetLen(0x07f2, 8) // ZC_BATTLE_NOTI_START_STEP
+
+// Packet: 0x07f3
+packetLen(0x07f3, 6) // ZC_BATTLE_JOIN_NOTI_DEFER
+
+// Packet: 0x07f4
+packetLen(0x07f4, 3) // ZC_BATTLE_JOIN_DISABLE_STATE
+
+// Packet: 0x07f5
+packetLen(0x07f5, 6) // CZ_GM_FULLSTRIP
+
+// Packet: 0x07f6
+packetLen(0x07f6, 14) // ZC_NOTIFY_EXP
+
+// Packet: 0x07f7
+packetLen(0x07f7, -1) // ZC_NOTIFY_MOVEENTRY7
+
+// Packet: 0x07f8
+packetLen(0x07f8, -1) // ZC_NOTIFY_NEWENTRY5
+
+// Packet: 0x07f9
+packetLen(0x07f9, -1) // ZC_NOTIFY_STANDENTRY5
+
+// Packet: 0x07fa
+packetLen(0x07fa, 8) // ZC_DELETE_ITEM_FROM_BODY
+
+// Packet: 0x07fb
+packetLen(0x07fb, 25) // ZC_USESKILL_ACK2
+
+// Packet: 0x07fc
+packetLen(0x07fc, 10) // ZC_CHANGE_GROUP_MASTER
+
+// Packet: 0x07fd
+packetLen(0x07fd, -1) // ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN
+
+// Packet: 0x07fe
+packetLen(0x07fe, 26) // ZC_PLAY_NPC_BGM
+
+// Packet: 0x0800
+packetLen(0x0800, -1) // ZC_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0801
+packetLen(0x0801, -1) // CZ_PC_PURCHASE_ITEMLIST_FROMMC2
+
+// Packet: 0x0802
+packetLen(0x0802, 18) // CZ_PARTY_BOOKING_REQ_REGISTER
+
+// Packet: 0x0803
+packetLen(0x0803, 4) // ZC_PARTY_BOOKING_ACK_REGISTER
+
+// Packet: 0x0804
+packetLen(0x0804, 14) // CZ_PARTY_BOOKING_REQ_SEARCH
+
+// Packet: 0x0805
+packetLen(0x0805, -1) // ZC_PARTY_BOOKING_ACK_SEARCH
+
+// Packet: 0x0806
+packetLen(0x0806, 2) // CZ_PARTY_BOOKING_REQ_DELETE
+
+// Packet: 0x0807
+packetLen(0x0807, 4) // ZC_PARTY_BOOKING_ACK_DELETE
+
+// Packet: 0x0808
+packetLen(0x0808, 14) // CZ_PARTY_BOOKING_REQ_UPDATE
+
+// Packet: 0x0809
+packetLen(0x0809, 50) // ZC_PARTY_BOOKING_NOTIFY_INSERT
+
+// Packet: 0x080a
+packetLen(0x080a, 18) // ZC_PARTY_BOOKING_NOTIFY_UPDATE
+
+// Packet: 0x080b
+packetLen(0x080b, 6) // ZC_PARTY_BOOKING_NOTIFY_DELETE
+
+// Packet: 0x080c
+packetLen(0x080c, 2) // CZ_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080d
+packetLen(0x080d, 3) // ZC_SIMPLE_CASH_BTNSHOW
+
+// Packet: 0x080e
+packetLen(0x080e, 14) // ZC_NOTIFY_HP_TO_GROUPM_R2
+
+// Packet: 0x080f
+packetLen(0x080f, 30) // ZC_ADD_EXCHANGE_ITEM2
+
+// Packet: 0x0810
+packetLen(0x0810, 3) // ZC_OPEN_BUYING_STORE
+
+// Packet: 0x0811
+packetLen(0x0811, -1) // CZ_REQ_OPEN_BUYING_STORE
+
+// Packet: 0x0812
+packetLen(0x0812, 8) // ZC_FAILED_OPEN_BUYING_STORE_TO_BUYER
+
+// Packet: 0x0813
+packetLen(0x0813, -1) // ZC_MYITEMLIST_BUYING_STORE
+
+// Packet: 0x0814
+packetLen(0x0814, 86) // ZC_BUYING_STORE_ENTRY
+
+// Packet: 0x0815
+packetLen(0x0815, 2) // CZ_REQ_CLOSE_BUYING_STORE
+
+// Packet: 0x0816
+packetLen(0x0816, 6) // ZC_DISAPPEAR_BUYING_STORE_ENTRY
+
+// Packet: 0x0817
+packetLen(0x0817, 6) // CZ_REQ_CLICK_TO_BUYING_STORE
+
+// Packet: 0x0818
+packetLen(0x0818, -1) // ZC_ACK_ITEMLIST_BUYING_STORE
+
+// Packet: 0x0819
+packetLen(0x0819, -1) // CZ_REQ_TRADE_BUYING_STORE
+
+// Packet: 0x081a
+packetLen(0x081a, 4) // ZC_FAILED_TRADE_BUYING_STORE_TO_BUYER
+
+// Packet: 0x081b
+packetLen(0x081b, 12) // ZC_UPDATE_ITEM_FROM_BUYING_STORE
+
+// Packet: 0x081c
+packetLen(0x081c, 10) // ZC_ITEM_DELETE_BUYING_STORE
+
+// Packet: 0x081d
+packetLen(0x081d, 22) // ZC_EL_INIT
+
+// Packet: 0x081e
+packetLen(0x081e, 8) // ZC_EL_PAR_CHANGE
+
+// Packet: 0x081f
+packetLen(0x081f, -1) // ZC_BROADCAST4
+
+// Packet: 0x0820
+packetLen(0x0820, 11) // ZC_COSTUME_SPRITE_CHANGE
+
+// Packet: 0x0821
+packetLen(0x0821, 2) // AC_OTP_USER
+
+// Packet: 0x0822
+packetLen(0x0822, 9) // CA_OTP_AUTH_REQ
+
+// Packet: 0x0823
+packetLen(0x0823, -1) // AC_OTP_AUTH_ACK
+
+// Packet: 0x0824
+packetLen(0x0824, 8) // ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER
+
+// Packet: 0x0825
+packetLen(0x0825, -1) // CA_SSO_LOGIN_REQ
+
+// Packet: 0x0827
+packetLen(0x0827, 6) // CH_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0828
+packetLen(0x0828, 14) // HC_DELETE_CHAR3_RESERVED
+
+// Packet: 0x0829
+packetLen(0x0829, 12) // CH_DELETE_CHAR3
+
+// Packet: 0x082a
+packetLen(0x082a, 10) // HC_DELETE_CHAR3
+
+// Packet: 0x082b
+packetLen(0x082b, 6) // CH_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082c
+packetLen(0x082c, 10) // HC_DELETE_CHAR3_CANCEL
+
+// Packet: 0x082d
+packetLen(0x082d, -1) // HC_ACCEPT_ENTER2
+
+// Packet: 0x0835
+packetLen(0x0835, -1) // CZ_SEARCH_STORE_INFO
+
+// Packet: 0x0836
+packetLen(0x0836, -1) // ZC_SEARCH_STORE_INFO_ACK
+
+// Packet: 0x0837
+packetLen(0x0837, 3) // ZC_SEARCH_STORE_INFO_FAILED
+
+// Packet: 0x0838
+packetLen(0x0838, 2) // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+
+// Packet: 0x0839
+packetLen(0x0839, 66) // ZC_ACK_BAN_GUILD_SSO
+
+// Packet: 0x083a
+packetLen(0x083a, 5) // ZC_OPEN_SEARCH_STORE_INFO
+
+// Packet: 0x083b
+packetLen(0x083b, 2) // CZ_CLOSE_SEARCH_STORE_INFO
+
+// Packet: 0x083c
+packetLen(0x083c, 14) // CZ_SSILIST_ITEM_CLICK
+
+// Packet: 0x083d
+packetLen(0x083d, 6) // ZC_SSILIST_ITEM_CLICK_ACK
+
+// Packet: 0x083e
+packetLen(0x083e, 26) // AC_REFUSE_LOGIN2
+
+// Packet: 0x0840
+packetLen(0x0840, -1) // HC_NOTIFY_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0841
+packetLen(0x0841, 4) // CH_SELECT_ACCESSIBLE_MAPNAME
+
+// Packet: 0x0842
+packetLen(0x0842, 6) // CZ_RECALL_SSO
+
+// Packet: 0x0843
+packetLen(0x0843, 6) // CZ_REMOVE_AID_SSO
+
+// Packet: 0x0844
+packetLen(0x0844, 2) // CZ_SE_CASHSHOP_OPEN
+
+// Packet: 0x0845
+packetLen(0x0845, 10) // ZC_SE_CASHSHOP_OPEN
+
+// Packet: 0x0846
+packetLen(0x0846, 4) // CZ_REQ_SE_CASH_TAB_CODE
+
+// Packet: 0x0847
+packetLen(0x0847, -1) // ZC_ACK_SE_CASH_ITEM_LIST
+
+// Packet: 0x0848
+packetLen(0x0848, -1) // CZ_SE_PC_BUY_CASHITEM_LIST
+
+// Packet: 0x0849
+packetLen(0x0849, 16) // ZC_SE_PC_BUY_CASHITEM_RESULT
+
+// Packet: 0x084a
+packetLen(0x084a, 2) // CZ_SE_CASHSHOP_CLOSE
+
+// Packet: 0x084b
+packetLen(0x084b, 21) // ZC_ITEM_FALL_ENTRY4
+
+// Packet: 0x084c
+packetLen(0x084c, 10) // CZ_MACRO_USE_SKILL
+
+// Packet: 0x084d
+packetLen(0x084d, 10) // CZ_MACRO_USE_SKILL_TOGROUND
+
+// Packet: 0x084e
+packetLen(0x084e, 5) // CZ_MACRO_REQUEST_MOVE
+
+// Packet: 0x084f
+packetLen(0x084f, 6) // CZ_MACRO_ITEM_PICKUP
+
+// Packet: 0x0850
+packetLen(0x0850, 7) // CZ_MACRO_REQUEST_ACT
+
+// Packet: 0x0851
+packetLen(0x0851, -1) // ZC_GPK_DYNCODE
+
+// Packet: 0x0852
+packetLen(0x0852, 2) // CZ_GPK_DYNCODE_RELOAD
+
+// Packet: 0x0853
+packetLen(0x0853, -1) // ZC_GPK_AUTH
+
+// Packet: 0x0854
+packetLen(0x0854, -1) // CZ_GPK_AUTH
+
+// Packet: 0x0855
+packetLen(0x0855, 6) // ZC_MACRO_ITEMPICKUP_FAIL
+
+// Packet: 0x0856
+packetLen(0x0856, -1) // ZC_NOTIFY_MOVEENTRY8
+
+// Packet: 0x0857
+packetLen(0x0857, -1) // ZC_NOTIFY_STANDENTRY7
+
+// Packet: 0x0858
+packetLen(0x0858, -1) // ZC_NOTIFY_NEWENTRY6
+
+// Packet: 0x0859
+packetLen(0x0859, -1) // ZC_EQUIPWIN_MICROSCOPE2
+
+// Packet: 0x085a
+packetLen(0x085a, 2) // ZC_REASSEMBLY_AUTH01
+
+// Packet: 0x085b
+packetLen(0x085b, 2) // ZC_REASSEMBLY_AUTH02
+
+// Packet: 0x085c
+packetLen(0x085c, 2) // ZC_REASSEMBLY_AUTH03
+
+// Packet: 0x085d
+packetLen(0x085d, 2) // ZC_REASSEMBLY_AUTH04
+
+// Packet: 0x085e
+packetLen(0x085e, 2) // ZC_REASSEMBLY_AUTH05
+
+// Packet: 0x085f
+packetLen(0x085f, 2) // ZC_REASSEMBLY_AUTH06
+
+// Packet: 0x0860
+packetLen(0x0860, 2) // ZC_REASSEMBLY_AUTH07
+
+// Packet: 0x0861
+packetLen(0x0861, 2) // ZC_REASSEMBLY_AUTH08
+
+// Packet: 0x0862
+packetLen(0x0862, 2) // ZC_REASSEMBLY_AUTH09
+
+// Packet: 0x0863
+packetLen(0x0863, 2) // ZC_REASSEMBLY_AUTH10
+
+// Packet: 0x0864
+packetLen(0x0864, 2) // ZC_REASSEMBLY_AUTH11
+
+// Packet: 0x0865
+packetLen(0x0865, 2) // ZC_REASSEMBLY_AUTH12
+
+// Packet: 0x0866
+packetLen(0x0866, 2) // ZC_REASSEMBLY_AUTH13
+
+// Packet: 0x0867
+packetLen(0x0867, 2) // ZC_REASSEMBLY_AUTH14
+
+// Packet: 0x0868
+packetLen(0x0868, 2) // ZC_REASSEMBLY_AUTH15
+
+// Packet: 0x0869
+packetLen(0x0869, 2) // ZC_REASSEMBLY_AUTH16
+
+// Packet: 0x086a
+packetLen(0x086a, 2) // ZC_REASSEMBLY_AUTH17
+
+// Packet: 0x086b
+packetLen(0x086b, 2) // ZC_REASSEMBLY_AUTH18
+
+// Packet: 0x086c
+packetLen(0x086c, 2) // ZC_REASSEMBLY_AUTH19
+
+// Packet: 0x086d
+packetLen(0x086d, 2) // ZC_REASSEMBLY_AUTH20
+
+// Packet: 0x086e
+packetLen(0x086e, 2) // ZC_REASSEMBLY_AUTH21
+
+// Packet: 0x086f
+packetLen(0x086f, 2) // ZC_REASSEMBLY_AUTH22
+
+// Packet: 0x0870
+packetLen(0x0870, 2) // ZC_REASSEMBLY_AUTH23
+
+// Packet: 0x0871
+packetLen(0x0871, 2) // ZC_REASSEMBLY_AUTH24
+
+// Packet: 0x0872
+packetLen(0x0872, 2)
+
+// Packet: 0x0873
+packetLen(0x0873, 2) // ZC_REASSEMBLY_AUTH26
+
+// Packet: 0x0874
+packetLen(0x0874, 2) // ZC_REASSEMBLY_AUTH27
+
+// Packet: 0x0875
+packetLen(0x0875, 2) // ZC_REASSEMBLY_AUTH28
+
+// Packet: 0x0876
+packetLen(0x0876, 2) // ZC_REASSEMBLY_AUTH29
+
+// Packet: 0x0877
+packetLen(0x0877, 2) // ZC_REASSEMBLY_AUTH30
+
+// Packet: 0x0878
+packetLen(0x0878, 2) // ZC_REASSEMBLY_AUTH31
+
+// Packet: 0x0879
+packetLen(0x0879, 2) // ZC_REASSEMBLY_AUTH32
+
+// Packet: 0x087a
+packetLen(0x087a, 2) // ZC_REASSEMBLY_AUTH33
+
+// Packet: 0x087b
+packetLen(0x087b, 2) // ZC_REASSEMBLY_AUTH34
+
+// Packet: 0x087c
+packetLen(0x087c, 2) // ZC_REASSEMBLY_AUTH35
+
+// Packet: 0x087d
+packetLen(0x087d, 2) // ZC_REASSEMBLY_AUTH36
+
+// Packet: 0x087e
+packetLen(0x087e, 2) // ZC_REASSEMBLY_AUTH37
+
+// Packet: 0x087f
+packetLen(0x087f, 2) // ZC_REASSEMBLY_AUTH38
+
+// Packet: 0x0880
+packetLen(0x0880, 2) // ZC_REASSEMBLY_AUTH39
+
+// Packet: 0x0881
+packetLen(0x0881, 2) // ZC_REASSEMBLY_AUTH40
+
+// Packet: 0x0882
+packetLen(0x0882, 2) // ZC_REASSEMBLY_AUTH41
+
+// Packet: 0x0883
+packetLen(0x0883, 2) // ZC_REASSEMBLY_AUTH42
+
+// Packet: 0x0884
+packetLen(0x0884, 2) // CZ_REASSEMBLY_AUTH01
+
+// Packet: 0x0885
+packetLen(0x0885, 2) // CZ_REASSEMBLY_AUTH02
+
+// Packet: 0x0886
+packetLen(0x0886, 2) // CZ_REASSEMBLY_AUTH03
+
+// Packet: 0x0887
+packetLen(0x0887, 2) // CZ_REASSEMBLY_AUTH04
+
+// Packet: 0x0888
+packetLen(0x0888, 2) // CZ_REASSEMBLY_AUTH05
+
+// Packet: 0x0889
+packetLen(0x0889, 2) // CZ_REASSEMBLY_AUTH06
+
+// Packet: 0x088a
+packetLen(0x088a, 2) // CZ_REASSEMBLY_AUTH07
+
+// Packet: 0x088b
+packetLen(0x088b, 2) // CZ_REASSEMBLY_AUTH08
+
+// Packet: 0x088c
+packetLen(0x088c, 2) // CZ_REASSEMBLY_AUTH09
+
+// Packet: 0x088d
+packetLen(0x088d, 2) // CZ_REASSEMBLY_AUTH10
+
+// Packet: 0x088e
+packetLen(0x088e, 2) // CZ_REASSEMBLY_AUTH11
+
+// Packet: 0x088f
+packetLen(0x088f, 2) // CZ_REASSEMBLY_AUTH12
+
+// Packet: 0x0890
+packetLen(0x0890, 2) // CZ_REASSEMBLY_AUTH13
+
+// Packet: 0x0891
+packetLen(0x0891, 2) // CZ_REASSEMBLY_AUTH14
+
+// Packet: 0x0892
+packetLen(0x0892, 2) // CZ_REASSEMBLY_AUTH15
+
+// Packet: 0x0893
+packetLen(0x0893, 2) // CZ_REASSEMBLY_AUTH16
+
+// Packet: 0x0894
+packetLen(0x0894, 2) // CZ_REASSEMBLY_AUTH17
+
+// Packet: 0x0895
+packetLen(0x0895, 2) // CZ_REASSEMBLY_AUTH18
+
+// Packet: 0x0896
+packetLen(0x0896, 2) // CZ_REASSEMBLY_AUTH19
+
+// Packet: 0x0897
+packetLen(0x0897, 2) // CZ_REASSEMBLY_AUTH20
+
+// Packet: 0x0898
+packetLen(0x0898, 2) // CZ_REASSEMBLY_AUTH21
+
+// Packet: 0x0899
+packetLen(0x0899, 2) // CZ_REASSEMBLY_AUTH22
+
+// Packet: 0x089a
+packetLen(0x089a, 2) // CZ_REASSEMBLY_AUTH23
+
+// Packet: 0x089b
+packetLen(0x089b, 2) // CZ_REASSEMBLY_AUTH24
+
+// Packet: 0x089c
+packetLen(0x089c, 2) // CZ_REASSEMBLY_AUTH25
+
+// Packet: 0x089d
+packetLen(0x089d, 2) // CZ_REASSEMBLY_AUTH26
+
+// Packet: 0x089e
+packetLen(0x089e, 2) // CZ_REASSEMBLY_AUTH27
+
+// Packet: 0x089f
+packetLen(0x089f, 2) // CZ_REASSEMBLY_AUTH28
+
+// Packet: 0x08a0
+packetLen(0x08a0, 2) // CZ_REASSEMBLY_AUTH29
+
+// Packet: 0x08a1
+packetLen(0x08a1, 2) // CZ_REASSEMBLY_AUTH30
+
+// Packet: 0x08a2
+packetLen(0x08a2, 2) // CZ_REASSEMBLY_AUTH31
+
+// Packet: 0x08a3
+packetLen(0x08a3, 2) // CZ_REASSEMBLY_AUTH32
+
+// Packet: 0x08a4
+packetLen(0x08a4, 2) // CZ_REASSEMBLY_AUTH33
+
+// Packet: 0x08a5
+packetLen(0x08a5, 2) // CZ_REASSEMBLY_AUTH34
+
+// Packet: 0x08a6
+packetLen(0x08a6, 2) // CZ_REASSEMBLY_AUTH35
+
+// Packet: 0x08a7
+packetLen(0x08a7, 2) // CZ_REASSEMBLY_AUTH36
+
+// Packet: 0x08a8
+packetLen(0x08a8, 2) // CZ_REASSEMBLY_AUTH37
+
+// Packet: 0x08a9
+packetLen(0x08a9, 2) // CZ_REASSEMBLY_AUTH38
+
+// Packet: 0x08aa
+packetLen(0x08aa, 2) // CZ_REASSEMBLY_AUTH39
+
+// Packet: 0x08ab
+packetLen(0x08ab, 2) // CZ_REASSEMBLY_AUTH40
+
+// Packet: 0x08ac
+packetLen(0x08ac, 2) // CZ_REASSEMBLY_AUTH41
+
+// Packet: 0x08ad
+packetLen(0x08ad, 2) // CZ_REASSEMBLY_AUTH42
+
+// Packet: 0x08af
+packetLen(0x08af, 10) // HC_WAITING_LOGIN
+
+// Packet: 0x08b0
+packetLen(0x08b0, 17) // CH_WAITING_LOGIN
+
+// Packet: 0x08b1
+packetLen(0x08b1, -1) // ZC_MCSTORE_NOTMOVEITEM_LIST
+
+// Packet: 0x08b2
+packetLen(0x08b2, -1) // AC_REALNAME_AUTH
+
+// Packet: 0x08b3
+packetLen(0x08b3, -1) // ZC_SHOWSCRIPT
+
+// Packet: 0x08b4
+packetLen(0x08b4, 2) // ZC_START_COLLECTION
+
+// Packet: 0x08b5
+packetLen(0x08b5, 6) // CZ_TRYCOLLECTION
+
+// Packet: 0x08b6
+packetLen(0x08b6, 3) // ZC_TRYCOLLECTION
+
+// Packet: 0x08b8
+packetLen(0x08b8, 10) // CH_SECOND_PASSWD_ACK
+
+// Packet: 0x08b9
+packetLen(0x08b9, 12) // HC_SECOND_PASSWD_LOGIN
+
+// Packet: 0x08ba
+packetLen(0x08ba, 10) // CH_MAKE_SECOND_PASSWD
+
+// Packet: 0x08bb
+packetLen(0x08bb, 8) // HC_MAKE_SECOND_PASSWD
+
+// Packet: 0x08bc
+packetLen(0x08bc, 10) // CH_DELETE_SECOND_PASSWD
+
+// Packet: 0x08bd
+packetLen(0x08bd, 8) // HC_DELETE_SECOND_PASSWD
+
+// Packet: 0x08be
+packetLen(0x08be, 14) // CH_EDIT_SECOND_PASSWD
+
+// Packet: 0x08bf
+packetLen(0x08bf, 8) // HC_EDIT_SECOND_PASSWD
+
+// Packet: 0x08c0
+packetLen(0x08c0, -1) // ZC_ACK_SE_CASH_ITEM_LIST2
+
+// Packet: 0x08c1
+packetLen(0x08c1, 2) // CZ_MACRO_START
+
+// Packet: 0x08c2
+packetLen(0x08c2, 2) // CZ_MACRO_STOP
+
+// Packet: 0x08c3
+packetLen(0x08c3, 10) // CH_NOT_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c4
+packetLen(0x08c4, 8) // HC_NOT_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c5
+packetLen(0x08c5, 6) // CH_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c6
+packetLen(0x08c6, 4) // HC_AVAILABLE_SECOND_PASSWD
+
+// Packet: 0x08c7
+packetLen(0x08c7, -1) // ZC_SKILL_ENTRY3
+
+// Packet: 0x08c8
+packetLen(0x08c8, 34) // ZC_NOTIFY_ACT3
+
+// Packet: 0x08c9
+packetLen(0x08c9, 2) // CZ_REQ_SCHEDULER_CASHITEM
+
+// Packet: 0x08ca
+packetLen(0x08ca, -1) // ZC_ACK_SCHEDULER_CASHITEM
+
+// Packet: 0x08cb
+packetLen(0x08cb, -1) // ZC_PERSONAL_INFOMATION
+
+// Packet: 0x08cc
+packetLen(0x08cc, 109) // CA_LOGIN5
+
+// Packet: 0x08cd
+packetLen(0x08cd, 10) // ZC_STOPMOVE_FORCE
+
+// Packet: 0x08ce
+packetLen(0x08ce, 2) // ZC_FAILED_GET_ITEM_FROM_ZONEDA
+
+// Packet: 0x08cf
+packetLen(0x08cf, 10) // ZC_SPIRITS_ATTRIBUTE
+
+// Packet: 0x08d0
+packetLen(0x08d0, 9) // ZC_REQ_WEAR_EQUIP_ACK2
+
+// Packet: 0x08d1
+packetLen(0x08d1, 7) // ZC_REQ_TAKEOFF_EQUIP_ACK2
+
+// Packet: 0x08d2
+packetLen(0x08d2, 10) // ZC_FASTMOVE
+
+// Packet: 0x08d3
+packetLen(0x08d3, 10) // ZC_SE_CASHSHOP_UPDATE
+
+// Packet: 0x08d4
+packetLen(0x08d4, 8) // CH_REQ_CHANGE_CHARACTER_SLOT
+
+// Packet: 0x08d5
+packetLen(0x08d5, -1) // HC_ACK_CHANGE_CHARACTER_SLOT
+
+// Packet: 0x08d6
+packetLen(0x08d6, 6) // ZC_CLEAR_DIALOG
+
+// Packet: 0x08d7
+packetLen(0x08d7, 28) // CZ_REQ_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08d8
+packetLen(0x08d8, 27) // ZC_ACK_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08d9
+packetLen(0x08d9, 30) // ZC_NOTIFY_ENTRY_QUEUE_APPLY
+
+// Packet: 0x08da
+packetLen(0x08da, 26) // CZ_REQ_ENTRY_QUEUE_CANCEL
+
+// Packet: 0x08db
+packetLen(0x08db, 27) // ZC_ACK_ENTRY_QUEUE_CANCEL
+
+// Packet: 0x08dc
+packetLen(0x08dc, 26) // ZC_NOTIFY_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08dd
+packetLen(0x08dd, 27) // CZ_REPLY_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08de
+packetLen(0x08de, 27) // ZC_REPLY_ACK_ENTRY_QUEUE_ADMISSION
+
+// Packet: 0x08df
+packetLen(0x08df, 50) // ZC_NOTIFY_LOBBY_ADMISSION
+
+// Packet: 0x08e0
+packetLen(0x08e0, 51) // CZ_REPLY_LOBBY_ADMISSION
+
+// Packet: 0x08e1
+packetLen(0x08e1, 51) // ZC_REPLY_ACK_LOBBY_ADMISSION
+
+// Packet: 0x08e2
+packetLen(0x08e2, 27) // ZC_NAVIGATION_ACTIVE
+
+// Packet: 0x08e3
+packetLen(0x08e3, 157) // HC_UPDATE_CHARINFO
+
+// Packet: 0x08e4
+packetLen(0x08e4, 6) // AC_SHUTDOWN_INFO
+
+// Packet: 0x08fc
+packetLen(0x08fc, 30) // CH_REQ_CHANGE_CHARACTERNAME
+
+// Packet: 0x08fd
+packetLen(0x08fd, 6) // CH_ACK_CHANGE_CHARACTERNAME
+
+// Packet: 0x08fe
+packetLen(0x08fe, -1) // ZC_HUNTING_QUEST_INFO
+
+// Packet: 0x08ff
+packetLen(0x08ff, 24) // ZC_EFST_SET_ENTER
+
+// Packet: 0x0900
+packetLen(0x0900, -1) // ZC_INVENTORY_ITEMLIST_NORMAL
+
+// Packet: 0x0901
+packetLen(0x0901, -1) // ZC_INVENTORY_ITEMLIST_EQUIP
+
+// Packet: 0x0902
+packetLen(0x0902, -1) // ZC_CART_ITEMLIST_NORMAL
+
+// Packet: 0x0903
+packetLen(0x0903, -1) // ZC_CART_ITEMLIST_EQUIP
+
+// Packet: 0x0904
+packetLen(0x0904, -1) // ZC_STORE_ITEMLIST_NORMAL
+
+// Packet: 0x0905
+packetLen(0x0905, -1) // ZC_STORE_ITEMLIST_EQUIP
+
+// Packet: 0x0906
+packetLen(0x0906, -1) // ZC_MICROSCOPE
+
+// Packet: 0x0907
+packetLen(0x0907, 5) // CZ_INVENTORY_TAB
+
+// Packet: 0x0908
+packetLen(0x0908, 5) // ZC_INVENTORY_TAB
+
+// Packet: 0x090a
+packetLen(0x090a, 26) // CZ_REQ_ENTRY_QUEUE_RANKING
+
+// Packet: 0x090d
+packetLen(0x090d, -1) // ZC_PREMIUM_CAMPAIGN_INFO
+
+// Packet: 0x090e
+packetLen(0x090e, 2) // ZC_ENTRY_QUEUE_INIT
+
+// Packet: 0x090f
+packetLen(0x090f, -1) // ZC_NOTIFY_NEWENTRY7
+
+// Packet: 0x0910
+packetLen(0x0910, 10) // CZ_REQ_PARTY_NAME
+
+// Packet: 0x0911
+packetLen(0x0911, 30) // ZC_ACK_PARTY_NAME
+
+// Packet: 0x0912
+packetLen(0x0912, 10) // CZ_REQ_GUILD_NAME
+
+// Packet: 0x0913
+packetLen(0x0913, 30) // ZC_ACK_GUILD_NAME
+
+// Packet: 0x0914
+packetLen(0x0914, -1) // ZC_NOTIFY_MOVEENTRY9
+
+// Packet: 0x0915
+packetLen(0x0915, -1) // ZC_NOTIFY_STANDENTRY8
+
+// Packet: 0x0916
+packetLen(0x0916, 26) // CZ_REQ_JOIN_GUILD2
+
+// Packet: 0x0917
+packetLen(0x0917, 2) // ZC_REASSEMBLY_AUTH43
+
+// Packet: 0x0918
+packetLen(0x0918, 2) // ZC_REASSEMBLY_AUTH44
+
+// Packet: 0x0919
+packetLen(0x0919, 2) // ZC_REASSEMBLY_AUTH45
+
+// Packet: 0x091a
+packetLen(0x091a, 2) // ZC_REASSEMBLY_AUTH46
+
+// Packet: 0x091b
+packetLen(0x091b, 2) // ZC_PRNPC_STATE
+
+// Packet: 0x091c
+packetLen(0x091c, 2) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+
+// Packet: 0x091d
+packetLen(0x091d, 2) // ZC_REASSEMBLY_AUTH49
+
+// Packet: 0x091e
+packetLen(0x091e, 2) // ZC_REASSEMBLY_AUTH50
+
+// Packet: 0x091f
+packetLen(0x091f, 2) // ZC_REASSEMBLY_AUTH51
+
+// Packet: 0x0920
+packetLen(0x0920, 2) // ZC_REASSEMBLY_AUTH52
+
+// Packet: 0x0921
+packetLen(0x0921, 2) // ZC_REASSEMBLY_AUTH53
+
+// Packet: 0x0922
+packetLen(0x0922, 2) // ZC_REASSEMBLY_AUTH54
+
+// Packet: 0x0923
+packetLen(0x0923, 2) // ZC_REASSEMBLY_AUTH55
+
+// Packet: 0x0924
+packetLen(0x0924, 2) // ZC_REASSEMBLY_AUTH56
+
+// Packet: 0x0925
+packetLen(0x0925, 2) // ZC_REASSEMBLY_AUTH57
+
+// Packet: 0x0926
+packetLen(0x0926, 2) // ZC_REASSEMBLY_AUTH58
+
+// Packet: 0x0927
+packetLen(0x0927, 2) // ZC_REASSEMBLY_AUTH59
+
+// Packet: 0x0928
+packetLen(0x0928, 2) // ZC_REASSEMBLY_AUTH60
+
+// Packet: 0x0929
+packetLen(0x0929, 2) // ZC_REASSEMBLY_AUTH61
+
+// Packet: 0x092a
+packetLen(0x092a, 2) // ZC_REASSEMBLY_AUTH62
+
+// Packet: 0x092b
+packetLen(0x092b, 2) // ZC_REASSEMBLY_AUTH63
+
+// Packet: 0x092c
+packetLen(0x092c, 2) // ZC_REASSEMBLY_AUTH64
+
+// Packet: 0x092d
+packetLen(0x092d, 2) // ZC_REASSEMBLY_AUTH65
+
+// Packet: 0x092e
+packetLen(0x092e, 2) // ZC_REASSEMBLY_AUTH66
+
+// Packet: 0x092f
+packetLen(0x092f, 2) // ZC_REASSEMBLY_AUTH67
+
+// Packet: 0x0930
+packetLen(0x0930, 2) // ZC_REASSEMBLY_AUTH68
+
+// Packet: 0x0931
+packetLen(0x0931, 2) // ZC_REASSEMBLY_AUTH69
+
+// Packet: 0x0932
+packetLen(0x0932, 2) // ZC_REASSEMBLY_AUTH70
+
+// Packet: 0x0933
+packetLen(0x0933, 2) // ZC_REASSEMBLY_AUTH71
+
+// Packet: 0x0934
+packetLen(0x0934, 2) // ZC_REASSEMBLY_AUTH72
+
+// Packet: 0x0935
+packetLen(0x0935, 2) // ZC_REASSEMBLY_AUTH73
+
+// Packet: 0x0936
+packetLen(0x0936, 2) // ZC_REASSEMBLY_AUTH74
+
+// Packet: 0x0937
+packetLen(0x0937, 2) // ZC_REASSEMBLY_AUTH75
+
+// Packet: 0x0938
+packetLen(0x0938, 2) // ZC_REASSEMBLY_AUTH76
+
+// Packet: 0x0939
+packetLen(0x0939, 2) // ZC_REASSEMBLY_AUTH77
+
+// Packet: 0x093a
+packetLen(0x093a, 2) // ZC_REASSEMBLY_AUTH78
+
+// Packet: 0x093b
+packetLen(0x093b, 2) // ZC_REASSEMBLY_AUTH79
+
+// Packet: 0x093c
+packetLen(0x093c, 2) // ZC_REASSEMBLY_AUTH80
+
+// Packet: 0x093d
+packetLen(0x093d, 2) // ZC_REASSEMBLY_AUTH81
+
+// Packet: 0x093e
+packetLen(0x093e, 2) // ZC_REASSEMBLY_AUTH82
+
+// Packet: 0x093f
+packetLen(0x093f, 2) // ZC_REASSEMBLY_AUTH83
+
+// Packet: 0x0940
+packetLen(0x0940, 2) // ZC_REASSEMBLY_AUTH84
+
+// Packet: 0x0941
+packetLen(0x0941, 2) // CZ_REASSEMBLY_AUTH43
+
+// Packet: 0x0942
+packetLen(0x0942, 2) // CZ_REASSEMBLY_AUTH44
+
+// Packet: 0x0943
+packetLen(0x0943, 2) // CZ_REASSEMBLY_AUTH45
+
+// Packet: 0x0944
+packetLen(0x0944, 2) // CZ_REASSEMBLY_AUTH46
+
+// Packet: 0x0945
+packetLen(0x0945, 2) // CZ_REASSEMBLY_AUTH47
+
+// Packet: 0x0946
+packetLen(0x0946, 2) // CZ_REASSEMBLY_AUTH48
+
+// Packet: 0x0947
+packetLen(0x0947, 2) // CZ_REASSEMBLY_AUTH49
+
+// Packet: 0x0948
+packetLen(0x0948, 2) // CZ_REASSEMBLY_AUTH50
+
+// Packet: 0x0949
+packetLen(0x0949, 2) // CZ_REASSEMBLY_AUTH51
+
+// Packet: 0x094a
+packetLen(0x094a, 2) // CZ_REASSEMBLY_AUTH52
+
+// Packet: 0x094b
+packetLen(0x094b, 2) // CZ_REASSEMBLY_AUTH53
+
+// Packet: 0x094c
+packetLen(0x094c, 2) // CZ_REASSEMBLY_AUTH54
+
+// Packet: 0x094d
+packetLen(0x094d, 2) // CZ_REASSEMBLY_AUTH55
+
+// Packet: 0x094e
+packetLen(0x094e, 2) // CZ_REASSEMBLY_AUTH56
+
+// Packet: 0x094f
+packetLen(0x094f, 2) // CZ_REASSEMBLY_AUTH57
+
+// Packet: 0x0950
+packetLen(0x0950, 2) // CZ_REASSEMBLY_AUTH58
+
+// Packet: 0x0951
+packetLen(0x0951, 2) // CZ_REASSEMBLY_AUTH59
+
+// Packet: 0x0952
+packetLen(0x0952, 2) // CZ_REASSEMBLY_AUTH60
+
+// Packet: 0x0953
+packetLen(0x0953, 2) // CZ_REASSEMBLY_AUTH61
+
+// Packet: 0x0954
+packetLen(0x0954, 2) // CZ_REASSEMBLY_AUTH62
+
+// Packet: 0x0955
+packetLen(0x0955, 2) // CZ_REASSEMBLY_AUTH63
+
+// Packet: 0x0956
+packetLen(0x0956, 2) // CZ_REASSEMBLY_AUTH64
+
+// Packet: 0x0957
+packetLen(0x0957, 2) // CZ_REASSEMBLY_AUTH65
+
+// Packet: 0x0958
+packetLen(0x0958, 2) // CZ_REASSEMBLY_AUTH66
+
+// Packet: 0x0959
+packetLen(0x0959, 2) // CZ_REASSEMBLY_AUTH67
+
+// Packet: 0x095a
+packetLen(0x095a, 2) // CZ_REASSEMBLY_AUTH68
+
+// Packet: 0x095b
+packetLen(0x095b, 2) // CZ_REASSEMBLY_AUTH69
+
+// Packet: 0x095c
+packetLen(0x095c, 2) // CZ_REASSEMBLY_AUTH70
+
+// Packet: 0x095d
+packetLen(0x095d, 2) // CZ_REASSEMBLY_AUTH71
+
+// Packet: 0x095e
+packetLen(0x095e, 2) // CZ_REASSEMBLY_AUTH72
+
+// Packet: 0x095f
+packetLen(0x095f, 2) // CZ_REASSEMBLY_AUTH73
+
+// Packet: 0x0960
+packetLen(0x0960, 2) // CZ_REASSEMBLY_AUTH74
+
+// Packet: 0x0961
+packetLen(0x0961, 2) // CZ_REASSEMBLY_AUTH75
+
+// Packet: 0x0962
+packetLen(0x0962, 2) // CZ_REASSEMBLY_AUTH76
+
+// Packet: 0x0963
+packetLen(0x0963, 2) // CZ_REASSEMBLY_AUTH77
+
+// Packet: 0x0964
+packetLen(0x0964, 2) // CZ_REASSEMBLY_AUTH78
+
+// Packet: 0x0965
+packetLen(0x0965, 2) // CZ_REASSEMBLY_AUTH79
+
+// Packet: 0x0966
+packetLen(0x0966, 2) // CZ_REASSEMBLY_AUTH80
+
+// Packet: 0x0967
+packetLen(0x0967, 2) // CZ_REASSEMBLY_AUTH81
+
+// Packet: 0x0968
+packetLen(0x0968, 2) // CZ_REASSEMBLY_AUTH82
+
+// Packet: 0x0969
+packetLen(0x0969, 2) // CZ_REASSEMBLY_AUTH83
+
+// Packet: 0x096a
+packetLen(0x096a, 2) // CZ_REASSEMBLY_AUTH84
+
+// Packet: 0x096b
+packetLen(0x096b, 4) // ZC_PRNPC_STATE
+
+// Packet: 0x096c
+packetLen(0x096c, 6) // ZC_PARTY_RECRUIT_CANCEL_VOLUNTEER_TO_PM
+
+// Packet: 0x096d
+packetLen(0x096d, -1) // ZC_MERGE_ITEM_OPEN
+
+// Packet: 0x096e
+packetLen(0x096e, -1) // CZ_REQ_MERGE_ITEM
+
+// Packet: 0x096f
+packetLen(0x096f, 7) // ZC_ACK_MERGE_ITEM
+
+// Packet: 0x0970
+packetLen(0x0970, 31) // CH_MAKE_CHAR_NOT_STATS
+
+// Packet: 0x0971
+packetLen(0x0971, 6) // ZC_PARTY_RECRUIT_REFUSE_VOLUNTEER_TO_PM
+
+// Packet: 0x0972
+packetLen(0x0972, -1) // ZC_SAY_DIALOG2
+
+// Packet: 0x0973
+packetLen(0x0973, 7) // ZC_WAIT_DIALOG2
+
+// Packet: 0x0974
+packetLen(0x0974, 2) // CZ_CANCEL_MERGE_ITEM
+
+// Packet: 0x0975
+packetLen(0x0975, -1) // ZC_STORE_ITEMLIST_NORMAL_V2
+
+// Packet: 0x0976
+packetLen(0x0976, -1) // ZC_STORE_ITEMLIST_EQUIP_V2
+
+// Packet: 0x0977
+packetLen(0x0977, 14) // ZC_HP_INFO
+
+// Packet: 0x0978
+packetLen(0x0978, 6) // CZ_REQ_BEFORE_WORLD_INFO
+
+// Packet: 0x0979
+packetLen(0x0979, 50) // ZC_ACK_BEFORE_WORLD_INFO
+
+// Packet: 0x097a
+packetLen(0x097a, -1) // ZC_ALL_QUEST_LIST2
+
+// Packet: 0x097b
+packetLen(0x097b, -1) // ZC_PERSONAL_INFOMATION2
+
+// Packet: 0x097c
+packetLen(0x097c, 4) // CZ_REQ_RANKING
+
+// Packet: 0x097d
+packetLen(0x097d, 288) // ZC_ACK_RANKING
+
+// Packet: 0x097e
+packetLen(0x097e, 12) // ZC_UPDATE_RANKING_POINT
+
+// Packet: 0x097f
+packetLen(0x097f, -1) // ZC_SELECTCART
+
+// Packet: 0x0980
+packetLen(0x0980, 7) // CZ_SELECTCART
+
+// Packet: 0x0981
+packetLen(0x0981, -1) // ZC_PERSONAL_INFOMATION_CHN
+
+// Packet: 0x0982
+packetLen(0x0982, 7) // ZC_FATIGUE_CHN
+
+// Packet: 0x0983
+packetLen(0x0983, 29) // ZC_MSG_STATE_CHANGE3
+
+// Packet: 0x0984
+packetLen(0x0984, 28) // ZC_EFST_SET_ENTER2
+
+// Packet: 0x0985
+packetLen(0x0985, -1) // ZC_SKILL_POSTDELAY_LIST2
+
+// Packet: 0x0986
+packetLen(0x0986, 10) // AC_SHUTDOWN_NOTIFY
+
+// Packet: 0x0987
+packetLen(0x0987, -1) // CA_LOGIN6
+
+// Packet: 0x0988
+packetLen(0x0988, 6) // ZC_NOTIFY_CLAN_CONNECTINFO
+
+// Packet: 0x0989
+packetLen(0x0989, 2) // ZC_ACK_CLAN_LEAVE
+
+// Packet: 0x098a
+packetLen(0x098a, -1) // ZC_CLANINFO
+
+// Packet: 0x098b
+packetLen(0x098b, 2) // AC_REQ_NEW_USER
+
+// Packet: 0x098c
+packetLen(0x098c, 4) // CA_ACK_NEW_USER
+
+// Packet: 0x098d
+packetLen(0x098d, -1) // CZ_CLAN_CHAT
+
+// Packet: 0x098e
+packetLen(0x098e, -1) // ZC_NOTIFY_CLAN_CHAT
+
+// Packet: 0x098f
+packetLen(0x098f, -1) // CH_DELETE_CHAR3_EXT
+
+// Packet: 0x0990
+packetLen(0x0990, 41) // ZC_ITEM_PICKUP_ACK_V5
+
+// Packet: 0x0991
+packetLen(0x0991, -1) // ZC_INVENTORY_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0992
+packetLen(0x0992, -1) // ZC_INVENTORY_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0993
+packetLen(0x0993, -1) // ZC_CART_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0994
+packetLen(0x0994, -1) // ZC_CART_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0995
+packetLen(0x0995, -1) // ZC_STORE_ITEMLIST_NORMAL_V5
+
+// Packet: 0x0996
+packetLen(0x0996, -1) // ZC_STORE_ITEMLIST_EQUIP_V5
+
+// Packet: 0x0997
+packetLen(0x0997, -1) // ZC_EQUIPWIN_MICROSCOPE_V5
+
+// Packet: 0x0998
+packetLen(0x0998, 8) // CZ_REQ_WEAR_EQUIP_V5
+
+// Packet: 0x0999
+packetLen(0x0999, 11) // ZC_ACK_WEAR_EQUIP_V5
+
+// Packet: 0x099a
+packetLen(0x099a, 9) // ZC_ACK_TAKEOFF_EQUIP_V5
+
+// Packet: 0x099b
+packetLen(0x099b, 8) // ZC_MAPPROPERTY_R2
+
+// Packet: 0x099c
+packetLen(0x099c, 6) // CH_REQ_CHARINFO_PER_PAGE
+
+// Packet: 0x099d
+packetLen(0x099d, -1) // HC_ACK_CHARINFO_PER_PAGE
+
+// Packet: 0x099e
+packetLen(0x099e, 12) // HC_QUEUE_ORDER
+
+// Packet: 0x099f
+packetLen(0x099f, -1) // ZC_SKILL_ENTRY4
+
+// Packet: 0x09a0
+packetLen(0x09a0, 6) // HC_CHARLIST_NOTIFY
+
+// Packet: 0x09a1
+packetLen(0x09a1, 2) // CH_CHARLIST_REQ
+
+// Packet: 0x09a2
+packetLen(0x09a2, 6) // AC_REQ_MOBILE_OTP
+
+// Packet: 0x09a3
+packetLen(0x09a3, -1) // CA_ACK_MOBILE_OTP
+
+// Packet: 0x09a4
+packetLen(0x09a4, 18) // ZC_DISPATCH_TIMING_INFO_CHN
+
+// Packet: 0x09a5
+packetLen(0x09a5, 7) // AC_REFUSE_LOGIN3
+
+// Packet: 0x09a6
+packetLen(0x09a6, 12) // ZC_BANKING_CHECK
+
+// Packet: 0x09a7
+packetLen(0x09a7, 10) // CZ_REQ_BANKING_DEPOSIT
+
+// Packet: 0x09a8
+packetLen(0x09a8, 16) // ZC_ACK_BANKING_DEPOSIT
+
+// Packet: 0x09a9
+packetLen(0x09a9, 10) // CZ_REQ_BANKING_WITHDRAW
+
+// Packet: 0x09aa
+packetLen(0x09aa, 16) // ZC_ACK_BANKING_WITHDRAW
+
+// Packet: 0x09ab
+packetLen(0x09ab, 6) // CZ_REQ_BANKING_CHECK
+
+// Packet: 0x09ac
+packetLen(0x09ac, -1) // CZ_REQ_CASH_BARGAIN_SALE_ITEM_INFO
+
+// Packet: 0x09ad
+packetLen(0x09ad, 12) // ZC_ACK_CASH_BARGAIN_SALE_ITEM_INFO
+
+// Packet: 0x09ae
+packetLen(0x09ae, 19) // CZ_REQ_APPLY_BARGAIN_SALE_ITEM
+
+// Packet: 0x09af
+packetLen(0x09af, 4) // ZC_ACK_APPLY_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b0
+packetLen(0x09b0, 10) // CZ_REQ_REMOVE_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b1
+packetLen(0x09b1, 4) // ZC_ACK_REMOVE_BARGAIN_SALE_ITEM
+
+// Packet: 0x09b2
+packetLen(0x09b2, 10) // ZC_NOTIFY_BARGAIN_SALE_SELLING
+
+// Packet: 0x09b3
+packetLen(0x09b3, 6) // ZC_NOTIFY_BARGAIN_SALE_CLOSE
+
+// Packet: 0x09b4
+packetLen(0x09b4, 6) // CZ_OPEN_BARGAIN_SALE_TOOL
+
+// Packet: 0x09b5
+packetLen(0x09b5, 2) // ZC_OPEN_BARGAIN_SALE_TOOL
+
+// Packet: 0x09b6
+packetLen(0x09b6, 6) // CZ_REQ_OPEN_BANKING
+
+// Packet: 0x09b7
+packetLen(0x09b7, 4) // ZC_ACK_OPEN_BANKING
+
+// Packet: 0x09b8
+packetLen(0x09b8, 6) // CZ_REQ_CLOSE_BANKING
+
+// Packet: 0x09b9
+packetLen(0x09b9, 4) // ZC_ACK_CLOSE_BANKING
+
+// Packet: 0x09ba
+packetLen(0x09ba, 2) // CZ_REQ_OPEN_GUILD_STORAGE
+
+// Packet: 0x09bb
+packetLen(0x09bb, 6) // ZC_ACK_OPEN_GUILD_STORAGE
+
+// Packet: 0x09bc
+packetLen(0x09bc, 6) // CZ_CLOSE_BARGAIN_SALE_TOOL
+
+// Packet: 0x09bd
+packetLen(0x09bd, 2) // ZC_CLOSE_BARGAIN_SALE_TOOL
+
+// Packet: 0x09be
+packetLen(0x09be, 2) // CZ_REQ_CLOSE_GUILD_STORAGE
+
+// Packet: 0x09bf
+packetLen(0x09bf, 4) // ZC_ACK_CLOSE_GUILD_STORAGE
+
+// Packet: 0x09c1
+packetLen(0x09c1, 10) // ZC_C_MARKERINFO
+
+// Packet: 0x09c2
+packetLen(0x09c2, -1) // HC_SECRETSCAN_DATA
+
+// Packet: 0x09c3
+packetLen(0x09c3, 10) // CZ_REQ_COUNT_BARGAIN_SALE_ITEM
+
+// Packet: 0x09c4
+packetLen(0x09c4, 10) // ZC_ACK_COUNT_BARGAIN_SALE_ITEM
+
+// Packet: 0x09c5
+packetLen(0x09c5, 1042) // CS_LOGIN_QUERY
+
+// Packet: 0x09c6
+packetLen(0x09c6, -1) // SC_LOGIN_ANSWER
+
+// Packet: 0x09c7
+packetLen(0x09c7, 18) // SC_LOGIN_ERROR
+
+// Packet: 0x09c8
+packetLen(0x09c8, -1) // CA_LOGIN_OTP
+
+// Packet: 0x09c9
+packetLen(0x09c9, -1) // SC_SOCT
+
+// Packet: 0x09ca
+packetLen(0x09ca, -1) // ZC_SKILL_ENTRY5
+
+// Packet: 0x09cb
+packetLen(0x09cb, 17) // ZC_USE_SKILL2
+
+// Packet: 0x09cc
+packetLen(0x09cc, -1) // ZC_SECRETSCAN_DATA
+
+// Packet: 0x09cd
+packetLen(0x09cd, 8) // ZC_MSG_COLOR
+
+// Packet: 0x09ce
+packetLen(0x09ce, 102) // CZ_ITEM_CREATE_EX
+
+// Packet: 0x09cf
+packetLen(0x09cf, -1) // ZC_NPROTECTGAMEGUARDCSAUTH
+
+// Packet: 0x09d0
+packetLen(0x09d0, -1) // CZ_NPROTECTGAMEGUARDCSAUTH
+
+// Packet: 0x09d1
+packetLen(0x09d1, 14) // ZC_PROGRESS_ACTOR
+
+// Packet: 0x09d2
+packetLen(0x09d2, -1) // ZC_GUILDSTORAGE_ITEMLIST_NORMAL_V5
+
+// Packet: 0x09d3
+packetLen(0x09d3, -1) // ZC_GUILDSTORAGE_ITEMLIST_EQUIP_V5
+
+// Packet: 0x09d4
+packetLen(0x09d4, 2) // CZ_NPC_TRADE_QUIT
+
+// Packet: 0x09d5
+packetLen(0x09d5, -1) // ZC_NPC_MARKET_OPEN
+
+// Packet: 0x09d6
+packetLen(0x09d6, -1) // CZ_NPC_MARKET_PURCHASE
+
+// Packet: 0x09d7
+packetLen(0x09d7, -1) // ZC_NPC_MARKET_PURCHASE_RESULT
+
+// Packet: 0x09d8
+packetLen(0x09d8, 2) // CZ_NPC_MARKET_CLOSE
+
+// Packet: 0x09d9
+packetLen(0x09d9, 4) // CZ_REQ_GUILDSTORAGE_LOG
+
+// Packet: 0x09da
+packetLen(0x09da, -1) // ZC_ACK_GUILDSTORAGE_LOG
+
+// Packet: 0x09db
+packetLen(0x09db, -1) // ZC_NOTIFY_MOVEENTRY10
+
+// Packet: 0x09dc
+packetLen(0x09dc, -1) // ZC_NOTIFY_NEWENTRY10
+
+// Packet: 0x09dd
+packetLen(0x09dd, -1) // ZC_NOTIFY_STANDENTRY10
+
+// Packet: 0x09de
+packetLen(0x09de, -1) // ZC_WHISPER02
+
+// Packet: 0x09df
+packetLen(0x09df, 7) // ZC_ACK_WHISPER02
+
+// Packet: 0x09e0
+packetLen(0x09e0, -1) // SC_LOGIN_ANSWER_WITH_ID
+
+// Packet: 0x09e1
+packetLen(0x09e1, 8) // CZ_MOVE_ITEM_FROM_BODY_TO_GUILDSTORAGE
+
+// Packet: 0x09e2
+packetLen(0x09e2, 8) // CZ_MOVE_ITEM_FROM_GUILDSTORAGE_TO_BODY
+
+// Packet: 0x09e3
+packetLen(0x09e3, 8) // CZ_MOVE_ITEM_FROM_CART_TO_GUILDSTORAGE
+
+// Packet: 0x09e4
+packetLen(0x09e4, 8) // CZ_MOVE_ITEM_FROM_GUILDSTORAGE_TO_CART
+
+// Packet: 0x09e5
+packetLen(0x09e5, 18) // ZC_DELETEITEM_FROM_MCSTORE2
+
+// Packet: 0x09e6
+packetLen(0x09e6, 24) // ZC_UPDATE_ITEM_FROM_BUYING_STORE2
+
+// Packet: 0x09e7
+packetLen(0x09e7, 3) // ZC_NOTIFY_UNREAD_RODEX
+
+// Packet: 0x09e8
+packetLen(0x09e8, 11) // CZ_OPEN_RODEXBOX
+
+// Packet: 0x09e9
+packetLen(0x09e9, 2) // CZ_CLOSE_RODEXBOX
+
+// Packet: 0x09ea
+packetLen(0x09ea, 11) // CZ_REQ_READ_RODEX
+
+// Packet: 0x09eb
+packetLen(0x09eb, -1) // ZC_ACK_READ_RODEX
+
+// Packet: 0x09ec
+packetLen(0x09ec, -1) // CZ_REQ_SEND_RODEX
+
+// Packet: 0x09ed
+packetLen(0x09ed, 3) // ZC_ACK_SEND_RODEX
+
+// Packet: 0x09ee
+packetLen(0x09ee, 11) // CZ_REQ_NEXT_RODEX
+
+// Packet: 0x09ef
+packetLen(0x09ef, 11) // CZ_REQ_REFRESH_RODEX
+
+// Packet: 0x09f0
+packetLen(0x09f0, -1) // ZC_ACK_RODEX_LIST
+
+// Packet: 0x09f1
+packetLen(0x09f1, 11) // CZ_REQ_ZENY_FROM_RODEX
+
+// Packet: 0x09f2
+packetLen(0x09f2, 12) // ZC_ACK_ZENY_FROM_RODEX
+
+// Packet: 0x09f3
+packetLen(0x09f3, 11) // CZ_REQ_ITEM_FROM_RODEX
+
+// Packet: 0x09f4
+packetLen(0x09f4, 12) // ZC_ACK_ITEM_FROM_RODEX
+
+// Packet: 0x09f5
+packetLen(0x09f5, 11) // CZ_REQ_DELETE_RODEX
+
+// Packet: 0x09f6
+packetLen(0x09f6, 11) // ZC_ACK_DELETE_RODEX
+
+// Packet: 0x09f7
+packetLen(0x09f7, 77) // ZC_PROPERTY_HOMUN_2
+
+// Packet: 0x09f8
+packetLen(0x09f8, -1) // ZC_ALL_QUEST_LIST3
+
+// Packet: 0x09f9
+packetLen(0x09f9, 143) // ZC_ADD_QUEST_EX
+
+// Packet: 0x09fa
+packetLen(0x09fa, -1) // ZC_UPDATE_MISSION_HUNT_EX
+
+// Packet: 0x09fb
+packetLen(0x09fb, -1) // CZ_PET_EVOLUTION
+
+// Packet: 0x09fc
+packetLen(0x09fc, 6) // ZC_PET_EVOLUTION_RESULT
+
+// Packet: 0x09fd
+packetLen(0x09fd, -1) // ZC_NOTIFY_MOVEENTRY11
+
+// Packet: 0x09fe
+packetLen(0x09fe, -1) // ZC_NOTIFY_NEWENTRY11
+
+// Packet: 0x09ff
+packetLen(0x09ff, -1) // ZC_NOTIFY_STANDENTRY11
+
+// Packet: 0x0a00
+packetLen(0x0a00, 269) // ZC_SHORTCUT_KEY_LIST_V3
+
+// Packet: 0x0a01
+packetLen(0x0a01, 3) // CZ_SHORTCUTKEYBAR_ROTATE
+
+// Packet: 0x0a02
+packetLen(0x0a02, 4) // ZC_DRESSROOM_OPEN
+
+// Packet: 0x0a03
+packetLen(0x0a03, 2) // CZ_REQ_CANCEL_WRITE_RODEX
+
+// Packet: 0x0a04
+packetLen(0x0a04, 6) // CZ_REQ_ADD_ITEM_RODEX
+
+// Packet: 0x0a05
+packetLen(0x0a05, 63) // ZC_ACK_ADD_ITEM_RODEX
+
+// Packet: 0x0a06
+packetLen(0x0a06, 6) // CZ_REQ_REMOVE_RODEX_ITEM
+
+// Packet: 0x0a07
+packetLen(0x0a07, 9) // ZC_ACK_REMOVE_RODEX_ITEM
+
+// Packet: 0x0a08
+packetLen(0x0a08, 26) // CZ_REQ_OPEN_WRITE_RODEX
+
+// Packet: 0x0a09
+packetLen(0x0a09, 55) // ZC_ADD_EXCHANGE_ITEM3
+
+// Packet: 0x0a0a
+packetLen(0x0a0a, 57) // ZC_ADD_ITEM_TO_STORE3
+
+// Packet: 0x0a0b
+packetLen(0x0a0b, 57) // ZC_ADD_ITEM_TO_CART3
+
+// Packet: 0x0a0c
+packetLen(0x0a0c, 66) // ZC_ITEM_PICKUP_ACK_V6
+
+// Packet: 0x0a0d
+packetLen(0x0a0d, -1) // ZC_INVENTORY_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a0e
+packetLen(0x0a0e, 14) // ZC_BATTLEFIELD_NOTIFY_HP2
+
+// Packet: 0x0a0f
+packetLen(0x0a0f, -1) // ZC_CART_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a10
+packetLen(0x0a10, -1) // ZC_STORE_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a11
+packetLen(0x0a11, -1) // ZC_GUILDSTORAGE_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0a12
+packetLen(0x0a12, 27) // ZC_ACK_OPEN_WRITE_RODEX
+
+// Packet: 0x0a13
+packetLen(0x0a13, 26) // CZ_CHECK_RECEIVE_CHARACTER_NAME
+
+// Packet: 0x0a14
+packetLen(0x0a14, 10) // ZC_CHECK_RECEIVE_CHARACTER_NAME
+
+// Packet: 0x0a15
+packetLen(0x0a15, 12) // ZC_GOLDPCCAFE_POINT
+
+// Packet: 0x0a16
+packetLen(0x0a16, 26) // CZ_DYNAMICNPC_CREATE_REQUEST
+
+// Packet: 0x0a17
+packetLen(0x0a17, 6) // ZC_DYNAMICNPC_CREATE_RESULT
+
+// Packet: 0x0a18
+packetLen(0x0a18, 14) // ZC_ACCEPT_ENTER3
+
+// Packet: 0x0a19
+packetLen(0x0a19, 2) // CZ_REQ_OPEN_ROULETTE
+
+// Packet: 0x0a1a
+packetLen(0x0a1a, 25) // ZC_ACK_OPEN_ROULETTE
+
+// Packet: 0x0a1b
+packetLen(0x0a1b, 2) // CZ_REQ_ROULETTE_INFO
+
+// Packet: 0x0a1c
+packetLen(0x0a1c, -1) // ZC_ACK_ROULEITTE_INFO
+
+// Packet: 0x0a1d
+packetLen(0x0a1d, 2) // CZ_REQ_CLOSE_ROULETTE
+
+// Packet: 0x0a1e
+packetLen(0x0a1e, 3) // ZC_ACK_CLOSE_ROULETTE
+
+// Packet: 0x0a1f
+packetLen(0x0a1f, 2) // CZ_REQ_GENERATE_ROULETTE
+
+// Packet: 0x0a20
+packetLen(0x0a20, 23) // ZC_ACK_GENERATE_ROULETTE
+
+// Packet: 0x0a21
+packetLen(0x0a21, 3) // CZ_RECV_ROULETTE_ITEM
+
+// Packet: 0x0a22
+packetLen(0x0a22, 7) // ZC_RECV_ROULETTE_ITEM
+
+// Packet: 0x0a23
+packetLen(0x0a23, -1) // ZC_ALL_ACH_LIST
+
+// Packet: 0x0a24
+packetLen(0x0a24, 66) // ZC_ACH_UPDATE
+
+// Packet: 0x0a25
+packetLen(0x0a25, 6) // CZ_REQ_ACH_REWARD
+
+// Packet: 0x0a26
+packetLen(0x0a26, 7) // ZC_REQ_ACH_REWARD_ACK
+
+// Packet: 0x0a27
+packetLen(0x0a27, 8) // ZC_RECOVERY2
+
+// Packet: 0x0a28
+packetLen(0x0a28, 3) // ZC_ACK_OPENSTORE2
+
+// Packet: 0x0a29
+packetLen(0x0a29, 6) // ZC_REQ_AU_BOT
+
+// Packet: 0x0a2a
+packetLen(0x0a2a, 6) // CZ_ACK_AU_BOT
+
+// Packet: 0x0a2b
+packetLen(0x0a2b, 14) // ZC_SE_CASHSHOP_OPEN2
+
+// Packet: 0x0a2c
+packetLen(0x0a2c, 12) // ZC_SE_PC_BUY_TAIWANCASHITEM_RESULT
+
+// Packet: 0x0a2d
+packetLen(0x0a2d, -1) // ZC_EQUIPWIN_MICROSCOPE_V6
+
+// Packet: 0x0a2e
+packetLen(0x0a2e, 6) // CZ_REQ_CHANGE_TITLE
+
+// Packet: 0x0a2f
+packetLen(0x0a2f, 7) // ZC_ACK_CHANGE_TITLE
+
+// Packet: 0x0a30
+packetLen(0x0a30, 106) // ZC_ACK_REQNAMEALL2
+
+// Packet: 0x0a31
+packetLen(0x0a31, -1) // ZC_RESULT_PACKAGE_ITEM_TEST
+
+// Packet: 0x0a32
+packetLen(0x0a32, 2) // ZC_OPEN_RODEX_THROUGH_NPC_ONLY
+
+// Packet: 0x0a33
+packetLen(0x0a33, 7) // ZC_UPDATE_ROULETTE_COIN
+
+// Packet: 0x0a34
+packetLen(0x0a34, 6) // ZC_UPDATE_TAIWANCASH
+
+// Packet: 0x0a35
+packetLen(0x0a35, 4) // CZ_REQ_ONECLICK_ITEMIDENTIFY
+
+// Packet: 0x0a36
+packetLen(0x0a36, 7) // ZC_HP_INFO_TINY
+
+// Packet: 0x0a37
+packetLen(0x0a37, 69) // ZC_ITEM_PICKUP_ACK_V7
+
+// Packet: 0x0a38
+packetLen(0x0a38, 3) // ZC_OPEN_UI
+
+// Packet: 0x0a39
+packetLen(0x0a39, 36) // CH_MAKE_CHAR
+
+// Packet: 0x0a3a
+packetLen(0x0a3a, 12)
+
+// Packet: 0x0a3b
+packetLen(0x0a3b, -1) // ZC_CUSTOM_HAT_EFFECT
+
+// Packet: 0x0a3c
+packetLen(0x0a3c, -1)
+
+// Packet: 0x0a3d
+packetLen(0x0a3d, 20)
+
+// Packet: 0x0a3e
+packetLen(0x0a3e, -1)
+
+// Packet: 0x0a3f
+packetLen(0x0a3f, 11)
+
+// Packet: 0x0a40
+packetLen(0x0a40, 11)
+
+// Packet: 0x0a41
+packetLen(0x0a41, 18) // ZC_AOE_EFFECT_SKILL
+
+// Packet: 0x0a42
+packetLen(0x0a42, 43)
+
+// Packet: 0x0a43
+packetLen(0x0a43, 85) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0a44
+packetLen(0x0a44, -1) // ZC_GROUP_LIST
+
+// Packet: 0x0a46
+packetLen(0x0a46, 14)
+
+// Packet: 0x0a47
+packetLen(0x0a47, 3) // ZC_STYLE_CHANGE_RES
+
+// Packet: 0x0a48
+packetLen(0x0a48, 2)
+
+// Packet: 0x0a49
+packetLen(0x0a49, 22) // CZ_PRIVATE_AIRSHIP_REQUEST
+
+// Packet: 0x0a4a
+packetLen(0x0a4a, 6) // ZC_PRIVATE_AIRSHIP_RESPONSE
+
+// Packet: 0x0a4b
+packetLen(0x0a4b, 22) // ZC_AIRSHIP_MAPMOVE
+
+// Packet: 0x0a4c
+packetLen(0x0a4c, 28) // ZC_AIRSHIP_SERVERMOVE
+
+// Packet: 0x0a4d
+packetLen(0x0a4d, -1)
+
+// Packet: 0x0a4e
+packetLen(0x0a4e, 6)
+
+// Packet: 0x0a4f
+packetLen(0x0a4f, -1)
+
+// Packet: 0x0a50
+packetLen(0x0a50, 4)
+
+// Packet: 0x0a51
+packetLen(0x0a51, 34) // ZC_CHECK_RECEIVE_CHARACTER_NAME
+
+// Packet: 0x0a52
+packetLen(0x0a52, 20)
+
+// Packet: 0x0a53
+packetLen(0x0a53, 10)
+
+// Packet: 0x0a54
+packetLen(0x0a54, -1)
+
+// Packet: 0x0a55
+packetLen(0x0a55, 2)
+
+// Packet: 0x0a56
+packetLen(0x0a56, 6)
+
+// Packet: 0x0a57
+packetLen(0x0a57, 6)
+
+// Packet: 0x0a58
+packetLen(0x0a58, 8)
+
+// Packet: 0x0a59
+packetLen(0x0a59, -1)
+
+// Packet: 0x0a5a
+packetLen(0x0a5a, 2)
+
+// Packet: 0x0a5b
+packetLen(0x0a5b, 7)
+
+// Packet: 0x0a5c
+packetLen(0x0a5c, 18)
+
+// Packet: 0x0a5d
+packetLen(0x0a5d, 6)
+
+// Packet: 0x0a68
+packetLen(0x0a68, 3) // CZ_REQ_OPEN_UI
+
+// Packet: 0x0a69
+packetLen(0x0a69, 6)
+
+// Packet: 0x0a6a
+packetLen(0x0a6a, 12)
+
+// Packet: 0x0a6b
+packetLen(0x0a6b, -1)
+
+// Packet: 0x0a6c
+packetLen(0x0a6c, 7)
+
+// Packet: 0x0a6d
+packetLen(0x0a6d, -1)
+
+// Packet: 0x0a6e
+packetLen(0x0a6e, -1) // CZ_REQ_SEND_RODEX
+
+// Packet: 0x0a6f
+packetLen(0x0a6f, -1) // ZC_FORMATSTRING_MSG_COLOR
+
+// Packet: 0x0a70
+packetLen(0x0a70, 2)
+
+// Packet: 0x0a71
+packetLen(0x0a71, -1)
+
+// Packet: 0x0a72
+packetLen(0x0a72, 61)
+
+// Packet: 0x0a73
+packetLen(0x0a73, 2)
+
+// Packet: 0x0a74
+packetLen(0x0a74, 8)
+
+// Packet: 0x0a76
+packetLen(0x0a76, 80)
+
+// Packet: 0x0a77
+packetLen(0x0a77, 15)
+
+// Packet: 0x0a78
+packetLen(0x0a78, 15)
+
+// Packet: 0x0a79
+packetLen(0x0a79, -1)
+
+// Packet: 0x0a7b
+packetLen(0x0a7b, -1)
+
+// Packet: 0x0a7c
+packetLen(0x0a7c, -1)
+
+// Packet: 0x0a7d
+packetLen(0x0a7d, -1) // ZC_ACK_RODEX_LIST
+
+// Packet: 0x0a7e
+packetLen(0x0a7e, -1) // ZC_OFFLINE_STORE_OWNER_ITEMS_READY
+
+// Packet: 0x0a7f
+packetLen(0x0a7f, -1) // CZ_OFFLINE_STORE_CREATE
+
+// Packet: 0x0a80
+packetLen(0x0a80, 6)
+
+// Packet: 0x0a81
+packetLen(0x0a81, 4)
+
+// Packet: 0x0a82
+packetLen(0x0a82, 46)
+
+// Packet: 0x0a83
+packetLen(0x0a83, 46)
+
+// Packet: 0x0a84
+packetLen(0x0a84, 94) // ZC_GUILD_INFO
+
+// Packet: 0x0a85
+packetLen(0x0a85, 82)
+
+// Packet: 0x0a86
+packetLen(0x0a86, -1)
+
+// Packet: 0x0a87
+packetLen(0x0a87, -1)
+
+// Packet: 0x0a88
+packetLen(0x0a88, 2)
+
+// Packet: 0x0a89
+packetLen(0x0a89, 61) // ZC_NOTIFY_OFFLINE_STORE
+
+// Packet: 0x0a8a
+packetLen(0x0a8a, 6) // ZC_OFFLINE_STORE_VANISH
+
+// Packet: 0x0a8b
+packetLen(0x0a8b, 2)
+
+// Packet: 0x0a8c
+packetLen(0x0a8c, 2)
+
+// Packet: 0x0a8d
+packetLen(0x0a8d, -1) // ZC_OFFLINE_STORE_OWNER_ITEMS
+
+// Packet: 0x0a8e
+packetLen(0x0a8e, 2)
+
+// Packet: 0x0a8f
+packetLen(0x0a8f, 2)
+
+// Packet: 0x0a90
+packetLen(0x0a90, 3)
+
+// Packet: 0x0a91
+packetLen(0x0a91, -1) // ZC_OFFLINE_STORE_ITEMS
+
+// Packet: 0x0a92
+packetLen(0x0a92, -1)
+
+// Packet: 0x0a93
+packetLen(0x0a93, 3)
+
+// Packet: 0x0a94
+packetLen(0x0a94, 2)
+
+// Packet: 0x0a95
+packetLen(0x0a95, 4)
+
+// Packet: 0x0a96
+packetLen(0x0a96, 61) // ZC_ADD_EXCHANGE_ITEM4
+
+// Packet: 0x0a97
+packetLen(0x0a97, 8) // CZ_ALT_EQUIPMENT_ADD
+
+// Packet: 0x0a98
+packetLen(0x0a98, 10) // ZC_ALT_EQUIPMENT_EQUIP
+
+// Packet: 0x0a99
+packetLen(0x0a99, 4) // CZ_ALT_EQUIPMENT_REMOVE
+
+// Packet: 0x0a9a
+packetLen(0x0a9a, 10) // ZC_ALT_EQUIPMENT_REMOVE
+
+// Packet: 0x0a9b
+packetLen(0x0a9b, -1) // ZC_ALT_EQUIPMENT_ITEMS
+
+// Packet: 0x0a9c
+packetLen(0x0a9c, 2) // CZ_ALT_EQUIPMENT_SWITCH
+
+// Packet: 0x0a9d
+packetLen(0x0a9d, 4) // ZC_ALT_EQUIPMENT_SWITCH_ACK
+
+// Packet: 0x0a9e
+packetLen(0x0a9e, 2)
+
+// Packet: 0x0a9f
+packetLen(0x0a9f, 2)
+
+// Packet: 0x0aa0
+packetLen(0x0aa0, 2) // ZC_REFINE_OPEN_WINDOW
+
+// Packet: 0x0aa1
+packetLen(0x0aa1, 4) // CZ_REFINE_ADD_ITEM
+
+// Packet: 0x0aa2
+packetLen(0x0aa2, -1) // ZC_REFINE_ADD_ITEM
+
+// Packet: 0x0aa3
+packetLen(0x0aa3, 9) // CZ_REFINE_ITEM_REQUEST
+
+// Packet: 0x0aa4
+packetLen(0x0aa4, 2) // CZ_REFINE_WINDOW_CLOSE
+
+// Packet: 0x0aa5
+packetLen(0x0aa5, -1) // ZC_MEMBERMGR_INFO
+
+// Packet: 0x0aa6
+packetLen(0x0aa6, 36) // ZC_MEMBER_ADD
+
+// Packet: 0x0aa7
+packetLen(0x0aa7, 6) // ZC_INVENTORY_MOVE_FAILED
+
+// Packet: 0x0aa8
+packetLen(0x0aa8, 5)
+
+// Packet: 0x0aa9
+packetLen(0x0aa9, -1)
+
+// Packet: 0x0aaa
+packetLen(0x0aaa, -1)
+
+// Packet: 0x0aab
+packetLen(0x0aab, -1)
+
+// Packet: 0x0aac
+packetLen(0x0aac, 69)
+
+// Packet: 0x0aad
+packetLen(0x0aad, 51)
+
+// Packet: 0x0aae
+packetLen(0x0aae, 2)
+
+// Packet: 0x0aaf
+packetLen(0x0aaf, 6)
+
+// Packet: 0x0ab0
+packetLen(0x0ab0, 6)
+
+// Packet: 0x0ab1
+packetLen(0x0ab1, 14)
+
+// Packet: 0x0ab2
+packetLen(0x0ab2, 7) // ZC_GROUP_ISALIVE
+
+// Packet: 0x0ab3
+packetLen(0x0ab3, 19)
+
+// Packet: 0x0ab4
+packetLen(0x0ab4, 6)
+
+// Packet: 0x0ab5
+packetLen(0x0ab5, 2)
+
+// Packet: 0x0ab6
+packetLen(0x0ab6, 8)
+
+// Packet: 0x0ab7
+packetLen(0x0ab7, 4)
+
+// Packet: 0x0ab8
+packetLen(0x0ab8, 2)
+
+// Packet: 0x0ab9
+packetLen(0x0ab9, 47) // ZC_ITEM_PREVIEW
+
+// Packet: 0x0aba
+packetLen(0x0aba, 2)
+
+// Packet: 0x0abb
+packetLen(0x0abb, 2)
+
+// Packet: 0x0abc
+packetLen(0x0abc, -1)
+
+// Packet: 0x0abd
+packetLen(0x0abd, 10) // ZC_PARTY_MEMBER_JOB_LEVEL
+
+// Packet: 0x0abe
+packetLen(0x0abe, -1) // ZC_WARPLIST
+
+// Packet: 0x0abf
+packetLen(0x0abf, -1)
+
+// Packet: 0x0ac0
+packetLen(0x0ac0, 26) // CZ_OPEN_RODEXBOX
+
+// Packet: 0x0ac1
+packetLen(0x0ac1, 26) // CZ_REQ_REFRESH_RODEX
+
+// Packet: 0x0ac2
+packetLen(0x0ac2, -1) // ZC_ACK_RODEX_LIST
+
+// Packet: 0x0ac3
+packetLen(0x0ac3, 2)
+
+// Packet: 0x0ac4
+packetLen(0x0ac4, -1) // AC_ACCEPT_LOGIN
+
+// Packet: 0x0ac5
+packetLen(0x0ac5, 156) // HC_NOTIFY_ZONESVR
+
+// Packet: 0x0ac6
+packetLen(0x0ac6, 156)
+
+// Packet: 0x0ac7
+packetLen(0x0ac7, 156) // ZC_NPCACK_SERVERMOVE
+
+// Packet: 0x0ac8
+packetLen(0x0ac8, 2) // ZC_UNKNOWN_CLEAN_ITEMS_LISTS
+
+// Packet: 0x0ac9
+packetLen(0x0ac9, -1)
+
+// Packet: 0x0aca
+packetLen(0x0aca, 3)
+
+// Packet: 0x0acb
+packetLen(0x0acb, 12) // ZC_PAR_CHANGE
+
+// Packet: 0x0acc
+packetLen(0x0acc, 18) // ZC_NOTIFY_EXP
+
+// Packet: 0x0acd
+packetLen(0x0acd, 23)
+
+// Packet: 0x0ace
+packetLen(0x0ace, 4)
+
+// Packet: 0x0acf
+packetLen(0x0acf, 68) // CA_LOGIN_OTP
+
+// Packet: 0x0ad0
+packetLen(0x0ad0, 11) // CA_OTP_CODE
+
+// Packet: 0x0ad1
+packetLen(0x0ad1, -1)
+
+// Packet: 0x0ad2
+packetLen(0x0ad2, 30)
+
+// Packet: 0x0ad3
+packetLen(0x0ad3, -1)
+
+// Packet: 0x0ad4
+packetLen(0x0ad4, -1)
+
+// Packet: 0x0ad5
+packetLen(0x0ad5, 2)
+
+// Packet: 0x0ad6
+packetLen(0x0ad6, 2)
+
+// Packet: 0x0ad7
+packetLen(0x0ad7, 8)
+
+// Packet: 0x0ad8
+packetLen(0x0ad8, 8)
+
+// Packet: 0x0ad9
+packetLen(0x0ad9, -1)
+
+// Packet: 0x0ada
+packetLen(0x0ada, 32) // ZC_REFINE_STATUS
+
+// Packet: 0x0adb
+packetLen(0x0adb, -1)
+
+// Packet: 0x0adc
+packetLen(0x0adc, 6) // ZC_EQUIPWIN_OTHER
+
+// Packet: 0x0add
+packetLen(0x0add, 24) // ZC_ITEM_FALL_ENTRY
+
+// Packet: 0x0ade
+packetLen(0x0ade, 6) // ZC_OVERWEIGHT_PERCENT
+
+// Packet: 0x0adf
+packetLen(0x0adf, 58) // ZC_ACK_REQNAME
+
+// Packet: 0x0ae0
+packetLen(0x0ae0, 30)
+
+// Packet: 0x0ae1
+packetLen(0x0ae1, 28)
+
+// Packet: 0x0ae2
+packetLen(0x0ae2, 7) // ZC_OPEN_UI
+
+// Packet: 0x0ae3
+packetLen(0x0ae3, -1) // AC_LOGIN_OTP
+
+// Packet: 0x0ae4
+packetLen(0x0ae4, 89) // ZC_ADD_MEMBER_TO_GROUP
+
+// Packet: 0x0ae5
+packetLen(0x0ae5, -1) // ZC_GROUP_LIST
+
+// Packet: 0x0ae6
+packetLen(0x0ae6, 10)
+
+// Packet: 0x0ae7
+packetLen(0x0ae7, 38)
+
+// Packet: 0x0ae8
+packetLen(0x0ae8, 2)
+
+// Packet: 0x0ae9
+packetLen(0x0ae9, 13) // HC_SECOND_PASSWD_LOGIN
+
+// Packet: 0x0aec
+packetLen(0x0aec, 2)
+
+// Packet: 0x0aed
+packetLen(0x0aed, 2)
+
+// Packet: 0x0aee
+packetLen(0x0aee, 2)
+
+// Packet: 0x0aef
+packetLen(0x0aef, 2) // CZ_ATTENDANCE_REWARD_REQUEST
+
+// Packet: 0x0af0
+packetLen(0x0af0, 10) // ZC_UI_ACTION
+
+// Packet: 0x0af2
+packetLen(0x0af2, 40)
+
+// Packet: 0x0af3
+packetLen(0x0af3, -1)
+
+// Packet: 0x0af4
+packetLen(0x0af4, 11) // CZ_USE_SKILL_TOGROUND
+
+// Packet: 0x0af5
+packetLen(0x0af5, 3)
+
+// Packet: 0x0af6
+packetLen(0x0af6, 88)
+
+// Packet: 0x0af7
+packetLen(0x0af7, 32) // ZC_ACK_REQNAME_BYGID
+
+// Packet: 0x0af8
+packetLen(0x0af8, 11)
+
+// Packet: 0x0af9
+packetLen(0x0af9, 6)
+
+// Packet: 0x0afa
+packetLen(0x0afa, 54)
+
+// Packet: 0x0afb
+packetLen(0x0afb, -1) // ZC_AUTOSPELLLIST
+
+// Packet: 0x0afc
+packetLen(0x0afc, 16)
+
+// Packet: 0x0afd
+packetLen(0x0afd, -1) // ZC_GUILD_POSITION
+
+// Packet: 0x0afe
+packetLen(0x0afe, -1) // ZC_UPDATE_MISSION_HUNT_EX
+
+// Packet: 0x0aff
+packetLen(0x0aff, -1) // ZC_ALL_QUEST_LIST4
+
+// Packet: 0x0b00
+packetLen(0x0b00, 8)
+
+// Packet: 0x0b01
+packetLen(0x0b01, 56)
+
+// Packet: 0x0b02
+packetLen(0x0b02, 26) // AC_REFUSE_LOGIN4
+
+// Packet: 0x0b03
+packetLen(0x0b03, -1) // ZC_EQUIPWIN_MICROSCOPE_V7
+
+// Packet: 0x0b04
+packetLen(0x0b04, 80)
+
+// Packet: 0x0b05
+packetLen(0x0b05, 63) // ZC_OFFLINE_STORE_VISIBLE
+
+// Packet: 0x0b07
+packetLen(0x0b07, -1)
+
+// Packet: 0x0b08
+packetLen(0x0b08, -1) // ZC_INVENTORY_START
+
+// Packet: 0x0b09
+packetLen(0x0b09, -1) // ZC_STORE_ITEMLIST_NORMAL_V6
+
+// Packet: 0x0b0a
+packetLen(0x0b0a, -1) // ZC_STORE_ITEMLIST_EQUIP_V6
+
+// Packet: 0x0b0b
+packetLen(0x0b0b, 4) // ZC_INVENTORY_END
+
+// Packet: 0x0b0c
+packetLen(0x0b0c, 155) // ZC_ADD_QUEST_EX
+
+// Packet: 0x0b0d
+packetLen(0x0b0d, 10) // ZC_REMOVE_EFFECT
+
+// Packet: 0x0b0e
+packetLen(0x0b0e, -1) // ZC_NPC_BARTER_OPEN
+
+// Packet: 0x0b0f
+packetLen(0x0b0f, -1) // CZ_NPC_BARTER_PURCHASE
+
+// Packet: 0x0b10
+packetLen(0x0b10, 10) // CZ_START_USE_SKILL
+
+// Packet: 0x0b11
+packetLen(0x0b11, 4) // CZ_STOP_USE_SKILL
+
+// Packet: 0x0b12
+packetLen(0x0b12, 2) // CZ_NPC_BARTER_CLOSE
+
+// Packet: 0x0b13
+packetLen(0x0b13, 48) // ZC_ITEM_PREVIEW
+
+// Packet: 0x0b14
+packetLen(0x0b14, 2) // CZ_INVENTORY_EXPAND
+
+// Packet: 0x0b15
+packetLen(0x0b15, 7) // ZC_ACK_INVENTORY_EXPAND
+
+// Packet: 0x0b16
+packetLen(0x0b16, 2) // CZ_INVENTORY_EXPAND_CONFIRMED
+
+// Packet: 0x0b17
+packetLen(0x0b17, 3) // ZC_ACK_INVENTORY_EXPAND_RESULT
+
+// Packet: 0x0b18
+packetLen(0x0b18, 4) // ZC_INVENTORY_EXPANSION_INFO
+
+// Packet: 0x0b19
+packetLen(0x0b19, 2) // CZ_INVENTORY_EXPAND_REJECTED
+
+// Packet: 0x0b1a
+packetLen(0x0b1a, 29)
+
+// Packet: 0x0b1b
+#if PACKETVER >= 20190130
+packetLen(0x0b1b, 2)
+#endif
+
+
+#endif /* COMMON_PACKETS2019_LEN_ZERO_H */
diff --git a/src/common/packets/packets_len_ad.h b/src/common/packets/packets_len_ad.h
index 98f842dde..adfe65a76 100644
--- a/src/common/packets/packets_len_ad.h
+++ b/src/common/packets/packets_len_ad.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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_main.h b/src/common/packets/packets_len_main.h
index b35715ca6..49711994d 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 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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,9 @@
/* This file is autogenerated, please do not commit manual changes */
-#if PACKETVER >= 20180000
+#if PACKETVER >= 20190000
+#include "common/packets/packets2019_len_main.h"
+#elif PACKETVER >= 20180000
#include "common/packets/packets2018_len_main.h"
#elif PACKETVER >= 20170000
#include "common/packets/packets2017_len_main.h"
diff --git a/src/common/packets/packets_len_re.h b/src/common/packets/packets_len_re.h
index 86702ae7d..506a1ef80 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 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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,9 @@
/* This file is autogenerated, please do not commit manual changes */
-#if PACKETVER >= 20180000
+#if PACKETVER >= 20190000
+#include "common/packets/packets2019_len_re.h"
+#elif PACKETVER >= 20180000
#include "common/packets/packets2018_len_re.h"
#elif PACKETVER >= 20170000
#include "common/packets/packets2017_len_re.h"
diff --git a/src/common/packets/packets_len_sak.h b/src/common/packets/packets_len_sak.h
index f39f8ba5d..e359ae1d2 100644
--- a/src/common/packets/packets_len_sak.h
+++ b/src/common/packets/packets_len_sak.h
@@ -2,8 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2019 Hercules Dev Team
+ * Copyright (C) 2019 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 e0c63663e..10295cac2 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 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2018-2019 Hercules Dev Team
+ * Copyright (C) 2018-2019 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,9 @@
/* This file is autogenerated, please do not commit manual changes */
-#if PACKETVER >= 20180000
+#if PACKETVER >= 20190000
+#include "common/packets/packets2019_len_zero.h"
+#elif PACKETVER >= 20180000
#include "common/packets/packets2018_len_zero.h"
#elif PACKETVER >= 20170000
#include "common/packets/packets2017_len_zero.h"
diff --git a/src/login/login.c b/src/login/login.c
index 4c40677fa..580f79ebb 100644
--- a/src/login/login.c
+++ b/src/login/login.c
@@ -1441,13 +1441,16 @@ static void login_parse_request_connection(int fd, struct login_session_data* sd
loginlog->log(sockt->session[fd]->client_addr, sd->userid, 100, message);
result = login->mmo_auth(sd, true);
- if (core->runflag == LOGINSERVER_ST_RUNNING &&
+
+ if (!sockt->allowed_ip_check(ipl)) {
+ ShowNotice("Connection of the char-server '%s' REFUSED (IP not allowed).\n", server_name);
+ login->char_server_connection_status(fd, sd, 2);
+ } else if (core->runflag == LOGINSERVER_ST_RUNNING &&
result == -1 &&
sd->sex == 'S' &&
sd->account_id >= 0 &&
sd->account_id < ARRAYLENGTH(login->dbs->server) &&
- !sockt->session_is_valid(login->dbs->server[sd->account_id].fd) &&
- sockt->allowed_ip_check(ipl))
+ !sockt->session_is_valid(login->dbs->server[sd->account_id].fd))
{
ShowStatus("Connection of the char-server '%s' accepted.\n", server_name);
safestrncpy(login->dbs->server[sd->account_id].name, server_name, sizeof(login->dbs->server[sd->account_id].name));
@@ -1465,11 +1468,9 @@ static void login_parse_request_connection(int fd, struct login_session_data* sd
// send connection success
login->char_server_connection_status(fd, sd, 0);
- }
- else
- {
+ } else {
ShowNotice("Connection of the char-server '%s' REFUSED.\n", server_name);
- login->char_server_connection_status(fd, sd, 3);
+ login->char_server_connection_status(fd, sd, 1);
}
}
diff --git a/src/map/atcommand.c b/src/map/atcommand.c
index 0a1fd6da3..87be6ab1b 100644
--- a/src/map/atcommand.c
+++ b/src/map/atcommand.c
@@ -2718,7 +2718,7 @@ ACMD(makeegg)
sd->catch_target_class = pet->db[pet_id].class_;
intif->create_pet(
sd->status.account_id, sd->status.char_id,
- (short)pet->db[pet_id].class_, (short)mob->db(pet->db[pet_id].class_)->lv,
+ 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 {
diff --git a/src/map/battle.c b/src/map/battle.c
index f51240810..1b7bf909e 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -1019,7 +1019,7 @@ static int64 battle_calc_cardfix(int attack_type, struct block_list *src, struct
{
struct map_session_data *sd, *tsd;
int cardfix = 1000;
- short t_class, s_class, s_race2, t_race2;
+ int t_class, s_class, s_race2, t_race2;
struct status_data *sstatus, *tstatus;
int i;
@@ -5552,7 +5552,7 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl
#endif
if( flag.infdef ) { //Plants receive 1 damage when hit
- short class_ = status->get_class(target);
+ int class_ = status->get_class(target);
if( flag.hit || wd.damage > 0 )
wd.damage = wd.div_; // In some cases, right hand no need to have a weapon to increase damage
if( flag.lh && (flag.hit || wd.damage2 > 0) )
@@ -7413,6 +7413,7 @@ static const struct battle_data {
{ "min_item_buy_price", &battle_config.min_item_buy_price, 1, 0, INT_MAX, },
{ "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, },
};
static bool battle_set_value_sub(int index, int value)
diff --git a/src/map/battle.h b/src/map/battle.h
index d2fd92450..c797e665a 100644
--- a/src/map/battle.h
+++ b/src/map/battle.h
@@ -576,6 +576,8 @@ struct Battle_Config {
int min_item_sell_price;
int display_fake_hp_when_dead;
+
+ int magicrod_type;
};
/* criteria for battle_config.idletime_critera */
diff --git a/src/map/clif.c b/src/map/clif.c
index 28b953de5..86b130e88 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -3079,7 +3079,7 @@ static void clif_cartItems(struct map_session_data *sd, enum inventory_type type
static void clif_inventoryExpansionInfo(struct map_session_data *sd)
{
-#if PACKETVER_ZERO_NUM >= 20181212
+#if PACKETVER_MAIN_NUM >= 20181219 || PACKETVER_RE_NUM >= 20181219 || PACKETVER_ZERO_NUM >= 20181212
nullpo_retv(sd);
const int fd = sd->fd;
@@ -3093,7 +3093,7 @@ static void clif_inventoryExpansionInfo(struct map_session_data *sd)
static void clif_inventoryExpandAck(struct map_session_data *sd, enum expand_inventory result, int itemId)
{
-#if PACKETVER_ZERO_NUM >= 20181212
+#if PACKETVER_MAIN_NUM >= 20181219 || PACKETVER_RE_NUM >= 20181219 || PACKETVER_ZERO_NUM >= 20181212
nullpo_retv(sd);
const int fd = sd->fd;
@@ -3108,7 +3108,7 @@ static void clif_inventoryExpandAck(struct map_session_data *sd, enum expand_inv
static void clif_inventoryExpandResult(struct map_session_data *sd, enum expand_inventory_result result)
{
-#if PACKETVER_ZERO_NUM >= 20181212
+#if PACKETVER_MAIN_NUM >= 20181219 || PACKETVER_RE_NUM >= 20181219 || PACKETVER_ZERO_NUM >= 20181212
nullpo_retv(sd);
const int fd = sd->fd;
@@ -5417,32 +5417,31 @@ static void clif_skillinfo(struct map_session_data *sd, int skill_id, int inf)
/// 1 = no text
static void clif_useskill(struct block_list *bl, int src_id, int dst_id, int dst_x, int dst_y, uint16 skill_id, uint16 skill_lv, int casttime)
{
-#if PACKETVER < 20091124
- const int cmd = 0x13e;
-#else
- const int cmd = 0x7fb;
-#endif
- unsigned char buf[32];
- int property = skill->get_ele(skill_id, skill_lv);
+ nullpo_retv(bl);
- WBUFW(buf,0) = cmd;
- WBUFL(buf,2) = src_id;
- WBUFL(buf,6) = dst_id;
- WBUFW(buf,10) = dst_x;
- WBUFW(buf,12) = dst_y;
- WBUFW(buf,14) = skill_id;
- WBUFL(buf,16) = property<0?0:property; //Avoid sending negatives as element [Skotlex]
- WBUFL(buf,20) = casttime;
-#if PACKETVER >= 20091124
- WBUFB(buf,24) = 0; // isDisposable
+ const int element = skill->get_ele(skill_id, skill_lv);
+ struct PACKET_ZC_USESKILL_ACK p;
+ p.packetType = HEADER_ZC_USESKILL_ACK;
+ p.srcId = src_id;
+ p.dstId = dst_id;
+ p.x = dst_x;
+ p.y = dst_y;
+ p.skillId = skill_id;
+ p.element = element < 0 ? 0 : element; //Avoid sending negatives as element [Skotlex]
+ p.delayTime = casttime;
+#if PACKETVER_MAIN_NUM >= 20091124 || PACKETVER_RE_NUM >= 20091124 || defined(PACKETVER_ZERO)
+ p.disposable = 0;
+#endif
+#if PACKETVER_ZERO_NUM >= 20190130
+ p.unknown = 0;
#endif
if (clif->isdisguised(bl)) {
- clif->send(buf,packet_len(cmd), bl, AREA_WOS);
- WBUFL(buf,2) = -src_id;
- clif->send(buf,packet_len(cmd), bl, SELF);
+ clif->send(&p, sizeof(p), bl, AREA_WOS);
+ p.srcId = -src_id;
+ clif->send(&p, sizeof(p), bl, SELF);
} else {
- clif->send(buf,packet_len(cmd), bl, AREA);
+ clif->send(&p, sizeof(p), bl, AREA);
}
#if PACKETVER >= 20151223
if ((skill->get_inf2(skill_id) & INF2_SHOW_SKILL_SCALE) != 0)
@@ -5783,7 +5782,7 @@ static void clif_skill_warppoint(struct map_session_data *sd, uint16 skill_id, u
nullpo_retv(sd);
fd = sd->fd;
#if PACKETVER_MAIN_NUM >= 20170502 || PACKETVER_RE_NUM >= 20170419 || defined(PACKETVER_ZERO)
- len = sizeof(struct PACKET_ZC_WARPLIST) + sizeof(struct PACKET_ZC_WARPLIST_sub) * mapsCount;
+ len = sizeof(struct PACKET_ZC_WARPLIST) + sizeof(struct PACKET_ZC_WARPLIST_sub) * 6;
#else
len = sizeof(struct PACKET_ZC_WARPLIST);
#endif
@@ -11578,6 +11577,10 @@ static void clif_parse_NpcBuySellSelected(int fd, struct map_session_data *sd)
/// 3 = "Out of the maximum capacity, you have too many items."
/// 9 = "Amounts are exceeded the possession of the item is not available for purchase."
/// 10 = "Props open-air store sales will be traded in RODEX"
+/// 11 = "The exchange failed."
+/// 12 = "The exchange was well done."
+/// 13 = "The item is already sold and out of stock."
+/// 14 = "There is not enough goods to exchange."
static void clif_npc_buy_result(struct map_session_data *sd, unsigned char result)
{
int fd;
@@ -14513,7 +14516,7 @@ static void clif_parse_pet_evolution(int fd, struct map_session_data *sd)
intif->create_pet(
sd->status.account_id, sd->status.char_id,
- (short)pet->db[pet_id].class_, (short)mob->db(pet->db[pet_id].class_)->lv,
+ 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);
clif->petEvolutionResult(fd, PET_EVOL_SUCCESS);
@@ -19904,7 +19907,7 @@ static void clif_npc_market_open(struct map_session_data *sd, struct npc_data *n
packet->list[c].price = shop[i].value;
packet->list[c].qty = shop[i].qty;
packet->list[c].type = itemtype(id->type);
- packet->list[c].weight = id->weight;
+ packet->list[c].weight = id->weight * 10;
c++;
}
}
@@ -19921,6 +19924,12 @@ static void clif_parse_NPCMarketClosed(int fd, struct map_session_data *sd)
sd->npc_shopid = 0;
}
+static void clif_parse_NPCBarterClosed(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_NPCBarterClosed(int fd, struct map_session_data *sd)
+{
+ sd->npc_shopid = 0;
+}
+
static void clif_npc_market_purchase_ack(struct map_session_data *sd, const struct itemlist *item_list, unsigned char response)
{
#if PACKETVER >= 20131223
@@ -21062,7 +21071,7 @@ static void clif_parse_rodex_checkname(int fd, struct map_session_data *sd)
{
const struct PACKET_CZ_CHECKNAME *rPacket = RFIFOP(fd, 0);
int char_id = 0, base_level = 0;
- short class = 0;
+ int class = 0;
char name[NAME_LENGTH];
safestrncpy(name, rPacket->Name, NAME_LENGTH);
@@ -21070,7 +21079,7 @@ static void clif_parse_rodex_checkname(int fd, struct map_session_data *sd)
rodex->check_player(sd, name, &base_level, &char_id, &class);
}
-static void clif_rodex_checkname_result(struct map_session_data *sd, int char_id, short class_, int base_level, const char *name)
+static void clif_rodex_checkname_result(struct map_session_data *sd, int char_id, int class_, int base_level, const char *name)
{
#if PACKETVER >= 20140521
struct PACKET_ZC_CHECKNAME *sPacket;
@@ -22215,6 +22224,79 @@ static bool clif_enchant_equipment(struct map_session_data *sd, enum equip_pos p
#endif
}
+static void clif_npc_barter_open(struct map_session_data *sd, struct npc_data *nd)
+{
+#if PACKETVER_MAIN_NUM >= 20190116 || PACKETVER_RE_NUM >= 20190116 || PACKETVER_ZERO_NUM >= 20181226
+ nullpo_retv(sd);
+ nullpo_retv(nd);
+ struct npc_item_list *shop = nd->u.scr.shop->item;
+ const int shop_size = nd->u.scr.shop->items;
+
+ int c = 0;
+ int maxCount = (sizeof(packet_buf) - sizeof(struct PACKET_ZC_NPC_BARTER_OPEN)) / sizeof(struct PACKET_ZC_NPC_BARTER_OPEN_sub);
+ struct PACKET_ZC_NPC_BARTER_OPEN *packet = (struct PACKET_ZC_NPC_BARTER_OPEN*)&packet_buf[0];
+ packet->packetType = HEADER_ZC_NPC_BARTER_OPEN;
+
+ for (int i = 0; i < shop_size && c < maxCount; i++) {
+ if (shop[i].nameid) {
+ struct item_data *id = itemdb->exists(shop[i].nameid);
+ if (id == NULL)
+ continue;
+
+ packet->list[c].nameid = shop[i].nameid;
+ packet->list[c].type = itemtype(id->type);
+ packet->list[c].amount = shop[i].qty;
+ packet->list[c].currencyNameid = shop[i].value;
+ packet->list[c].currencyAmount = shop[i].value2;
+ packet->list[c].weight = id->weight * 10;
+ packet->list[c].index = i;
+ c++;
+ }
+ }
+
+ packet->packetLength = sizeof(struct PACKET_ZC_NPC_BARTER_OPEN) + sizeof(struct PACKET_ZC_NPC_BARTER_OPEN_sub) * c;
+ clif->send(packet, packet->packetLength, &sd->bl, SELF);
+#endif
+}
+
+static void clif_parse_NPCBarterPurchase(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_NPCBarterPurchase(int fd, struct map_session_data *sd)
+{
+#if PACKETVER_MAIN_NUM >= 20190116 || PACKETVER_RE_NUM >= 20190116 || PACKETVER_ZERO_NUM >= 20181226
+ const struct PACKET_CZ_NPC_BARTER_PURCHASE *p = RP2PTR(fd);
+ int count = (p->packetLength - sizeof(struct PACKET_CZ_NPC_BARTER_PURCHASE)) / sizeof p->list[0];
+ struct barteritemlist item_list;
+
+ Assert_retv(count >= 0 && count <= sd->status.inventorySize);
+
+ VECTOR_INIT(item_list);
+ VECTOR_ENSURE(item_list, count, 1);
+
+ for (int i = 0; i < count; i++) {
+ struct barter_itemlist_entry entry = { 0 };
+ entry.addId = p->list[i].itemId;
+ entry.addAmount = p->list[i].amount;
+ entry.removeIndex = p->list[i].invIndex - 2;
+ entry.shopIndex = p->list[i].shopIndex;
+
+ VECTOR_PUSH(item_list, entry);
+ }
+
+ int response = npc->barter_buylist(sd, &item_list);
+ clif->npc_buy_result(sd, response);
+
+ VECTOR_CLEAR(item_list);
+#endif
+}
+
+static void clif_parse_clientVersion(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_clientVersion(int fd, struct map_session_data *sd)
+{
+#if PACKETVER_MAIN_NUM >= 20090406 || PACKETVER_RE_NUM >= 20090408 || PACKETVER_SAK_NUM >= 20090408 || defined(PACKETVER_ZERO)
+ // TODO: show or store client version
+#endif
+}
+
/*==========================================
* Main client packet processing function
*------------------------------------------*/
@@ -23400,4 +23482,9 @@ void clif_defaults(void)
clif->pMemorialDungeonCommand = clif_parse_memorial_dungeon_command;
clif->pReqRemainTime = clif_parse_reqRemainTime;
+
+ clif->npc_barter_open = clif_npc_barter_open;
+ clif->pNPCBarterClosed = clif_parse_NPCBarterClosed;
+ clif->pNPCBarterPurchase = clif_parse_NPCBarterPurchase;
+ clif->pClientVersion = clif_parse_clientVersion;
}
diff --git a/src/map/clif.h b/src/map/clif.h
index 91a91b5d3..a7573b56e 100644
--- a/src/map/clif.h
+++ b/src/map/clif.h
@@ -665,6 +665,15 @@ struct stylist_data_entry {
};
VECTOR_DECL(struct stylist_data_entry) stylist_data[MAX_STYLIST_TYPE];
+struct barter_itemlist_entry {
+ int addId;
+ int addAmount;
+ int removeIndex;
+ int shopIndex;
+};
+
+VECTOR_STRUCT_DECL(barteritemlist, struct barter_itemlist_entry);
+
/**
* Stylist Shop Responds
**/
@@ -1534,7 +1543,7 @@ struct clif_interface {
void (*pRodexCancelWriteMail) (int fd, struct map_session_data *sd);
void (*pRodexOpenMailbox) (int fd, struct map_session_data *sd);
void (*pRodexCheckName) (int fd, struct map_session_data *sd);
- void (*rodex_checkname_result) (struct map_session_data *sd, int char_id, short class_, int base_level, const char *name);
+ void (*rodex_checkname_result) (struct map_session_data *sd, int char_id, int class_, int base_level, const char *name);
void (*pRodexDeleteMail) (int fd, struct map_session_data *sd);
void (*rodex_delete_mail) (struct map_session_data *sd, int8 opentype, int64 mail_id);
void (*pRodexRefreshMaillist) (int fd, struct map_session_data *sd);
@@ -1587,6 +1596,10 @@ struct clif_interface {
void (*item_preview) (struct map_session_data *sd, int n);
bool (*enchant_equipment) (struct map_session_data *sd, enum equip_pos pos, int cardSlot, int cardId);
void (*pReqRemainTime) (int fd, struct map_session_data *sd);
+ void (*npc_barter_open) (struct map_session_data *sd, struct npc_data *nd);
+ void (*pNPCBarterClosed) (int fd, struct map_session_data *sd);
+ void (*pNPCBarterPurchase) (int fd, struct map_session_data *sd);
+ void (*pClientVersion) (int fd, struct map_session_data *sd);
};
#ifdef HERCULES_CORE
diff --git a/src/map/guild.c b/src/map/guild.c
index 17bf7fa6b..0517887d3 100644
--- a/src/map/guild.c
+++ b/src/map/guild.c
@@ -1018,7 +1018,7 @@ static int guild_send_memberinfoshort(struct map_session_data *sd, int online)
}
// cleaned up [LuzZza]
-static int guild_recv_memberinfoshort(int guild_id, int account_id, int char_id, int online, int lv, int16 class, uint32 last_login)
+static int guild_recv_memberinfoshort(int guild_id, int account_id, int char_id, int online, int lv, int class, uint32 last_login)
{
int i, alv, c, idx = INDEX_NOT_FOUND, om = 0, oldonline = -1;
struct guild *g = guild->search(guild_id);
diff --git a/src/map/guild.h b/src/map/guild.h
index 3df86a3ca..396cbda86 100644
--- a/src/map/guild.h
+++ b/src/map/guild.h
@@ -126,7 +126,7 @@ struct guild_interface {
int (*check_alliance) (int guild_id1, int guild_id2, int flag);
/* */
int (*send_memberinfoshort) (struct map_session_data *sd,int online);
- int (*recv_memberinfoshort) (int guild_id, int account_id, int char_id, int online, int lv, int16 class, uint32 last_login);
+ int (*recv_memberinfoshort) (int guild_id, int account_id, int char_id, int online, int lv, int class, uint32 last_login);
int (*change_memberposition) (int guild_id,int account_id,int char_id,short idx);
int (*memberposition_changed) (struct guild *g,int idx,int pos);
int (*change_position) (int guild_id,int idx,int mode,int exp_mode,const char *name);
diff --git a/src/map/homunculus.c b/src/map/homunculus.c
index 6df272243..aa3bb5360 100644
--- a/src/map/homunculus.c
+++ b/src/map/homunculus.c
@@ -411,7 +411,7 @@ static bool homunculus_levelup(struct homun_data *hd)
return true;
}
-static int homunculus_change_class(struct homun_data *hd, short class_)
+static int homunculus_change_class(struct homun_data *hd, int class_)
{
int i = homun->db_search(class_,HOMUNCULUS_CLASS);
nullpo_retr(0, hd);
diff --git a/src/map/homunculus.h b/src/map/homunculus.h
index f0a156fd7..745c7cd84 100644
--- a/src/map/homunculus.h
+++ b/src/map/homunculus.h
@@ -174,7 +174,7 @@ struct homunculus_interface {
int (*skill_tree_get_max) (int id, int b_class);
void (*skillup) (struct homun_data *hd, uint16 skill_id);
bool (*levelup) (struct homun_data *hd);
- int (*change_class) (struct homun_data *hd, short class_);
+ int (*change_class) (struct homun_data *hd, int class_);
bool (*evolve) (struct homun_data *hd);
bool (*mutate) (struct homun_data *hd, int homun_id);
int (*gainexp) (struct homun_data *hd, unsigned int exp);
diff --git a/src/map/intif.c b/src/map/intif.c
index ed4c0e2d2..8028d4474 100644
--- a/src/map/intif.c
+++ b/src/map/intif.c
@@ -71,26 +71,26 @@ static int CheckForCharServer(void)
}
// pet
-static int intif_create_pet(int account_id, int char_id, short pet_class, short pet_lv, int pet_egg_id,
+static int intif_create_pet(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, char *pet_name)
{
if (intif->CheckForCharServer())
return 0;
nullpo_ret(pet_name);
- WFIFOHEAD(inter_fd, 28 + NAME_LENGTH);
+ WFIFOHEAD(inter_fd, 32 + NAME_LENGTH);
WFIFOW(inter_fd, 0) = 0x3080;
WFIFOL(inter_fd, 2) = account_id;
WFIFOL(inter_fd, 6) = char_id;
- WFIFOW(inter_fd, 10) = pet_class;
- WFIFOW(inter_fd, 12) = pet_lv;
- WFIFOL(inter_fd, 14) = pet_egg_id;
- WFIFOL(inter_fd, 18) = pet_equip;
- WFIFOW(inter_fd, 22) = intimate;
- WFIFOW(inter_fd, 24) = hungry;
- WFIFOB(inter_fd, 26) = rename_flag;
- WFIFOB(inter_fd, 27) = incubate;
- memcpy(WFIFOP(inter_fd, 28), pet_name, NAME_LENGTH);
- WFIFOSET(inter_fd, 28 + NAME_LENGTH);
+ WFIFOL(inter_fd, 10) = pet_class;
+ WFIFOL(inter_fd, 14) = pet_lv;
+ WFIFOL(inter_fd, 18) = pet_egg_id;
+ WFIFOL(inter_fd, 22) = pet_equip;
+ WFIFOW(inter_fd, 26) = intimate;
+ WFIFOW(inter_fd, 28) = hungry;
+ WFIFOB(inter_fd, 30) = rename_flag;
+ WFIFOB(inter_fd, 31) = incubate;
+ memcpy(WFIFOP(inter_fd, 32), pet_name, NAME_LENGTH);
+ WFIFOSET(inter_fd, 32 + NAME_LENGTH);
return 0;
}
@@ -903,19 +903,19 @@ static int intif_guild_leave(int guild_id, int account_id, int char_id, int flag
}
//Update request / Lv online status of the guild members
-static int intif_guild_memberinfoshort(int guild_id, int account_id, int char_id, int online, int lv, int16 class)
+static int intif_guild_memberinfoshort(int guild_id, int account_id, int char_id, int online, int lv, int class)
{
if (intif->CheckForCharServer())
return 0;
- WFIFOHEAD(inter_fd, 19);
+ WFIFOHEAD(inter_fd, 23);
WFIFOW(inter_fd, 0) = 0x3035;
WFIFOL(inter_fd, 2) = guild_id;
WFIFOL(inter_fd, 6) = account_id;
WFIFOL(inter_fd,10) = char_id;
WFIFOB(inter_fd,14) = online;
- WFIFOW(inter_fd,15) = lv;
- WFIFOW(inter_fd,17) = class;
- WFIFOSET(inter_fd,19);
+ WFIFOL(inter_fd,15) = lv;
+ WFIFOL(inter_fd,19) = class;
+ WFIFOSET(inter_fd,23);
return 0;
}
@@ -1507,7 +1507,7 @@ static void intif_parse_GuildMemberWithdraw(int fd)
// ACK guild member basic info
static void intif_parse_GuildMemberInfoShort(int fd)
{
- guild->recv_memberinfoshort(RFIFOL(fd,2),RFIFOL(fd,6),RFIFOL(fd,10),RFIFOB(fd,14),RFIFOW(fd,15),RFIFOW(fd,17),RFIFOL(fd,19));
+ guild->recv_memberinfoshort(RFIFOL(fd,2),RFIFOL(fd,6),RFIFOL(fd,10),RFIFOB(fd,14),RFIFOW(fd,15),RFIFOL(fd,17),RFIFOL(fd,19));
}
// ACK guild break
@@ -1640,7 +1640,7 @@ static void intif_parse_GuildMasterChanged(int fd)
// Request pet creation
static void intif_parse_CreatePet(int fd)
{
- pet->get_egg(RFIFOL(fd,2), RFIFOW(fd,6), RFIFOL(fd,8));
+ pet->get_egg(RFIFOL(fd, 2), RFIFOL(fd, 6), RFIFOL(fd, 10));
}
// ACK pet data
@@ -2830,11 +2830,11 @@ static void intif_parse_RodexCheckName(int fd)
struct map_session_data *sd = NULL;
int reqchar_id = RFIFOL(fd, 2);
int target_char_id = RFIFOL(fd, 6);
- short target_class = RFIFOW(fd, 10);
- int target_level = RFIFOL(fd, 12);
+ int target_class = RFIFOL(fd, 10);
+ int target_level = RFIFOL(fd, 14);
char name[NAME_LENGTH];
- safestrncpy(name, RFIFOP(inter_fd, 16), NAME_LENGTH);
+ safestrncpy(name, RFIFOP(inter_fd, 18), NAME_LENGTH);
if (reqchar_id <= 0)
return;
@@ -2995,13 +2995,13 @@ void intif_defaults(void)
-1,-1,27,-1, -1,-1,37,-1, 7, 0, 0, 0, 0, 0, 0, 0, //0x3800-0x380f
-1, 0, 0, 0, 0, 0, 0, 0, -1,11, 0, 0, 0, 0, 0, 0, //0x3810 Achievements [Smokexyz/Hercules]
39,-1,15,15, 14,19, 7,-1, 0, 0, 0, 0, 0, 0, 0, 0, //0x3820
- 10,-1,15, 0, 79,23, 7,-1, 0,-1,-1,-1, 14,67,186,-1, //0x3830
+ 10,-1,15, 0, 79,25, 7,-1, 0,-1,-1,-1, 14,67,186,-1, //0x3830
-1, 0, 0,14, 0, 0, 0, 0, -1,74,-1,11, 11,-1, 0, 0, //0x3840
-1,-1, 7, 7, 7,11, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, //0x3850 Auctions [Zephyrus] itembound[Akinari] Clan System[Murilo BiO]
-1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //0x3860 Quests [Kevin] [Inkfish]
-1, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 3, 3, 0, //0x3870 Mercenaries [Zephyrus] / Elemental [pakpil]
- 12,-1, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //0x3880
- -1,-1, 7, 3, 0,-1, 7, 15,16 + NAME_LENGTH, 0, 0, 0, 0, 0, 0, 0, //0x3890 Homunculus [albator] / RoDEX [KirieZ]
+ 14,-1, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //0x3880
+ -1,-1, 7, 3, 0,-1, 7, 15,18 + NAME_LENGTH, 0, 0, 0, 0, 0, 0, 0, //0x3890 Homunculus [albator] / RoDEX [KirieZ]
};
intif = &intif_s;
diff --git a/src/map/intif.h b/src/map/intif.h
index 21f7a494c..425ab1d18 100644
--- a/src/map/intif.h
+++ b/src/map/intif.h
@@ -58,7 +58,7 @@ struct intif_interface {
int packet_len_table[INTIF_PACKET_LEN_TABLE_SIZE];
/* funcs */
int (*parse) (int fd);
- int (*create_pet)(int account_id, int char_id, short pet_type, short pet_lv, int pet_egg_id,
+ int (*create_pet)(int account_id, int char_id, int pet_type, int pet_lv, int pet_egg_id,
int pet_equip, short intimate, short hungry, char rename_flag, char incubate, char *pet_name);
int (*broadcast) (const char *mes, int len, int type);
int (*broadcast2) (const char *mes, int len, unsigned int fontColor, short fontType, short fontSize, short fontAlign, short fontY);
@@ -84,7 +84,7 @@ struct intif_interface {
int (*guild_request_info) (int guild_id);
int (*guild_addmember) (int guild_id, struct guild_member *m);
int (*guild_leave) (int guild_id, int account_id, int char_id, int flag, const char *mes);
- int (*guild_memberinfoshort) (int guild_id, int account_id, int char_id, int online, int lv, int16 class);
+ int (*guild_memberinfoshort) (int guild_id, int account_id, int char_id, int online, int lv, int class);
int (*guild_break) (int guild_id);
int (*guild_message) (int guild_id, int account_id, const char *mes, int len);
int (*guild_change_gm) (int guild_id, const char *name, int len);
diff --git a/src/map/itemdb.c b/src/map/itemdb.c
index 5e447d4c0..03f0fdc06 100644
--- a/src/map/itemdb.c
+++ b/src/map/itemdb.c
@@ -1700,7 +1700,12 @@ static int itemdb_validate_entry(struct item_data *entry, int n, const char *sou
nullpo_ret(entry);
nullpo_ret(source);
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
if (entry->nameid <= 0 || entry->nameid > MAX_ITEM_ID) {
+#else
+ if (entry->nameid <= 0) {
+#endif
+ // item id wrong for any packet versions
ShowWarning("itemdb_validate_entry: Invalid item ID %d in entry %d of '%s', allowed values 0 < ID < %d (MAX_ITEM_ID), skipping.\n",
entry->nameid, n, source, MAX_ITEM_ID);
if (entry->script) {
@@ -1716,7 +1721,14 @@ static int itemdb_validate_entry(struct item_data *entry, int n, const char *sou
entry->unequip_script = NULL;
}
return 0;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
}
+#else
+ } else if (entry->nameid > MAX_ITEM_ID) {
+ // item id too big for packet version before item id in 4 bytes
+ entry->view_id = UNKNOWN_ITEM_ID;
+ }
+#endif
{
const char *c = entry->name;
@@ -2434,6 +2446,8 @@ static void itemdb_read(bool minimal)
}
}
+ itemdb->other->foreach(itemdb->other, itemdb->addname_sub);
+
if (minimal)
return;
@@ -2448,6 +2462,23 @@ static void itemdb_read(bool minimal)
}
/**
+ * Add item name with high id into map
+ * @see DBApply
+ */
+static int itemdb_addname_sub(union DBKey key, struct DBData *data, va_list ap)
+{
+ struct item_data *item = DB->data2ptr(data);
+ struct DBData prev;
+
+ if (itemdb->names->put(itemdb->names, DB->str2key(item->name), DB->ptr2data(item), &prev)) {
+ struct item_data *oldItem = DB->data2ptr(&prev);
+ ShowError("itemdb_read: duplicate AegisName '%s' in item ID %d and %d\n", item->name, item->nameid, oldItem->nameid);
+ }
+
+ return 0;
+}
+
+/**
* retrieves item_combo data by combo id
**/
static struct item_combo *itemdb_id2combo(int id)
@@ -2789,4 +2820,5 @@ void itemdb_defaults(void)
itemdb->is_item_usable = itemdb_is_item_usable;
itemdb->lookup_const = itemdb_lookup_const;
itemdb->lookup_const_mask = itemdb_lookup_const_mask;
+ itemdb->addname_sub = itemdb_addname_sub;
}
diff --git a/src/map/itemdb.h b/src/map/itemdb.h
index 0c08efbeb..315787993 100644
--- a/src/map/itemdb.h
+++ b/src/map/itemdb.h
@@ -683,6 +683,7 @@ struct itemdb_interface {
bool (*is_item_usable) (struct item_data *item);
bool (*lookup_const) (const struct config_setting_t *it, const char *name, int *value);
bool (*lookup_const_mask) (const struct config_setting_t *it, const char *name, int *value);
+ int (*addname_sub) (union DBKey key, struct DBData *data, va_list ap);
};
#ifdef HERCULES_CORE
diff --git a/src/map/map.c b/src/map/map.c
index 93e86f80b..6212493c8 100644
--- a/src/map/map.c
+++ b/src/map/map.c
@@ -4479,6 +4479,7 @@ static bool inter_config_read_database_names(const char *filename, const struct
libconfig->setting_lookup_mutable_string(setting, "autotrade_merchants_db", map->autotrade_merchants_db, sizeof(map->autotrade_merchants_db));
libconfig->setting_lookup_mutable_string(setting, "autotrade_data_db", map->autotrade_data_db, sizeof(map->autotrade_data_db));
libconfig->setting_lookup_mutable_string(setting, "npc_market_data_db", map->npc_market_data_db, sizeof(map->npc_market_data_db));
+ libconfig->setting_lookup_mutable_string(setting, "npc_barter_data_db", map->npc_barter_data_db, sizeof(map->npc_barter_data_db));
if (!mapreg->config_read(filename, setting, imported))
retval = false;
@@ -6742,6 +6743,7 @@ int do_init(int argc, char *argv[])
npc->event_do_oninit( false ); // Init npcs (OnInit)
npc->market_fromsql(); /* after OnInit */
+ npc->barter_fromsql(); /* after OnInit */
if (battle_config.pk_mode)
ShowNotice("Server is running on '"CL_WHITE"PK Mode"CL_RESET"'.\n");
diff --git a/src/map/map.h b/src/map/map.h
index 4267c2c88..ace2a35a1 100644
--- a/src/map/map.h
+++ b/src/map/map.h
@@ -518,7 +518,7 @@ struct block_list {
// Mob List Held in memory for Dynamic Mobs [Wizputer]
// Expanded to specify all mob-related spawn data by [Skotlex]
struct spawn_data {
- short class_; ///< Class, used because a mob can change it's class
+ int class_; ///< Class, used because a mob can change it's class
unsigned short m, x, y; ///< Spawn information (map, point, spawn-area around point)
signed short xs, ys;
unsigned short num; ///< Number of mobs using this structure
@@ -800,7 +800,7 @@ struct questinfo {
unsigned short icon;
unsigned char color;
bool hasJob;
- unsigned short job;/* perhaps a mapid mask would be most flexible? */
+ unsigned int job;/* perhaps a mapid mask would be most flexible? */
bool sex_enabled;
int sex;
struct {
@@ -1167,6 +1167,7 @@ struct map_interface {
char autotrade_merchants_db[32];
char autotrade_data_db[32];
char npc_market_data_db[32];
+ char npc_barter_data_db[32];
char default_codepage[32];
char default_lang_str[64];
diff --git a/src/map/messages_ad.h b/src/map/messages_ad.h
index 4345e078a..e0a4e5c98 100644
--- a/src/map/messages_ad.h
+++ b/src/map/messages_ad.h
@@ -2,7 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2018 Hercules Dev Team
+ * Copyright (C) 2013-2019 Hercules Dev Team
+ * Copyright (C) 2018-2019 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/map/messages_main.h b/src/map/messages_main.h
index bb01d24cb..1ce77451e 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-2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2013-2019 Hercules Dev Team
+ * Copyright (C) 2018-2019 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: 20181212
+Latest version: 20190109
*/
enum clif_messages {
@@ -21448,6 +21448,24 @@ PvP
*/
MSG_ID_DF4 = 0xdf4,
#endif
+#if PACKETVER >= 20190109
+/*20190109 to latest
+Capture Monster
+*/
+ MSG_ID_DF5 = 0xdf5,
+/*20190109 to latest
+message
+*/
+ MSG_ID_DF6 = 0xdf6,
+/*20190109 to latest
+TITLE
+*/
+ MSG_ID_DF7 = 0xdf7,
+/*20190109 to latest
+데미지 표기 확장
+*/
+ MSG_ID_DF8 = 0xdf8,
+#endif
};
#endif /* MAP_MESSAGES_MAIN_H */
diff --git a/src/map/messages_re.h b/src/map/messages_re.h
index 8b75d608d..af66a8464 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-2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2013-2019 Hercules Dev Team
+ * Copyright (C) 2018-2019 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: 20181212
+Latest version: 20190109
*/
enum clif_messages {
@@ -20927,6 +20927,24 @@ PvP
*/
MSG_ID_DF4 = 0xdf4,
#endif
+#if PACKETVER >= 20190109
+/*20190109 to latest
+Capture Monster
+*/
+ MSG_ID_DF5 = 0xdf5,
+/*20190109 to latest
+message
+*/
+ MSG_ID_DF6 = 0xdf6,
+/*20190109 to latest
+TITLE
+*/
+ MSG_ID_DF7 = 0xdf7,
+/*20190109 to latest
+데미지 표기 확장
+*/
+ MSG_ID_DF8 = 0xdf8,
+#endif
};
#endif /* MAP_MESSAGES_RE_H */
diff --git a/src/map/messages_sak.h b/src/map/messages_sak.h
index 2cfe085c8..2c7bfd661 100644
--- a/src/map/messages_sak.h
+++ b/src/map/messages_sak.h
@@ -2,7 +2,8 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2018 Hercules Dev Team
+ * Copyright (C) 2013-2019 Hercules Dev Team
+ * Copyright (C) 2018-2019 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/map/messages_zero.h b/src/map/messages_zero.h
index f7f4cf360..0b679a2c1 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-2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2013-2019 Hercules Dev Team
+ * Copyright (C) 2018-2019 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: 20181212
+Latest version: 20190130
*/
enum clif_messages {
@@ -17529,6 +17529,32 @@ PvP
*/
MSG_ID_DF4 = 0xdf4,
#endif
+#if PACKETVER >= 20181226
+/*20181226 to latest
+Capture Monster
+*/
+ MSG_ID_DF5 = 0xdf5,
+/*20181226 to latest
+message
+*/
+ MSG_ID_DF6 = 0xdf6,
+#endif
+#if PACKETVER >= 20190116
+/*20190116 to latest
+TITLE
+*/
+ MSG_ID_DF7 = 0xdf7,
+/*20190116 to latest
+데미지 표기 확장
+*/
+ MSG_ID_DF8 = 0xdf8,
+#endif
+#if PACKETVER >= 20190130
+/*20190130 to latest
+맵 이름 표기
+*/
+ MSG_ID_DF9 = 0xdf9,
+#endif
};
#endif /* MAP_MESSAGES_ZERO_H */
diff --git a/src/map/mob.h b/src/map/mob.h
index 4cb3877ed..cdfc07c7d 100644
--- a/src/map/mob.h
+++ b/src/map/mob.h
@@ -208,7 +208,7 @@ struct mob_data {
struct spawn_data *spawn; //Spawn data.
int spawn_timer; //Required for Convex Mirror
struct item *lootitem;
- short class_;
+ int class_;
unsigned int tdmg; //Stores total damage given to the mob, for exp calculations. [Skotlex]
int level;
int target_id,attacked_id;
diff --git a/src/map/npc.c b/src/map/npc.c
index fd11b6c5f..61341744d 100644
--- a/src/map/npc.c
+++ b/src/map/npc.c
@@ -1449,11 +1449,12 @@ static int npc_cashshop_buylist(struct map_session_data *sd, int points, struct
return ERROR_TYPE_NPC;
if( nd->subtype != CASHSHOP ) {
- 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 == SCRIPT && nd->u.scr.shop && nd->u.scr.shop->type != NST_ZENY && nd->u.scr.shop->type != NST_MARKET && nd->u.scr.shop->type != NST_BARTER) {
shop = nd->u.scr.shop->item;
shop_size = nd->u.scr.shop->items;
- } else
+ } else {
return ERROR_TYPE_NPC;
+ }
} else {
shop = nd->u.shop.shop_item;
shop_size = nd->u.shop.count;
@@ -1584,11 +1585,11 @@ static void npc_market_fromsql(void)
if( !(nd = npc->name2id(name)) ) {
ShowError("npc_market_fromsql: NPC '%s' not found! skipping...\n",name);
- npc->market_delfromsql_sub(name, USHRT_MAX);
+ npc->market_delfromsql_sub(name, INT_MAX);
continue;
- } else if ( nd->subtype != SCRIPT || !nd->u.scr.shop || !nd->u.scr.shop->items || nd->u.scr.shop->type != NST_MARKET ) {
+ } else if (nd->subtype != SCRIPT || !nd->u.scr.shop || !nd->u.scr.shop->items || nd->u.scr.shop->type != NST_MARKET) {
ShowError("npc_market_fromsql: NPC '%s' is not proper for market, skipping...\n",name);
- npc->market_delfromsql_sub(name, USHRT_MAX);
+ npc->market_delfromsql_sub(name, INT_MAX);
continue;
}
@@ -1610,10 +1611,10 @@ static void npc_market_fromsql(void)
/**
* Saves persistent NPC Market Data into SQL
**/
-static void npc_market_tosql(struct npc_data *nd, unsigned short index)
+static void npc_market_tosql(struct npc_data *nd, int index)
{
nullpo_retv(nd);
- Assert_retv(index < nd->u.scr.shop->items);
+ Assert_retv(index >= 0 && index < nd->u.scr.shop->items);
if (SQL_ERROR == SQL->Query(map->mysql_handle, "REPLACE INTO `%s` VALUES ('%s','%d','%u')",
map->npc_market_data_db, nd->exname, nd->u.scr.shop->item[index].nameid, nd->u.scr.shop->item[index].qty))
Sql_ShowDebug(map->mysql_handle);
@@ -1621,9 +1622,9 @@ static void npc_market_tosql(struct npc_data *nd, unsigned short index)
/**
* Removes persistent NPC Market Data from SQL
*/
-static void npc_market_delfromsql_sub(const char *npcname, unsigned short index)
+static void npc_market_delfromsql_sub(const char *npcname, int index)
{
- if( index == USHRT_MAX ) {
+ if (index == INT_MAX ) {
if( SQL_ERROR == SQL->Query(map->mysql_handle, "DELETE FROM `%s` WHERE `name`='%s'", map->npc_market_data_db, npcname) )
Sql_ShowDebug(map->mysql_handle);
} else {
@@ -1635,12 +1636,115 @@ static void npc_market_delfromsql_sub(const char *npcname, unsigned short index)
/**
* Removes persistent NPC Market Data from SQL
**/
-static void npc_market_delfromsql(struct npc_data *nd, unsigned short index)
+static void npc_market_delfromsql(struct npc_data *nd, int index)
{
nullpo_retv(nd);
- Assert_retv(index == USHRT_MAX || index < nd->u.scr.shop->items);
- npc->market_delfromsql_sub(nd->exname, index == USHRT_MAX ? index : nd->u.scr.shop->item[index].nameid);
+ Assert_retv(index == INT_MAX || (index >= 0 && index < nd->u.scr.shop->items));
+ npc->market_delfromsql_sub(nd->exname, index == INT_MAX ? index : nd->u.scr.shop->item[index].nameid);
}
+
+/**
+ * Loads persistent NPC Barter Data from SQL
+ **/
+static void npc_barter_fromsql(void)
+{
+ struct SqlStmt *stmt = SQL->StmtMalloc(map->mysql_handle);
+ char name[NAME_LENGTH + 1];
+ int itemid;
+ int amount;
+ int removeId;
+ int removeAmount;
+
+ if (SQL_ERROR == SQL->StmtPrepare(stmt, "SELECT `name`, `itemId`, `amount`, `priceId`, `priceAmount` FROM `%s`", map->npc_barter_data_db)
+ || SQL_ERROR == SQL->StmtExecute(stmt)
+ ) {
+ SqlStmt_ShowDebug(stmt);
+ SQL->StmtFree(stmt);
+ return;
+ }
+
+ SQL->StmtBindColumn(stmt, 0, SQLDT_STRING, &name, sizeof name, NULL, NULL);
+ SQL->StmtBindColumn(stmt, 1, SQLDT_INT, &itemid, sizeof itemid, NULL, NULL);
+ SQL->StmtBindColumn(stmt, 2, SQLDT_UINT32, &amount, sizeof amount, NULL, NULL);
+ SQL->StmtBindColumn(stmt, 3, SQLDT_INT, &removeId, sizeof removeId, NULL, NULL);
+ SQL->StmtBindColumn(stmt, 4, SQLDT_INT, &removeAmount, sizeof removeAmount, NULL, NULL);
+
+ while (SQL_SUCCESS == SQL->StmtNextRow(stmt)) {
+ struct npc_data *nd = NULL;
+ unsigned short i;
+
+ if (!(nd = npc->name2id(name))) {
+ ShowError("npc_barter_fromsql: NPC '%s' not found! skipping...\n",name);
+ npc->barter_delfromsql_sub(name, INT_MAX, 0, 0);
+ continue;
+ } else if (nd->subtype != SCRIPT || !nd->u.scr.shop || !nd->u.scr.shop->items || nd->u.scr.shop->type != NST_BARTER) {
+ ShowError("npc_barter_fromsql: NPC '%s' is not proper for barter, skipping...\n",name);
+ npc->barter_delfromsql_sub(name, INT_MAX, 0, 0);
+ continue;
+ }
+
+ for (i = 0; i < nd->u.scr.shop->items; i++) {
+ struct npc_item_list *const item = &nd->u.scr.shop->item[i];
+ if (item->nameid == itemid && item->value == removeId && item->value2 == removeAmount) {
+ item->qty = amount;
+ break;
+ }
+ }
+
+ if (i == nd->u.scr.shop->items) {
+ ShowError("npc_barter_fromsql: NPC '%s' does not sell item %d (qty %d), deleting...\n", name, itemid, amount);
+ npc->barter_delfromsql_sub(name, itemid, removeId, removeAmount);
+ continue;
+ }
+ }
+ SQL->StmtFree(stmt);
+}
+
+/**
+ * Saves persistent NPC Barter Data into SQL
+ **/
+static void npc_barter_tosql(struct npc_data *nd, int index)
+{
+ nullpo_retv(nd);
+ Assert_retv(index >= 0 && index < nd->u.scr.shop->items);
+ const struct npc_item_list *const item = &nd->u.scr.shop->item[index];
+ if (SQL_ERROR == SQL->Query(map->mysql_handle, "REPLACE INTO `%s` VALUES ('%s', '%d', '%u', '%u', '%d')",
+ map->npc_barter_data_db, nd->exname, item->nameid, item->qty, item->value, item->value2)) {
+ Sql_ShowDebug(map->mysql_handle);
+ }
+}
+
+/**
+ * Removes persistent NPC Barter Data from SQL
+ */
+static void npc_barter_delfromsql_sub(const char *npcname, int itemId, int itemId2, int amount2)
+{
+ if (itemId == INT_MAX) {
+ if (SQL_ERROR == SQL->Query(map->mysql_handle, "DELETE FROM `%s` WHERE `name`='%s'", map->npc_barter_data_db, npcname))
+ Sql_ShowDebug(map->mysql_handle);
+ } else {
+ if (SQL_ERROR == SQL->Query(map->mysql_handle, "DELETE FROM `%s` WHERE `name`='%s' AND `itemId`='%d' AND `priceId`='%d' AND `priceAmount`='%d' LIMIT 1",
+ map->npc_barter_data_db, npcname, itemId, itemId2, amount2)) {
+ Sql_ShowDebug(map->mysql_handle);
+ }
+ }
+}
+
+/**
+ * Removes persistent NPC Barter Data from SQL
+ **/
+static void npc_barter_delfromsql(struct npc_data *nd, int index)
+{
+ nullpo_retv(nd);
+ if (index == INT_MAX) {
+ npc->barter_delfromsql_sub(nd->exname, INT_MAX, 0, 0);
+ } else {
+ Assert_retv(index >= 0 && index < nd->u.scr.shop->items);
+ const struct npc_item_list *const item = &nd->u.scr.shop->item[index];
+ npc->barter_delfromsql_sub(nd->exname, item->nameid, item->value, item->value2);
+ }
+}
+
/**
* Judges whether to allow and spawn a trader's window.
**/
@@ -1673,6 +1777,9 @@ static bool npc_trader_open(struct map_session_data *sd, struct npc_data *nd)
clif->npc_market_open(sd,nd);
}
break;
+ case NST_BARTER:
+ clif->npc_barter_open(sd, nd);
+ break;
default:
clif->cashshop_show(sd,nd);
break;
@@ -1799,11 +1906,12 @@ static int npc_cashshop_buy(struct map_session_data *sd, int nameid, int amount,
return ERROR_TYPE_ITEM_ID; // Invalid Item
if( nd->subtype != CASHSHOP ) {
- 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 == SCRIPT && nd->u.scr.shop && nd->u.scr.shop->type != NST_ZENY && nd->u.scr.shop->type != NST_MARKET && nd->u.scr.shop->type != NST_BARTER) {
shop = nd->u.scr.shop->item;
shop_size = nd->u.scr.shop->items;
- } else
+ } else {
return ERROR_TYPE_NPC;
+ }
} else {
shop = nd->u.shop.shop_item;
shop_size = nd->u.shop.count;
@@ -2112,6 +2220,133 @@ static int npc_market_buylist(struct map_session_data *sd, struct itemlist *item
return 0;
}
+/**
+ * Processes incoming npc barter purchase list
+ **/
+static int npc_barter_buylist(struct map_session_data *sd, struct barteritemlist *item_list)
+{
+ struct npc_data* nd;
+ struct npc_item_list *shop = NULL;
+ int w, new_;
+ unsigned short shop_size = 0;
+
+ nullpo_retr(1, sd);
+ nullpo_retr(1, item_list);
+
+ nd = npc->checknear(sd, map->id2bl(sd->npc_shopid));
+
+ if (nd == NULL || nd->subtype != SCRIPT || VECTOR_LENGTH(*item_list) == 0 || !nd->u.scr.shop || nd->u.scr.shop->type != NST_BARTER)
+ return 11;
+
+ shop = nd->u.scr.shop->item;
+ shop_size = nd->u.scr.shop->items;
+
+ w = 0;
+ new_ = 0;
+
+ int items[MAX_INVENTORY] = { 0 };
+
+ // process entries in buy list, one by one
+ for (int i = 0; i < VECTOR_LENGTH(*item_list); ++i) {
+ struct barter_itemlist_entry *entry = &VECTOR_INDEX(*item_list, i);
+
+ const int n = entry->removeIndex;
+ if (n < 0 || n >= sd->status.inventorySize)
+ return 11; // wrong inventory index
+
+ int removeId = sd->status.inventory[n].nameid;
+ const int j = entry->shopIndex;
+ if (j < 0 || j >= shop_size)
+ return 13; // no such item in shop
+ if (entry->addId != shop[j].nameid && entry->addId != itemdb_viewid(shop[j].nameid))
+ return 13; // no such item in shop
+ if (removeId != shop[j].value && removeId != itemdb_viewid(shop[j].value))
+ return 13; // no such item in shop
+ entry->addId = shop[j].nameid; // item_avail replacement
+ removeId = shop[j].value; // item_avail replacement
+
+ if (!itemdb->exists(entry->addId))
+ return 13; // item no longer in itemdb
+
+ const int removeAmount = shop[j].value2;
+
+ if ((int)shop[j].qty != -1 && entry->addAmount > (int)shop[j].qty)
+ return 14; // not enough item amount in shop
+
+ if (removeAmount * entry->addAmount > sd->status.inventory[n].amount)
+ return 14; // not enough item amount in inventory
+
+ items[n] += removeAmount * entry->addAmount;
+
+ if (items[n] > sd->status.inventory[n].amount)
+ return 14; // not enough item amount in inventory
+
+ entry->addId = shop[j].nameid; //item_avail replacement
+
+ npc_market_qty[i] = j;
+
+ if (!itemdb->isstackable(entry->addId) && entry->addAmount > 1) {
+ //Exploit? You can't buy more than 1 of equipment types o.O
+ ShowWarning("Player %s (%d:%d) sent a hexed packet trying to buy %d of non-stackable item %d!\n",
+ sd->status.name, sd->status.account_id, sd->status.char_id, entry->addAmount, entry->addId);
+ entry->addAmount = 1;
+ }
+
+ switch (pc->checkadditem(sd, entry->addId, entry->addAmount)) {
+ case ADDITEM_EXIST:
+ break;
+ case ADDITEM_NEW:
+ new_++;
+ break;
+ case ADDITEM_OVERAMOUNT: /* TODO find official response for this */
+ return 1;
+ }
+
+ w += itemdb_weight(entry->addId) * entry->addAmount;
+ w -= itemdb_weight(removeId) * removeAmount;
+ }
+
+ if (w + sd->weight > sd->max_weight)
+ return 2; // Too heavy
+
+ if (pc->inventoryblank(sd) < new_)
+ return 3; // Not enough space to store items
+
+ for (int i = 0; i < sd->status.inventorySize; ++i) {
+ const int removeAmountTotal = items[i];
+ if (removeAmountTotal == 0)
+ continue;
+ if (pc->delitem(sd, i, removeAmountTotal, 0, DELITEM_SOLD, LOG_TYPE_NPC) != 0) {
+ return 11; // unknown exploit
+ }
+ }
+
+ for (int i = 0; i < VECTOR_LENGTH(*item_list); ++i) {
+ struct barter_itemlist_entry *entry = &VECTOR_INDEX(*item_list, i);
+ const int shopIdx = npc_market_qty[i];
+
+ if ((int)shop[shopIdx].qty != -1) {
+ if (entry->addAmount > (int)shop[shopIdx].qty) /* wohoo someone tampered with the packet. */
+ return 14;
+ shop[shopIdx].qty -= entry->addAmount;
+ }
+
+ npc->barter_tosql(nd, shopIdx);
+
+ if (itemdb_type(entry->addId) == IT_PETEGG) {
+ pet->create_egg(sd, entry->addId);
+ } else {
+ struct item item_tmp;
+ memset(&item_tmp, 0, sizeof(item_tmp));
+ item_tmp.nameid = entry->addId;
+ item_tmp.identify = 1;
+ pc->additem(sd, &item_tmp, entry->addAmount, LOG_TYPE_NPC);
+ }
+ }
+
+ return 12;
+}
+
/// npc_selllist for script-controlled shops
static int npc_selllist_sub(struct map_session_data *sd, struct itemlist *item_list, struct npc_data *nd)
{
@@ -2726,7 +2961,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, int16 class_)
+static struct npc_data *npc_create_npc(enum npc_subtype subtype, int m, int x, int y, uint8 dir, int class_)
{
struct npc_data *nd;
@@ -3683,7 +3918,7 @@ static void npc_setdisplayname(struct npc_data *nd, const char *newname)
///
/// @param nd Target npc
/// @param class_ New display class
-static void npc_setclass(struct npc_data *nd, short class_)
+static void npc_setclass(struct npc_data *nd, int class_)
{
nullpo_retv(nd);
@@ -3964,7 +4199,7 @@ static const char *npc_parse_mob(const char *w1, const char *w2, const char *w3,
mobspawn.num = (unsigned short)num;
mobspawn.active = 0;
- mobspawn.class_ = (short) class_;
+ mobspawn.class_ = class_;
mobspawn.x = (unsigned short)x;
mobspawn.y = (unsigned short)y;
mobspawn.xs = (signed short)xs;
@@ -4997,6 +5232,7 @@ static int npc_reload(void)
// OnInit -> OnInterIfInit -> OnInterIfInitOnce -> OnAgitInit -> OnAgitInit2
npc->event_do_oninit( true );
npc->market_fromsql();
+ npc->barter_fromsql();
// Execute rest of the startup events if connected to char-server. [Lance]
// Executed when connection is established with char-server in chrif_connectack
if( !intif->CheckForCharServer() ) {
@@ -5303,11 +5539,16 @@ void npc_defaults(void)
npc->trader_pay = npc_trader_pay;
npc->trader_update = npc_trader_update;
npc->market_buylist = npc_market_buylist;
+ npc->barter_buylist = npc_barter_buylist;
npc->trader_open = npc_trader_open;
npc->market_fromsql = npc_market_fromsql;
npc->market_tosql = npc_market_tosql;
npc->market_delfromsql = npc_market_delfromsql;
npc->market_delfromsql_sub = npc_market_delfromsql_sub;
+ npc->barter_fromsql = npc_barter_fromsql;
+ npc->barter_tosql = npc_barter_tosql;
+ npc->barter_delfromsql = npc_barter_delfromsql;
+ npc->barter_delfromsql_sub = npc_barter_delfromsql_sub;
npc->db_checkid = npc_db_checkid;
npc->refresh = npc_refresh;
}
diff --git a/src/map/npc.h b/src/map/npc.h
index ed5f4138d..0eb8befd1 100644
--- a/src/map/npc.h
+++ b/src/map/npc.h
@@ -41,10 +41,11 @@ enum npc_parse_options {
};
enum npc_shop_types {
- NST_ZENY,/* default */
- NST_CASH,/* official npc cash shop */
- NST_MARKET,/* official npc market type */
+ NST_ZENY, /* default */
+ NST_CASH, /* official npc cash shop */
+ NST_MARKET, /* official npc market type */
NST_CUSTOM,
+ NST_BARTER, /* official npc barter type */
/* */
NST_MAX,
};
@@ -56,11 +57,14 @@ struct npc_label_list {
char name[NAME_LENGTH];
int pos;
};
+
struct npc_item_list {
int nameid;
- unsigned int value;
+ unsigned int value; // price or barter currency item id
+ int value2; // barter currency item amount
unsigned int qty;
};
+
struct npc_shop_data {
unsigned char type;/* what am i */
struct npc_item_list *item;/* list */
@@ -73,7 +77,7 @@ struct npc_data {
struct view_data vd;
unsigned int option;
struct npc_data *master_nd;
- short class_;
+ int class_;
short speed;
char name[NAME_LENGTH+1];// display name
char exname[NAME_LENGTH+1];// unique npc name
@@ -264,7 +268,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, int16 class_);
+ struct npc_data *(*create_npc) (enum npc_subtype subtype, int m, int x, int y, uint8 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);
@@ -284,7 +288,7 @@ struct npc_interface {
void (*unsetcells) (struct npc_data *nd);
void (*movenpc) (struct npc_data *nd, int16 x, int16 y);
void (*setdisplayname) (struct npc_data *nd, const char *newname);
- void (*setclass) (struct npc_data *nd, short class_);
+ void (*setclass) (struct npc_data *nd, int class_);
int (*do_atcmd_event) (struct map_session_data *sd, const char *command, const char *message, const char *eventname);
const char *(*parse_function) (const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int *retval);
void (*parse_mob2) (struct spawn_data *mobspawn);
@@ -306,11 +310,16 @@ struct npc_interface {
bool (*trader_pay) (struct npc_data *nd, struct map_session_data *sd, int price, int points);
void (*trader_update) (int master);
int (*market_buylist) (struct map_session_data *sd, struct itemlist *item_list);
+ int (*barter_buylist) (struct map_session_data *sd, struct barteritemlist *item_list);
bool (*trader_open) (struct map_session_data *sd, struct npc_data *nd);
void (*market_fromsql) (void);
- void (*market_tosql) (struct npc_data *nd, unsigned short index);
- void (*market_delfromsql) (struct npc_data *nd, unsigned short index);
- void (*market_delfromsql_sub) (const char *npcname, unsigned short index);
+ void (*market_tosql) (struct npc_data *nd, int index);
+ void (*market_delfromsql) (struct npc_data *nd, int index);
+ void (*market_delfromsql_sub) (const char *npcname, int index);
+ void (*barter_fromsql) (void);
+ void (*barter_tosql) (struct npc_data *nd, int index);
+ void (*barter_delfromsql) (struct npc_data *nd, int index);
+ void (*barter_delfromsql_sub) (const char *npcname, int itemId, int itemId2, int amount2);
bool (*db_checkid) (const int id);
void (*refresh) (struct npc_data* nd);
/**
diff --git a/src/map/packets.h b/src/map/packets.h
index 81b861f78..50784f09a 100644
--- a/src/map/packets.h
+++ b/src/map/packets.h
@@ -649,6 +649,10 @@ packet(0x96e,clif->ackmergeitems);
packet(0x0439,clif->pUseItem,2,4);
#endif
+#if PACKETVER_MAIN_NUM >= 20090406 || PACKETVER_RE_NUM >= 20090408 || PACKETVER_SAK_NUM >= 20090408 || defined(PACKETVER_ZERO)
+ packet(0x044a,clif->pClientVersion);
+#endif
+
// 2009-05-20aRagexe, 2009-05-20aRagexeRE
#if PACKETVER >= 20090520
// new packets
@@ -1922,4 +1926,9 @@ packet(0x96e,clif->ackmergeitems);
packet(0x0b19,clif->pInventoryExpansionRejected);
#endif
+#if PACKETVER_MAIN_NUM >= 20190116 || PACKETVER_RE_NUM >= 20190116 || PACKETVER_ZERO_NUM >= 20181226
+ packet(0x0b0f,clif->pNPCBarterPurchase);
+ packet(0x0b12,clif->pNPCBarterClosed);
+#endif
+
#endif /* MAP_PACKETS_H */
diff --git a/src/map/packets_keys_main.h b/src/map/packets_keys_main.h
index 7a1f84faa..017e1d45a 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-2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2013-2019 Hercules Dev Team
+ * Copyright (C) 2018-2019 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
+// 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
#if PACKETVER == 20101123 || \
PACKETVER == 20101124 || \
PACKETVER == 20101125 || \
@@ -130,7 +130,12 @@
PACKETVER == 20181121 || \
PACKETVER == 20181128 || \
PACKETVER == 20181205 || \
- PACKETVER >= 20181212
+ PACKETVER == 20181212 || \
+ PACKETVER == 20181219 || \
+ PACKETVER == 20181226 || \
+ PACKETVER == 20190109 || \
+ PACKETVER == 20190116 || \
+ PACKETVER >= 20190123
packetKeys(0x00000000,0x00000000,0x00000000);
#endif
diff --git a/src/map/packets_keys_zero.h b/src/map/packets_keys_zero.h
index 1a592956e..10b52ae5b 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-2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2013-2019 Hercules Dev Team
+ * Copyright (C) 2018-2019 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
+// 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
#if PACKETVER == 20171018 || \
PACKETVER == 20171019 || \
PACKETVER == 20171023 || \
@@ -66,7 +66,12 @@
PACKETVER == 20181114 || \
PACKETVER == 20181120 || \
PACKETVER == 20181128 || \
- PACKETVER >= 20181212
+ PACKETVER == 20181212 || \
+ PACKETVER == 20181219 || \
+ PACKETVER == 20181226 || \
+ PACKETVER == 20190116 || \
+ PACKETVER == 20190117 || \
+ PACKETVER >= 20190130
packetKeys(0x00000000,0x00000000,0x00000000);
#endif
diff --git a/src/map/packets_shuffle_main.h b/src/map/packets_shuffle_main.h
index 940dbcf89..eb6870da0 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-2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2013-2019 Hercules Dev Team
+ * Copyright (C) 2018-2019 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
@@ -9727,11 +9727,16 @@
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-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
#if PACKETVER == 20181121 || \
PACKETVER == 20181128 || \
PACKETVER == 20181205 || \
- PACKETVER >= 20181212
+ PACKETVER == 20181212 || \
+ PACKETVER == 20181219 || \
+ PACKETVER == 20181226 || \
+ PACKETVER == 20190109 || \
+ PACKETVER == 20190116 || \
+ PACKETVER >= 20190123
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
diff --git a/src/map/packets_shuffle_re.h b/src/map/packets_shuffle_re.h
index dabc2ce6c..8d6131560 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-2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2013-2019 Hercules Dev Team
+ * Copyright (C) 2018-2019 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
@@ -9663,7 +9663,7 @@
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-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
#if PACKETVER == 20180704 || \
PACKETVER == 20180711 || \
PACKETVER == 20180718 || \
@@ -9681,7 +9681,12 @@
PACKETVER == 20181121 || \
PACKETVER == 20181128 || \
PACKETVER == 20181205 || \
- PACKETVER >= 20181212
+ PACKETVER == 20181212 || \
+ PACKETVER == 20181219 || \
+ PACKETVER == 20181226 || \
+ PACKETVER == 20190109 || \
+ PACKETVER == 20190116 || \
+ PACKETVER >= 20190123
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
diff --git a/src/map/packets_shuffle_zero.h b/src/map/packets_shuffle_zero.h
index d38ed4008..4e1a78c3e 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-2018 Hercules Dev Team
- * Copyright (C) 2018 Andrei Karas (4144)
+ * Copyright (C) 2013-2019 Hercules Dev Team
+ * Copyright (C) 2018-2019 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
@@ -742,11 +742,16 @@
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-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
#if PACKETVER == 20181114 || \
PACKETVER == 20181120 || \
PACKETVER == 20181128 || \
- PACKETVER >= 20181212
+ PACKETVER == 20181212 || \
+ PACKETVER == 20181219 || \
+ PACKETVER == 20181226 || \
+ PACKETVER == 20190116 || \
+ PACKETVER == 20190117 || \
+ PACKETVER >= 20190130
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
diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h
index d648d262e..2339935ec 100644
--- a/src/map/packets_struct.h
+++ b/src/map/packets_struct.h
@@ -308,7 +308,6 @@ enum packet_headers {
monsterhpType = 0x977,
maptypeproperty2Type = 0x99b,
npcmarketresultackType = 0x9d7,
- npcmarketopenType = 0x9d5,
#if PACKETVER >= 20131223 // version probably can be 20131030 [4144]
wisendType = 0x9df,
#else
@@ -3000,7 +2999,7 @@ struct PACKET_CZ_STOP_USE_SKILL {
DEFINE_PACKET_HEADER(CZ_STOP_USE_SKILL, 0x0b11);
#endif
-#if PACKETVER_ZERO_NUM >= 20181212
+#if PACKETVER_MAIN_NUM >= 20181219 || PACKETVER_RE_NUM >= 20181219 || PACKETVER_ZERO_NUM >= 20181212
struct PACKET_ZC_INVENTORY_EXPANSION_INFO {
int16 packetType;
int16 expansionSize;
@@ -3008,7 +3007,7 @@ struct PACKET_ZC_INVENTORY_EXPANSION_INFO {
DEFINE_PACKET_HEADER(ZC_INVENTORY_EXPANSION_INFO, 0x0b18);
#endif
-#if PACKETVER_ZERO_NUM >= 20181212
+#if PACKETVER_MAIN_NUM >= 20181219 || PACKETVER_RE_NUM >= 20181219 || PACKETVER_ZERO_NUM >= 20181212
struct PACKET_ZC_ACK_INVENTORY_EXPAND {
int16 packetType;
uint8 result;
@@ -3017,7 +3016,7 @@ struct PACKET_ZC_ACK_INVENTORY_EXPAND {
DEFINE_PACKET_HEADER(ZC_ACK_INVENTORY_EXPAND, 0x0b15);
#endif
-#if PACKETVER_ZERO_NUM >= 20181212
+#if PACKETVER_MAIN_NUM >= 20181219 || PACKETVER_RE_NUM >= 20181219 || PACKETVER_ZERO_NUM >= 20181212
struct PACKET_ZC_ACK_INVENTORY_EXPAND_RESULT {
int16 packetType;
uint8 result;
@@ -3057,6 +3056,110 @@ struct PACKET_CZ_PARTY_CONFIG {
} __attribute__((packed));
DEFINE_PACKET_HEADER(CZ_PARTY_CONFIG, 0x02c8);
+#if PACKETVER_MAIN_NUM >= 20190116 || PACKETVER_RE_NUM >= 20190116 || PACKETVER_ZERO_NUM >= 20181226
+struct PACKET_ZC_NPC_BARTER_OPEN_sub {
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 nameid;
+#else
+ uint16 nameid;
+#endif
+ uint8 type;
+ uint32 amount;
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 currencyNameid;
+#else
+ uint16 currencyNameid;
+#endif
+ uint32 currencyAmount;
+ uint32 weight;
+ uint32 index;
+} __attribute__((packed));
+
+struct PACKET_ZC_NPC_BARTER_OPEN {
+ int16 packetType;
+ int16 packetLength;
+ struct PACKET_ZC_NPC_BARTER_OPEN_sub list[];
+} __attribute__((packed));
+
+DEFINE_PACKET_HEADER(ZC_NPC_BARTER_OPEN, 0x0b0e);
+#endif
+
+#if PACKETVER_MAIN_NUM >= 20190116 || PACKETVER_RE_NUM >= 20190116 || PACKETVER_ZERO_NUM >= 20181226
+struct PACKET_CZ_NPC_BARTER_CLOSE {
+ int16 packetType;
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(CZ_NPC_BARTER_CLOSE, 0x0b12);
+#endif
+
+#if PACKETVER_MAIN_NUM >= 20190116 || PACKETVER_RE_NUM >= 20190116 || PACKETVER_ZERO_NUM >= 20181226
+struct PACKET_CZ_NPC_BARTER_PURCHASE_sub {
+#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
+ uint32 itemId;
+#else
+ uint16 itemId;
+#endif
+ uint32 amount;
+ uint16 invIndex;
+ uint32 shopIndex;
+} __attribute__((packed));
+
+struct PACKET_CZ_NPC_BARTER_PURCHASE {
+ int16 packetType;
+ int16 packetLength;
+ struct PACKET_CZ_NPC_BARTER_PURCHASE_sub list[];
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(CZ_NPC_BARTER_PURCHASE, 0x0b0f);
+#endif
+
+#if PACKETVER_ZERO_NUM >= 20190130
+struct PACKET_ZC_USESKILL_ACK {
+ int16 packetType;
+ uint32 srcId;
+ uint32 dstId;
+ uint16 x;
+ uint16 y;
+ uint16 skillId;
+ uint32 element;
+ uint32 delayTime;
+ uint8 disposable;
+ uint32 unknown;
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(ZC_USESKILL_ACK, 0x0b1a);
+#elif PACKETVER_MAIN_NUM >= 20091124 || PACKETVER_RE_NUM >= 20091124 || defined(PACKETVER_ZERO)
+struct PACKET_ZC_USESKILL_ACK {
+ int16 packetType;
+ uint32 srcId;
+ uint32 dstId;
+ uint16 x;
+ uint16 y;
+ uint16 skillId;
+ uint32 element;
+ uint32 delayTime;
+ uint8 disposable;
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(ZC_USESKILL_ACK, 0x07fb);
+#elif PACKETVER_MAIN_NUM >= 20090406 || PACKETVER_SAK_NUM >= 20080618 || PACKETVER_RE_NUM >= 20080827 || defined(PACKETVER_ZERO)
+struct PACKET_ZC_USESKILL_ACK {
+ int16 packetType;
+ uint32 srcId;
+ uint32 dstId;
+ uint16 x;
+ uint16 y;
+ uint16 skillId;
+ uint32 element;
+ uint32 delayTime;
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(ZC_USESKILL_ACK, 0x013e);
+#endif
+
+#if PACKETVER_MAIN_NUM >= 20090406 || PACKETVER_RE_NUM >= 20090408 || PACKETVER_SAK_NUM >= 20090408 || defined(PACKETVER_ZERO)
+struct PACKET_CZ_CLIENT_VERSION {
+ int16 packetType;
+ uint32 clientVersion;
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(CZ_CLIENT_VERSION, 0x044a);
+#endif
+
#if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
#pragma pack(pop)
#endif // not NetBSD < 6 / Solaris
diff --git a/src/map/pc.c b/src/map/pc.c
index 5410ae96a..ea18715bb 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -6147,7 +6147,7 @@ static int pc_checkequip(struct map_session_data *sd, int pos)
* Convert's from the client's lame Job ID system
* to the map server's 'makes sense' system. [Skotlex]
*------------------------------------------*/
-static int pc_jobid2mapid(int16 class)
+static int pc_jobid2mapid(int class)
{
switch (class) {
//Novice And 1-1 Jobs
@@ -6289,9 +6289,9 @@ static int pc_jobid2mapid(int16 class)
}
//Reverts the map-style class id to the client-style one.
-static int pc_mapid2jobid(uint16 job, int sex)
+static int pc_mapid2jobid(unsigned int class, int sex)
{
- switch (job) {
+ switch (class) {
//Novice And 1-1 Jobs
case MAPID_NOVICE: return JOB_NOVICE;
case MAPID_SWORDMAN: return JOB_SWORDMAN;
diff --git a/src/map/pc.h b/src/map/pc.h
index 90e59edb2..b2069d4df 100644
--- a/src/map/pc.h
+++ b/src/map/pc.h
@@ -117,22 +117,22 @@ BEGIN_ZEROED_BLOCK; // all the variables within this block get zero'ed in each c
int addrace2[RC2_MAX];
int addsize[3];
struct drain_data {
- short rate;
- short per;
- short value;
+ int rate;
+ int per;
+ int value;
unsigned type:1;
} hp_drain[RC_MAX], sp_drain[RC_MAX];
struct {
- short class_, rate;
+ int class_, rate;
} add_dmg[MAX_PC_BONUS];
struct {
- short flag, rate;
+ int flag, rate;
unsigned char ele;
} addele2[MAX_PC_BONUS];
END_ZEROED_BLOCK;
};
struct s_autospell {
- short id, lv, rate, flag;
+ int id, lv, rate, flag;
int card_id;
bool lock; // bAutoSpellOnSkill: blocks autospell from triggering again, while being executed
};
@@ -147,7 +147,7 @@ struct s_addeffect {
};
struct s_addeffectonskill {
enum sc_type id;
- short rate, skill;
+ int rate, skill;
unsigned char target;
};
struct s_add_drop {
@@ -156,11 +156,11 @@ struct s_add_drop {
int race, rate;
};
struct s_autobonus {
- short rate,atk_type;
+ int rate,atk_type;
unsigned int duration;
char *bonus_script, *other_script;
int active;
- unsigned short pos;
+ unsigned int pos;
};
enum npc_timeout_type {
NPCT_INPUT = 0,
@@ -219,11 +219,11 @@ struct map_session_data {
unsigned int changemap : 1;
unsigned int callshop : 1; // flag to indicate that a script used callshop; on a shop
short pmap; // Previous map on Map Change
- unsigned short autoloot;
+ unsigned int autoloot;
int autolootid[AUTOLOOTITEM_SIZE]; // [Zephyrus]
- unsigned short autoloottype;
+ unsigned int autoloottype;
unsigned int autolooting : 1; //performance-saver, autolooting state for @alootid
- unsigned short autobonus; //flag to indicate if an autobonus is activated. [Inkfish]
+ unsigned int autobonus; //flag to indicate if an autobonus is activated. [Inkfish]
unsigned int gmaster_flag : 1;
unsigned int prevend : 1;//used to flag wheather you've spent 40sp to open the vending or not.
unsigned int warping : 1;//states whether you're in the middle of a warp processing
@@ -288,7 +288,7 @@ struct map_session_data {
int followtimer; // [MouseJstr]
int followtarget;
time_t emotionlasttime; // to limit flood with emotion packets
- short skillitem,skillitemlv;
+ int skillitem,skillitemlv;
uint16 skill_id_old,skill_lv_old;
uint16 skill_id_dance,skill_lv_dance;
short cook_mastery; // range: [0,1999] [Inkfish]
@@ -312,7 +312,7 @@ struct map_session_data {
int16 weapontype; ///< Weapon type considering both hands (@see enum weapon_type).
int16 weapontype1; ///< Weapon type in the right/primary hand (@see enum weapon_type).
int16 weapontype2; ///< Weapon type in the left/secondary hand (@see enum weapon_type).
- short disguise; // [Valaris]
+ int disguise; // [Valaris]
struct weapon_data right_weapon, left_weapon;
BEGIN_ZEROED_BLOCK; // this block will be globally zeroed at the beginning of status_calc_pc()
@@ -337,9 +337,9 @@ BEGIN_ZEROED_BLOCK; // this block will be globally zeroed at the beginning of st
int expaddrace[RC_MAX];
int ignore_mdef[RC_MAX];
int ignore_def[RC_MAX];
- short sp_gain_race[RC_MAX];
- short sp_gain_race_attack[RC_MAX];
- short hp_gain_race_attack[RC_MAX];
+ int sp_gain_race[RC_MAX];
+ int sp_gain_race_attack[RC_MAX];
+ int hp_gain_race_attack[RC_MAX];
#ifdef RENEWAL
int race_tolerance[RC_MAX];
#endif
@@ -347,16 +347,16 @@ BEGIN_ZEROED_BLOCK; // this block will be globally zeroed at the beginning of st
struct s_addeffect addeff[MAX_PC_BONUS], addeff2[MAX_PC_BONUS];
struct s_addeffectonskill addeff3[MAX_PC_BONUS];
struct { //skillatk raises bonus dmg% of skills, skillheal increases heal%, skillblown increases bonus blewcount for some skills.
- unsigned short id;
- short val;
+ unsigned int id;
+ int val;
} skillatk[MAX_PC_BONUS], skillusesprate[MAX_PC_BONUS], skillusesp[MAX_PC_BONUS], skillheal[5], skillheal2[5], skillblown[MAX_PC_BONUS], skillcast[MAX_PC_BONUS], skillcooldown[MAX_PC_BONUS], skillfixcast[MAX_PC_BONUS], skillvarcast[MAX_PC_BONUS], skillfixcastrate[MAX_PC_BONUS];
struct {
- short value;
+ int value;
int rate;
int tick;
} hp_loss, sp_loss, hp_regen, sp_regen;
struct {
- short class_, rate;
+ int class_, rate;
} add_def[MAX_PC_BONUS], add_mdef[MAX_PC_BONUS], add_mdmg[MAX_PC_BONUS];
struct s_add_drop add_drop[MAX_PC_BONUS];
struct {
@@ -364,11 +364,11 @@ BEGIN_ZEROED_BLOCK; // this block will be globally zeroed at the beginning of st
int rate;
} itemhealrate[MAX_PC_BONUS];
struct {
- short flag, rate;
+ int flag, rate;
unsigned char ele;
} subele2[MAX_PC_BONUS];
struct {
- short value;
+ int value;
int rate, tick;
} def_set_race[RC_MAX], mdef_set_race[RC_MAX];
struct {
@@ -394,17 +394,17 @@ BEGIN_ZEROED_BLOCK; // this block will be globally zeroed at the beginning of st
int itemhealrate2; // [Epoque] Increase heal rate of all healing items.
int shieldmdef;//royal guard's
unsigned int setitem_hash, setitem_hash2; //Split in 2 because shift operations only work on int ranges. [Skotlex]
- short splash_range, splash_add_range;
- short add_steal_rate;
- short add_heal_rate, add_heal2_rate;
- short sp_gain_value, hp_gain_value, magic_sp_gain_value, magic_hp_gain_value;
- short hp_vanish_rate;
- short hp_vanish_per, hp_vanish_trigger;
- short sp_vanish_rate;
- short sp_vanish_per, sp_vanish_trigger;
- unsigned short unbreakable; // chance to prevent ANY equipment breaking [celest]
- unsigned short unbreakable_equip; //100% break resistance on certain equipment
- unsigned short unstripable_equip;
+ int splash_range, splash_add_range;
+ int add_steal_rate;
+ int add_heal_rate, add_heal2_rate;
+ int sp_gain_value, hp_gain_value, magic_sp_gain_value, magic_hp_gain_value;
+ int hp_vanish_rate;
+ int hp_vanish_per, hp_vanish_trigger;
+ int sp_vanish_rate;
+ int sp_vanish_per, sp_vanish_trigger;
+ unsigned int unbreakable; // chance to prevent ANY equipment breaking [celest]
+ unsigned int unbreakable_equip; //100% break resistance on certain equipment
+ unsigned int unstripable_equip;
int fixcastrate,varcastrate;
int add_fixcast,add_varcast;
int ematk; // matk bonus from equipment
@@ -419,22 +419,22 @@ END_ZEROED_BLOCK;
int matk_rate;
int critical_rate,hit_rate,flee_rate,flee2_rate,def_rate,def2_rate,mdef_rate,mdef2_rate;
int itemid;
- short itemindex; //Used item's index in sd->inventory [Skotlex]
- short catch_target_class; // pet catching, stores a pet class to catch (short now) [zzo]
- short spiritball, spiritball_old;
+ int itemindex; //Used item's index in sd->inventory [Skotlex]
+ int catch_target_class;
+ int spiritball, spiritball_old;
int spirit_timer[MAX_SPIRITBALL];
- short charm_count;
+ int charm_count;
int 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
- short mission_mobid; //Stores the target mob_id for TK_MISSION
+ int mission_mobid; //Stores the target mob_id for TK_MISSION
int die_counter; //Total number of times you've died
int devotion[MAX_PC_DEVOTION]; //Stores the account IDs of chars devoted to.
int trade_partner;
struct {
struct {
- short index, amount;
+ int index, amount;
} item[10];
int zeny, weight;
} deal;
@@ -465,18 +465,18 @@ END_ZEROED_BLOCK;
struct {
int m; //-1 - none, other: map index corresponding to map name.
- unsigned short index; //map index
+ unsigned int index; //map index
} feel_map[MAX_PC_FEELHATE];// 0 - Sun; 1 - Moon; 2 - Stars
- short hate_mob[MAX_PC_FEELHATE];
+ int hate_mob[MAX_PC_FEELHATE];
int pvp_timer;
- short pvp_point;
- unsigned short pvp_rank, pvp_lastusers;
- unsigned short pvp_won, pvp_lost;
+ int pvp_point;
+ unsigned int pvp_rank, pvp_lastusers;
+ unsigned int pvp_won, pvp_lost;
char eventqueue[MAX_EVENTQUEUE][EVENT_NAME_LENGTH];
int eventtimer[MAX_EVENTTIMER];
- unsigned short eventcount; // [celest]
+ unsigned int eventcount; // [celest]
int change_level_2nd; // job level when changing from 1st to 2nd class [jobchange_level in global_reg_value]
int change_level_3rd; // job level when changing from 2nd to 3rd class [jobchange_level_3rd in global_reg_value]
@@ -769,24 +769,24 @@ END_ZEROED_BLOCK;
#define pc_can_give_bound_items(sd) ( pc_has_permission((sd),PC_PERM_TRADE_BOUND) )
struct skill_tree_requirement {
- short id;
+ int id;
unsigned short idx;
unsigned char lv;
};
struct skill_tree_entry {
- short id;
+ int id;
unsigned short idx;
unsigned char max;
unsigned char joblv;
- short inherited;
+ int inherited;
VECTOR_DECL(struct skill_tree_requirement) need;
}; // Celest
struct sg_data {
- short anger_id;
- short bless_id;
- short comfort_id;
+ int anger_id;
+ int bless_id;
+ int comfort_id;
char feel_var[NAME_LENGTH];
char hate_var[NAME_LENGTH];
bool (*day_func)(void);
@@ -1068,8 +1068,8 @@ END_ZEROED_BLOCK; /* End */
void (*setstand) (struct map_session_data *sd);
int (*candrop) (struct map_session_data *sd,struct item *item);
- int (*jobid2mapid) (int16 class); // Skotlex
- int (*mapid2jobid) (unsigned short class_, int sex); // Skotlex
+ int (*jobid2mapid) (int class); // Skotlex
+ int (*mapid2jobid) (unsigned int class_, int sex); // Skotlex
const char * (*job_name) (int class);
diff --git a/src/map/pet.c b/src/map/pet.c
index dd9f1ebbf..c9603a76c 100644
--- a/src/map/pet.c
+++ b/src/map/pet.c
@@ -111,8 +111,8 @@ static int pet_create_egg(struct map_session_data *sd, int item_id)
if (!pc->inventoryblank(sd)) return 0; // Inventory full
sd->catch_target_class = pet->db[pet_id].class_;
intif->create_pet(sd->status.account_id, sd->status.char_id,
- (short)pet->db[pet_id].class_,
- (short)mob->db(pet->db[pet_id].class_)->lv,
+ 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);
@@ -614,7 +614,7 @@ static int pet_catch_process2(struct map_session_data *sd, int target_id)
* pet_id - Should contain pet id otherwise means failure
* returns true on success
**/
-static bool pet_get_egg(int account_id, short pet_class, int pet_id)
+static bool pet_get_egg(int account_id, int pet_class, int pet_id)
{
struct map_session_data *sd;
struct item tmp_item;
diff --git a/src/map/pet.h b/src/map/pet.h
index 049816804..2508a70a6 100644
--- a/src/map/pet.h
+++ b/src/map/pet.h
@@ -37,7 +37,7 @@ struct pet_evolve_data {
};
struct s_pet_db {
- short class_;
+ int class_;
char name[NAME_LENGTH],jname[NAME_LENGTH];
int itemID;
int EggID;
@@ -160,7 +160,7 @@ struct pet_interface {
int (*select_egg) (struct map_session_data *sd, int egg_index);
int (*catch_process1) (struct map_session_data *sd, int target_class);
int (*catch_process2) (struct map_session_data *sd, int target_id);
- bool (*get_egg) (int account_id, short pet_class, int pet_id );
+ bool (*get_egg) (int account_id, int pet_class, int pet_id );
int (*unequipitem) (struct map_session_data *sd, struct pet_data *pd);
int (*food) (struct map_session_data *sd, struct pet_data *pd);
int (*ai_sub_hard_lootsearch) (struct block_list *bl, va_list ap);
diff --git a/src/map/rodex.c b/src/map/rodex.c
index eea27b6d0..33070c5f8 100644
--- a/src/map/rodex.c
+++ b/src/map/rodex.c
@@ -204,7 +204,7 @@ static void rodex_remove_item(struct map_session_data *sd, int16 idx, int16 amou
/// @param base_level : Reference to return the character base level, if he exists
/// @param char_id : Reference to return the character id, if he exists
/// @param class : Reference to return the character class id, if he exists
-static void rodex_check_player(struct map_session_data *sd, const char *name, int *base_level, int *char_id, short *class)
+static void rodex_check_player(struct map_session_data *sd, const char *name, int *base_level, int *char_id, int *class)
{
intif->rodex_checkname(sd, name);
}
diff --git a/src/map/rodex.h b/src/map/rodex.h
index ddf7cb32b..56cc3a9d1 100644
--- a/src/map/rodex.h
+++ b/src/map/rodex.h
@@ -65,7 +65,7 @@ struct rodex_interface {
void (*refresh) (struct map_session_data *sd, int8 open_type, int64 first_mail_id);
void (*add_item) (struct map_session_data *sd, int16 idx, int16 amount);
void (*remove_item) (struct map_session_data *sd, int16 idx, int16 amount);
- void (*check_player) (struct map_session_data *sd, const char *name, int *base_level, int *char_id, short *class);
+ void (*check_player) (struct map_session_data *sd, const char *name, int *base_level, int *char_id, int *class);
int (*send_mail) (struct map_session_data *sd, const char *receiver_name, const char *body, const char *title, int64 zeny);
void (*send_mail_result) (struct map_session_data *ssd, struct map_session_data *rsd, bool result);
struct rodex_message *(*get_mail) (struct map_session_data *sd, int64 mail_id);
diff --git a/src/map/script.c b/src/map/script.c
index 25bf59839..24cb8e4f4 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -4621,6 +4621,9 @@ static void run_script_main(struct script_state *st)
nullpo_retv(st);
script->attach_state(st);
+ if (st->state != END && Assert_chk(st->state == RUN || st->state == STOP || st->state == RERUNLINE)) {
+ st->state = END;
+ }
nd = map->id2nd(st->oid);
if( nd && nd->bl.m >= 0 )
@@ -7637,6 +7640,65 @@ static BUILDIN(countitem2)
}
/*==========================================
+ * countnameditem(item ID, { <Char Name / ID> })
+ * returns number of named items.
+ *------------------------------------------*/
+static BUILDIN(countnameditem)
+{
+ int count = 0;
+ struct item_data* id = NULL;
+ struct map_session_data *sd;
+
+ if (script_hasdata(st, 3)) {
+ if (script_isstringtype(st, 3)) {
+ // Character name was given
+ sd = script->nick2sd(st, script_getstr(st, 3));
+ } else {
+ // Character ID was given
+ sd = script->charid2sd(st, script_getnum(st, 3));
+ }
+ } else {
+ // Use RID by default if no name was provided
+ sd = script->rid2sd(st);
+ }
+
+ // Player not attached
+ if (sd == NULL) {
+ return true;
+ }
+
+ if (script_isstringtype(st, 2)) {
+ // Get item from DB via item name
+ id = itemdb->search_name(script_getstr(st, 2));
+ } else {
+ // Get item from DB via item ID
+ id = itemdb->exists(script_getnum(st, 2));
+ }
+
+ if (id == NULL) {
+ ShowError("buildin_countnameditem: Invalid item '%s'.\n", script_getstr(st, 2)); // returns string, regardless of what it was
+ script_pushint(st, 0);
+ return false;
+ }
+
+ for (int i = 0; i < MAX_INVENTORY; i++) {
+ if (sd->status.inventory[i].nameid > 0 &&
+ sd->inventory_data[i] != NULL &&
+ sd->status.inventory[i].amount > 0 &&
+ sd->status.inventory[i].nameid == id->nameid &&
+ sd->status.inventory[i].card[0] == CARD0_CREATE &&
+ sd->status.inventory[i].card[2] == sd->status.char_id &&
+ sd->status.inventory[i].card[3] == sd->status.char_id >> 16)
+ {
+ count += sd->status.inventory[i].amount;
+ }
+ }
+
+ script_pushint(st, count);
+ return true;
+}
+
+/*==========================================
* Check if item with this amount can fit in inventory
* Checking : weight, stack amount >32k, slots amount >(MAX_INVENTORY)
* Return
@@ -10671,7 +10733,7 @@ static BUILDIN(makepet)
if (pet_id >= 0 && sd) {
sd->catch_target_class = pet->db[pet_id].class_;
intif->create_pet(sd->status.account_id, sd->status.char_id,
- (short)pet->db[pet_id].class_, (short)mob->db(pet->db[pet_id].class_)->lv,
+ 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);
}
@@ -19705,7 +19767,7 @@ static BUILDIN(getunitdata)
if (bl == NULL) {
ShowWarning("buildin_getunitdata: Error in finding object with given GID %d!\n", script_getnum(st, 2));
- script_pushint(st, 0);
+ script_pushint(st, -1);
return false;
}
@@ -19714,7 +19776,7 @@ static BUILDIN(getunitdata)
/* Type check */
if (type < UDT_TYPE || type >= UDT_MAX) {
ShowError("buildin_getunitdata: Invalid unit data type %d provided.\n", type);
- script_pushint(st, 0);
+ script_pushint(st, -1);
return false;
}
@@ -19722,7 +19784,7 @@ static BUILDIN(getunitdata)
if (type == UDT_MAPIDXY) {
if (data == NULL || !data_isreference(data)) {
ShowWarning("buildin_getunitdata: Error in argument 3. Please provide a reference variable to store values in.\n");
- script_pushint(st, 0);
+ script_pushint(st, -1);
return false;
}
@@ -19732,7 +19794,7 @@ static BUILDIN(getunitdata)
sd = script->rid2sd(st);
if (sd == NULL) {
ShowWarning("buildin_getunitdata: Player not attached! Cannot use player variable %s.\n",name);
- script_pushint(st, 0);
+ script_pushint(st, -1);
return true;// no player attached
}
}
@@ -19802,7 +19864,7 @@ static BUILDIN(getunitdata)
case UDT_DMOTION: script_pushint(st, md->status.dmotion); break;
default:
ShowWarning("buildin_getunitdata: Invalid data type '%s' for Mob unit.\n", udtype);
- script_pushint(st, 0);
+ script_pushint(st, -1);
return false;
}
}
@@ -19859,7 +19921,7 @@ static BUILDIN(getunitdata)
case UDT_INTIMACY: script_pushint(st, hd->homunculus.intimacy); break;
default:
ShowWarning("buildin_getunitdata: Invalid data type '%s' for Homunculus unit.\n", udtype);
- script_pushint(st, 0);
+ script_pushint(st, -1);
return false;
}
}
@@ -19916,7 +19978,7 @@ static BUILDIN(getunitdata)
case UDT_INTIMACY: script_pushint(st, pd->pet.intimate); break;
default:
ShowWarning("buildin_getunitdata: Invalid data type '%s' for Pet unit.\n", udtype);
- script_pushint(st, 0);
+ script_pushint(st, -1);
return false;
}
}
@@ -19972,7 +20034,7 @@ static BUILDIN(getunitdata)
case UDT_LIFETIME: script_pushint(st, mc->mercenary.life_time); break;
default:
ShowWarning("buildin_getunitdata: Invalid data type '%s' for Mercenary unit.\n", udtype);
- script_pushint(st, 0);
+ script_pushint(st, -1);
return false;
}
}
@@ -20026,7 +20088,7 @@ static BUILDIN(getunitdata)
case UDT_MASTERCID: script_pushint(st, ed->elemental.char_id); break;
default:
ShowWarning("buildin_getunitdata: Invalid data type '%s' for Elemental unit.\n", udtype);
- script_pushint(st, 0);
+ script_pushint(st, -1);
return false;
}
}
@@ -20091,14 +20153,14 @@ static BUILDIN(getunitdata)
case UDT_BODY2: script_pushint(st, nd->vd.body_style); break;
default:
ShowWarning("buildin_getunitdata: Invalid data type '%s' for NPC unit.\n", udtype);
- script_pushint(st, 0);
+ script_pushint(st, -1);
return false;
}
}
break;
default:
ShowError("buildin_getunitdata: Unknown object!\n");
- script_pushint(st, 0);
+ script_pushint(st, -1);
return false;
} // end of bl->type switch
@@ -23878,6 +23940,7 @@ static BUILDIN(sellitem)
struct item_data *it;
int i = 0, id = script_getnum(st,2);
int value = 0;
+ int value2 = 0;
int qty = 0;
if( !(nd = map->id2nd(st->oid)) ) {
@@ -23888,17 +23951,43 @@ static BUILDIN(sellitem)
return false;
}
- value = script_hasdata(st,3) ? script_getnum(st, 3) : it->value_buy;
- if( value == -1 )
- value = it->value_buy;
-
- if( !nd->u.scr.shop )
- npc->trader_update(nd->src_id?nd->src_id:nd->bl.id);
- else {/* no need to run this if its empty */
- for( i = 0; i < nd->u.scr.shop->items; i++ ) {
- if( nd->u.scr.shop->item[i].nameid == id )
- break;
+ if (!nd->u.scr.shop) {
+ npc->trader_update(nd->src_id ? nd->src_id : nd->bl.id);
+ if (nd->u.scr.shop->type == NST_BARTER) {
+ if (!script_hasdata(st, 5)) {
+ ShowError("buildin_sellitem: invalid number of parameters for barter-type shop!\n");
+ return false;
+ }
+ value = script_getnum(st, 4);
+ value2 = script_getnum(st, 5);
}
+ } else {/* no need to run this if its empty */
+ if (nd->u.scr.shop->type == NST_BARTER) {
+ if (!script_hasdata(st, 5)) {
+ ShowError("buildin_sellitem: invalid number of parameters for barter-type shop!\n");
+ return false;
+ }
+ value = script_getnum(st, 4);
+ value2 = script_getnum(st, 5);
+ for (i = 0; i < nd->u.scr.shop->items; i++) {
+ const struct npc_item_list *const item = &nd->u.scr.shop->item[i];
+ if (item->nameid == id && item->value == value && item->value2 == value2) {
+ break;
+ }
+ }
+ } else {
+ for (i = 0; i < nd->u.scr.shop->items; i++) {
+ if (nd->u.scr.shop->item[i].nameid == id) {
+ break;
+ }
+ }
+ }
+ }
+
+ if (nd->u.scr.shop->type != NST_BARTER) {
+ value = script_hasdata(st,3) ? script_getnum(st, 3) : it->value_buy;
+ if( value == -1 )
+ value = it->value_buy;
}
if( nd->u.scr.shop->type == NST_MARKET ) {
@@ -23913,19 +24002,29 @@ static BUILDIN(sellitem)
it->name, id, value, (int)(value*0.75), it->value_sell, (int)(it->value_sell*1.24), nd->exname, nd->path);
}
- if( i != nd->u.scr.shop->items ) {
+ if (nd->u.scr.shop->type == NST_BARTER) {
+ qty = script_getnum(st, 3);
+ if (qty < -1 || value <= 0 || value2 <= 0) {
+ ShowError("buildin_sellitem: invalid parameters for barter-type shop!\n");
+ return false;
+ }
+ }
+
+ if (i != nd->u.scr.shop->items) {
nd->u.scr.shop->item[i].value = value;
nd->u.scr.shop->item[i].qty = qty;
- if( nd->u.scr.shop->type == NST_MARKET ) /* has been manually updated, make it reflect on sql */
- npc->market_tosql(nd,i);
+ if (nd->u.scr.shop->type == NST_MARKET) /* has been manually updated, make it reflect on sql */
+ npc->market_tosql(nd, i);
+ else if (nd->u.scr.shop->type == NST_BARTER) /* has been manually updated, make it reflect on sql */
+ npc->barter_tosql(nd, i);
} else {
- for( i = 0; i < nd->u.scr.shop->items; i++ ) {
- if( nd->u.scr.shop->item[i].nameid == 0 )
+ for (i = 0; i < nd->u.scr.shop->items; i++) {
+ if (nd->u.scr.shop->item[i].nameid == 0)
break;
}
- if( i == nd->u.scr.shop->items ) {
- if( nd->u.scr.shop->items == USHRT_MAX ) {
+ if (i == nd->u.scr.shop->items) {
+ if (nd->u.scr.shop->items == USHRT_MAX) {
ShowWarning("buildin_sellitem: Can't add %s (%s/%s), shop list is full!\n", it->name, nd->exname, nd->path);
return false;
}
@@ -23935,6 +24034,7 @@ static BUILDIN(sellitem)
nd->u.scr.shop->item[i].nameid = it->nameid;
nd->u.scr.shop->item[i].value = value;
+ nd->u.scr.shop->item[i].value2 = value2;
nd->u.scr.shop->item[i].qty = qty;
}
@@ -23951,35 +24051,55 @@ static BUILDIN(sellitem)
static BUILDIN(stopselling)
{
struct npc_data *nd;
- int i, id = script_getnum(st,2);
+ int i, id = script_getnum(st, 2);
- if( !(nd = map->id2nd(st->oid)) || !nd->u.scr.shop ) {
+ if (!(nd = map->id2nd(st->oid)) || !nd->u.scr.shop) {
ShowWarning("buildin_stopselling: trying to run without a proper NPC!\n");
return false;
}
- for( i = 0; i < nd->u.scr.shop->items; i++ ) {
- if( nd->u.scr.shop->item[i].nameid == id )
- break;
+ if (nd->u.scr.shop->type == NST_BARTER) {
+ if (!script_hasdata(st, 4)) {
+ ShowError("buildin_stopselling: called with wrong number of arguments\n");
+ return false;
+ }
+ const int id2 = script_getnum(st, 3);
+ const int amount2 = script_getnum(st, 4);
+ for (i = 0; i < nd->u.scr.shop->items; i++) {
+ const struct npc_item_list *const item = &nd->u.scr.shop->item[i];
+ if (item->nameid == id && item->value == id2 && item->value2 == amount2) {
+ break;
+ }
+ }
+ } else {
+ for (i = 0; i < nd->u.scr.shop->items; i++) {
+ if (nd->u.scr.shop->item[i].nameid == id) {
+ break;
+ }
+ }
}
- if( i != nd->u.scr.shop->items ) {
+ if (i != nd->u.scr.shop->items) {
int cursor;
- if( nd->u.scr.shop->type == NST_MARKET )
- npc->market_delfromsql(nd,i);
+ if (nd->u.scr.shop->type == NST_MARKET)
+ npc->market_delfromsql(nd, i);
+ if (nd->u.scr.shop->type == NST_BARTER)
+ npc->barter_delfromsql(nd, i);
nd->u.scr.shop->item[i].nameid = 0;
nd->u.scr.shop->item[i].value = 0;
+ nd->u.scr.shop->item[i].value2 = 0;
nd->u.scr.shop->item[i].qty = 0;
- for( i = 0, cursor = 0; i < nd->u.scr.shop->items; i++ ) {
- if( nd->u.scr.shop->item[i].nameid == 0 )
+ for (i = 0, cursor = 0; i < nd->u.scr.shop->items; i++) {
+ if (nd->u.scr.shop->item[i].nameid == 0)
continue;
- if( cursor != i ) {
+ if (cursor != i) {
nd->u.scr.shop->item[cursor].nameid = nd->u.scr.shop->item[i].nameid;
nd->u.scr.shop->item[cursor].value = nd->u.scr.shop->item[i].value;
+ nd->u.scr.shop->item[cursor].value2 = nd->u.scr.shop->item[i].value2;
nd->u.scr.shop->item[cursor].qty = nd->u.scr.shop->item[i].qty;
}
@@ -24045,7 +24165,8 @@ static BUILDIN(tradertype)
nd->u.scr.shop->item[i].value = 0;
nd->u.scr.shop->item[i].qty = 0;
}
- npc->market_delfromsql(nd,USHRT_MAX);
+ npc->market_delfromsql(nd, INT_MAX);
+ npc->barter_delfromsql(nd, INT_MAX);
}
#if PACKETVER < 20131223
@@ -24054,6 +24175,12 @@ static BUILDIN(tradertype)
script->reportsrc(st);
}
#endif
+#if PACKETVER_MAIN_NUM < 20190116 && PACKETVER_RE_NUM < 20190116 && PACKETVER_ZERO_NUM < 20181226
+ if (type == NST_BARTER) {
+ ShowWarning("buildin_tradertype: NST_BARTER is only available with PACKETVER_ZERO_NUM 20181226 or PACKETVER_MAIN_NUM 20190116 or PACKETVER_RE_NUM 20190116 or newer!\n");
+ script->reportsrc(st);
+ }
+#endif
if( nd->u.scr.shop )
nd->u.scr.shop->type = type;
@@ -24097,8 +24224,8 @@ static BUILDIN(shopcount)
} else if ( !nd->u.scr.shop || !nd->u.scr.shop->items ) {
ShowWarning("buildin_shopcount(%d): trying to use without any items!\n",id);
return false;
- } else if ( nd->u.scr.shop->type != NST_MARKET ) {
- ShowWarning("buildin_shopcount(%d): trying to use on a non-NST_MARKET shop!\n",id);
+ } else if (nd->u.scr.shop->type != NST_MARKET && nd->u.scr.shop->type != NST_BARTER) {
+ ShowWarning("buildin_shopcount(%d): trying to use on a non-NST_MARKET and non-NST_BARTER shop!\n",id);
return false;
}
@@ -25135,6 +25262,7 @@ static void script_parse_builtin(void)
BUILDIN_DEF(rand,"i?"),
BUILDIN_DEF(countitem,"v"),
BUILDIN_DEF(countitem2,"viiiiiii"),
+ BUILDIN_DEF(countnameditem,"v?"),
BUILDIN_DEF(checkweight,"vi*"),
BUILDIN_DEF(checkweight2,"rr"),
BUILDIN_DEF(readparam,"i?"),
@@ -25623,8 +25751,8 @@ static void script_parse_builtin(void)
/* New Shop Support */
BUILDIN_DEF(openshop,"?"),
- BUILDIN_DEF(sellitem,"i??"),
- BUILDIN_DEF(stopselling,"i"),
+ BUILDIN_DEF(sellitem,"i???"),
+ BUILDIN_DEF(stopselling,"i??"),
BUILDIN_DEF(setcurrency,"i?"),
BUILDIN_DEF(tradertype,"i"),
BUILDIN_DEF(purchaseok,""),
@@ -25717,6 +25845,8 @@ static void script_hardcoded_constants(void)
script->set_constant("MAX_REFINE",MAX_REFINE,false, false);
script->set_constant("MAX_MENU_OPTIONS", MAX_MENU_OPTIONS, false, false);
script->set_constant("MAX_MENU_LENGTH", MAX_MENU_LENGTH, false, false);
+ script->set_constant("MOB_CLONE_START", MOB_CLONE_START, false, false);
+ script->set_constant("MOB_CLONE_END", MOB_CLONE_END, false, false);
script->constdb_comment("status options");
script->set_constant("Option_Nothing",OPTION_NOTHING,false, false);
@@ -26105,6 +26235,13 @@ static void script_hardcoded_constants(void)
script->set_constant("EXPAND_INV_RESULT_MISSING_ITEM", EXPAND_INVENTORY_RESULT_MISSING_ITEM, false, false);
script->set_constant("EXPAND_INV_RESULT_MAX_SIZE", EXPAND_INVENTORY_RESULT_MAX_SIZE, false, false);
+ script->constdb_comment("trader type");
+ script->set_constant("NST_ZENY", NST_ZENY, false, false);
+ script->set_constant("NST_CASH", NST_CASH, false, false);
+ script->set_constant("NST_MARKET", NST_MARKET, false, false);
+ script->set_constant("NST_CUSTOM", NST_CUSTOM, false, false);
+ script->set_constant("NST_BARTER", NST_BARTER, false, false);
+
script->constdb_comment("Renewal");
#ifdef RENEWAL
script->set_constant("RENEWAL", 1, false, false);
diff --git a/src/map/skill.c b/src/map/skill.c
index 069db55df..633a73d67 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -2892,14 +2892,16 @@ static int skill_attack(int attack_type, struct block_list *src, struct block_li
}
#endif /* MAGIC_REFLECTION_TYPE */
}
- if(sc && sc->data[SC_MAGICROD] && src == dsrc) {
- int sp = skill->get_sp(skill_id,skill_lv);
+ if (sc && sc->data[SC_MAGICROD] && src == dsrc) {
+ int sp = skill->get_sp(skill_id, skill_lv);
dmg.damage = dmg.damage2 = 0;
dmg.dmg_lv = ATK_MISS; //This will prevent skill additional effect from taking effect. [Skotlex]
sp = sp * sc->data[SC_MAGICROD]->val2 / 100;
- if(skill_id == WZ_WATERBALL && skill_lv > 1)
- sp = sp/((skill_lv|1)*(skill_lv|1)); //Estimate SP cost of a single water-ball
+ if (skill_id == WZ_WATERBALL && skill_lv > 1)
+ sp = sp / ((skill_lv | 1) * (skill_lv | 1)); //Estimate SP cost of a single water-ball
status->heal(bl, 0, sp, STATUS_HEAL_SHOWEFFECT);
+ if (battle->bc->magicrod_type == 1)
+ clif->skill_nodamage(bl, bl, SA_MAGICROD, sc->data[SC_MAGICROD]->val1, 1); // Animation used here in eAthena [Wolfie]
}
}
@@ -7881,8 +7883,9 @@ static int skill_castend_nodamage_id(struct block_list *src, struct block_list *
}
break;
case SA_MAGICROD:
- clif->skill_nodamage(src,src,SA_MAGICROD,skill_lv,1);
- sc_start(src,bl,type,100,skill_lv,skill->get_time(skill_id,skill_lv));
+ if (battle->bc->magicrod_type == 0)
+ clif->skill_nodamage(src, src, SA_MAGICROD, skill_lv, 1); // Animation used here in official [Wolfie]
+ sc_start(src, bl, type, 100, skill_lv, skill->get_time(skill_id, skill_lv));
break;
case SA_AUTOSPELL:
clif->skill_nodamage(src,bl,skill_id,skill_lv,1);
diff --git a/src/map/status.c b/src/map/status.c
index 65b52cbcf..f06bb0330 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -7426,6 +7426,9 @@ static int status_get_sc_def(struct block_list *src, struct block_list *bl, enum
case SC_NETHERWORLD:
tick = max(tick, 4000);
break;
+ case SC_SIREN:
+ tick = max(tick, 10000); // Minimum duration 10s
+ break;
default:
//Skills need to trigger even if the duration is reduced below 1ms
tick = max(tick, 1);
diff --git a/src/plugins/HPMHooking/HPMHooking.Defs.inc b/src/plugins/HPMHooking/HPMHooking.Defs.inc
index 0a186939e..7cc5ef2b1 100644
--- a/src/plugins/HPMHooking/HPMHooking.Defs.inc
+++ b/src/plugins/HPMHooking/HPMHooking.Defs.inc
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2018 Hercules Dev Team
+ * Copyright (C) 2013-2019 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -552,8 +552,8 @@ typedef bool (*HPMHOOK_pre_chr_name_exists) (const char **name, const char **esc
typedef bool (*HPMHOOK_post_chr_name_exists) (bool retVal___, const char *name, const char *esc_name);
typedef int (*HPMHOOK_pre_chr_check_char_name) (const char **name, const char **esc_name);
typedef int (*HPMHOOK_post_chr_check_char_name) (int retVal___, const char *name, const char *esc_name);
-typedef int (*HPMHOOK_pre_chr_make_new_char_sql) (struct char_session_data **sd, const char **name_, int *str, int *agi, int *vit, int *int_, int *dex, int *luk, int *slot, int *hair_color, int *hair_style, short *starting_job, uint8 *sex);
-typedef int (*HPMHOOK_post_chr_make_new_char_sql) (int retVal___, struct char_session_data *sd, const char *name_, int str, int agi, int vit, int int_, int dex, int luk, int slot, int hair_color, int hair_style, short starting_job, uint8 sex);
+typedef int (*HPMHOOK_pre_chr_make_new_char_sql) (struct char_session_data **sd, const char **name_, int *str, int *agi, int *vit, int *int_, int *dex, int *luk, int *slot, int *hair_color, int *hair_style, int *starting_job, uint8 *sex);
+typedef int (*HPMHOOK_post_chr_make_new_char_sql) (int retVal___, struct char_session_data *sd, const char *name_, int str, int agi, int vit, int int_, int dex, int luk, int slot, int hair_color, int hair_style, int starting_job, uint8 sex);
typedef int (*HPMHOOK_pre_chr_divorce_char_sql) (int *partner_id1, int *partner_id2);
typedef int (*HPMHOOK_post_chr_divorce_char_sql) (int retVal___, int partner_id1, int partner_id2);
typedef int (*HPMHOOK_pre_chr_count_users) (void);
@@ -562,6 +562,8 @@ typedef int (*HPMHOOK_pre_chr_mmo_char_tobuf) (uint8 **buffer, struct mmo_charst
typedef int (*HPMHOOK_post_chr_mmo_char_tobuf) (int retVal___, uint8 *buffer, struct mmo_charstatus *p);
typedef void (*HPMHOOK_pre_chr_send_HC_ACK_CHARINFO_PER_PAGE) (int *fd, struct char_session_data **sd);
typedef void (*HPMHOOK_post_chr_send_HC_ACK_CHARINFO_PER_PAGE) (int fd, struct char_session_data *sd);
+typedef void (*HPMHOOK_pre_chr_send_HC_ACK_CHARINFO_PER_PAGE_tail) (int *fd, struct char_session_data **sd);
+typedef void (*HPMHOOK_post_chr_send_HC_ACK_CHARINFO_PER_PAGE_tail) (int fd, struct char_session_data *sd);
typedef void (*HPMHOOK_pre_chr_mmo_char_send_ban_list) (int *fd, struct char_session_data **sd);
typedef void (*HPMHOOK_post_chr_mmo_char_send_ban_list) (int fd, struct char_session_data *sd);
typedef void (*HPMHOOK_pre_chr_mmo_char_send_slots_info) (int *fd, struct char_session_data **sd);
@@ -2560,8 +2562,8 @@ typedef void (*HPMHOOK_pre_clif_pRodexOpenMailbox) (int *fd, struct map_session_
typedef void (*HPMHOOK_post_clif_pRodexOpenMailbox) (int fd, struct map_session_data *sd);
typedef void (*HPMHOOK_pre_clif_pRodexCheckName) (int *fd, struct map_session_data **sd);
typedef void (*HPMHOOK_post_clif_pRodexCheckName) (int fd, struct map_session_data *sd);
-typedef void (*HPMHOOK_pre_clif_rodex_checkname_result) (struct map_session_data **sd, int *char_id, short *class_, int *base_level, const char **name);
-typedef void (*HPMHOOK_post_clif_rodex_checkname_result) (struct map_session_data *sd, int char_id, short class_, int base_level, const char *name);
+typedef void (*HPMHOOK_pre_clif_rodex_checkname_result) (struct map_session_data **sd, int *char_id, int *class_, int *base_level, const char **name);
+typedef void (*HPMHOOK_post_clif_rodex_checkname_result) (struct map_session_data *sd, int char_id, int class_, int base_level, const char *name);
typedef void (*HPMHOOK_pre_clif_pRodexDeleteMail) (int *fd, struct map_session_data **sd);
typedef void (*HPMHOOK_post_clif_pRodexDeleteMail) (int fd, struct map_session_data *sd);
typedef void (*HPMHOOK_pre_clif_rodex_delete_mail) (struct map_session_data **sd, int8 *opentype, int64 *mail_id);
@@ -2658,6 +2660,14 @@ typedef bool (*HPMHOOK_pre_clif_enchant_equipment) (struct map_session_data **sd
typedef bool (*HPMHOOK_post_clif_enchant_equipment) (bool retVal___, struct map_session_data *sd, enum equip_pos pos, int cardSlot, int cardId);
typedef void (*HPMHOOK_pre_clif_pReqRemainTime) (int *fd, struct map_session_data **sd);
typedef void (*HPMHOOK_post_clif_pReqRemainTime) (int fd, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_npc_barter_open) (struct map_session_data **sd, struct npc_data **nd);
+typedef void (*HPMHOOK_post_clif_npc_barter_open) (struct map_session_data *sd, struct npc_data *nd);
+typedef void (*HPMHOOK_pre_clif_pNPCBarterClosed) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_pNPCBarterClosed) (int fd, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_pNPCBarterPurchase) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_pNPCBarterPurchase) (int fd, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_pClientVersion) (int *fd, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_pClientVersion) (int fd, struct map_session_data *sd);
#endif // MAP_CLIF_H
#ifdef COMMON_CORE_H /* cmdline */
typedef void (*HPMHOOK_pre_cmdline_init) (void);
@@ -2922,8 +2932,8 @@ typedef int (*HPMHOOK_pre_guild_check_alliance) (int *guild_id1, int *guild_id2,
typedef int (*HPMHOOK_post_guild_check_alliance) (int retVal___, int guild_id1, int guild_id2, int flag);
typedef int (*HPMHOOK_pre_guild_send_memberinfoshort) (struct map_session_data **sd, int *online);
typedef int (*HPMHOOK_post_guild_send_memberinfoshort) (int retVal___, struct map_session_data *sd, int online);
-typedef int (*HPMHOOK_pre_guild_recv_memberinfoshort) (int *guild_id, int *account_id, int *char_id, int *online, int *lv, int16 *class, uint32 *last_login);
-typedef int (*HPMHOOK_post_guild_recv_memberinfoshort) (int retVal___, int guild_id, int account_id, int char_id, int online, int lv, int16 class, uint32 last_login);
+typedef int (*HPMHOOK_pre_guild_recv_memberinfoshort) (int *guild_id, int *account_id, int *char_id, int *online, int *lv, int *class, uint32 *last_login);
+typedef int (*HPMHOOK_post_guild_recv_memberinfoshort) (int retVal___, int guild_id, int account_id, int char_id, int online, int lv, int class, uint32 last_login);
typedef int (*HPMHOOK_pre_guild_change_memberposition) (int *guild_id, int *account_id, int *char_id, short *idx);
typedef int (*HPMHOOK_post_guild_change_memberposition) (int retVal___, int guild_id, int account_id, int char_id, short idx);
typedef int (*HPMHOOK_pre_guild_memberposition_changed) (struct guild **g, int *idx, int *pos);
@@ -3082,8 +3092,8 @@ typedef void (*HPMHOOK_pre_homun_skillup) (struct homun_data **hd, uint16 *skill
typedef void (*HPMHOOK_post_homun_skillup) (struct homun_data *hd, uint16 skill_id);
typedef bool (*HPMHOOK_pre_homun_levelup) (struct homun_data **hd);
typedef bool (*HPMHOOK_post_homun_levelup) (bool retVal___, struct homun_data *hd);
-typedef int (*HPMHOOK_pre_homun_change_class) (struct homun_data **hd, short *class_);
-typedef int (*HPMHOOK_post_homun_change_class) (int retVal___, struct homun_data *hd, short class_);
+typedef int (*HPMHOOK_pre_homun_change_class) (struct homun_data **hd, int *class_);
+typedef int (*HPMHOOK_post_homun_change_class) (int retVal___, struct homun_data *hd, int class_);
typedef bool (*HPMHOOK_pre_homun_evolve) (struct homun_data **hd);
typedef bool (*HPMHOOK_post_homun_evolve) (bool retVal___, struct homun_data *hd);
typedef bool (*HPMHOOK_pre_homun_mutate) (struct homun_data **hd, int *homun_id);
@@ -3296,8 +3306,8 @@ typedef bool (*HPMHOOK_pre_inter_guild_add_member) (int *guild_id, const struct
typedef bool (*HPMHOOK_post_inter_guild_add_member) (bool retVal___, int guild_id, const struct guild_member *member, int map_fd);
typedef bool (*HPMHOOK_pre_inter_guild_leave) (int *guild_id, int *account_id, int *char_id, int *flag, const char **mes, int *map_fd);
typedef bool (*HPMHOOK_post_inter_guild_leave) (bool retVal___, int guild_id, int account_id, int char_id, int flag, const char *mes, int map_fd);
-typedef bool (*HPMHOOK_pre_inter_guild_update_member_info_short) (int *guild_id, int *account_id, int *char_id, int *online, int *lv, int16 *class);
-typedef bool (*HPMHOOK_post_inter_guild_update_member_info_short) (bool retVal___, int guild_id, int account_id, int char_id, int online, int lv, int16 class);
+typedef bool (*HPMHOOK_pre_inter_guild_update_member_info_short) (int *guild_id, int *account_id, int *char_id, int *online, int *lv, int *class);
+typedef bool (*HPMHOOK_post_inter_guild_update_member_info_short) (bool retVal___, int guild_id, int account_id, int char_id, int online, int lv, int class);
typedef bool (*HPMHOOK_pre_inter_guild_update_member_info) (int *guild_id, int *account_id, int *char_id, int *type, const char **data, int *len);
typedef bool (*HPMHOOK_post_inter_guild_update_member_info) (bool retVal___, int guild_id, int account_id, int char_id, int type, const char *data, int len);
typedef bool (*HPMHOOK_pre_inter_guild_disband) (int *guild_id);
@@ -3490,8 +3500,8 @@ typedef int (*HPMHOOK_pre_inter_pet_delete_) (int *pet_id);
typedef int (*HPMHOOK_post_inter_pet_delete_) (int retVal___, int pet_id);
typedef int (*HPMHOOK_pre_inter_pet_parse_frommap) (int *fd);
typedef int (*HPMHOOK_post_inter_pet_parse_frommap) (int retVal___, int fd);
-typedef struct s_pet* (*HPMHOOK_pre_inter_pet_create) (int *account_id, int *char_id, short *pet_class, short *pet_lv, int *pet_egg_id, int *pet_equip, short *intimate, short *hungry, char *rename_flag, char *incubate, const char **pet_name);
-typedef struct s_pet* (*HPMHOOK_post_inter_pet_create) (struct s_pet* retVal___, int account_id, int char_id, short pet_class, short pet_lv, int pet_egg_id, int pet_equip, short intimate, short hungry, char rename_flag, char incubate, const char *pet_name);
+typedef struct s_pet* (*HPMHOOK_pre_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);
+typedef struct s_pet* (*HPMHOOK_post_inter_pet_create) (struct s_pet* retVal___, 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);
typedef struct s_pet* (*HPMHOOK_pre_inter_pet_load) (int *account_id, int *char_id, int *pet_id);
typedef struct s_pet* (*HPMHOOK_post_inter_pet_load) (struct s_pet* retVal___, int account_id, int char_id, int pet_id);
#endif // CHAR_INT_PET_H
@@ -3520,8 +3530,8 @@ typedef int (*HPMHOOK_pre_inter_rodex_fromsql) (int *char_id, int *account_id, i
typedef int (*HPMHOOK_post_inter_rodex_fromsql) (int retVal___, int char_id, int account_id, int8 opentype, int64 mail_id, struct rodex_maillist *mails);
typedef bool (*HPMHOOK_pre_inter_rodex_hasnew) (int *char_id, int *account_id);
typedef bool (*HPMHOOK_post_inter_rodex_hasnew) (bool retVal___, int char_id, int account_id);
-typedef bool (*HPMHOOK_pre_inter_rodex_checkname) (const char **name, int **target_char_id, short **target_class, int **target_level);
-typedef bool (*HPMHOOK_post_inter_rodex_checkname) (bool retVal___, const char *name, int *target_char_id, short *target_class, int *target_level);
+typedef bool (*HPMHOOK_pre_inter_rodex_checkname) (const char **name, int **target_char_id, int **target_class, int **target_level);
+typedef bool (*HPMHOOK_post_inter_rodex_checkname) (bool retVal___, const char *name, int *target_char_id, int *target_class, int *target_level);
typedef int64 (*HPMHOOK_pre_inter_rodex_savemessage) (struct rodex_message **msg);
typedef int64 (*HPMHOOK_post_inter_rodex_savemessage) (int64 retVal___, struct rodex_message *msg);
typedef bool (*HPMHOOK_pre_inter_rodex_updatemail) (int64 *mail_id, int8 *flag);
@@ -3552,8 +3562,8 @@ typedef bool (*HPMHOOK_post_inter_storage_retrieve_bound_items) (bool retVal___,
#ifdef MAP_INTIF_H /* intif */
typedef int (*HPMHOOK_pre_intif_parse) (int *fd);
typedef int (*HPMHOOK_post_intif_parse) (int retVal___, int fd);
-typedef int (*HPMHOOK_pre_intif_create_pet) (int *account_id, int *char_id, short *pet_type, short *pet_lv, int *pet_egg_id, int *pet_equip, short *intimate, short *hungry, char *rename_flag, char *incubate, char **pet_name);
-typedef int (*HPMHOOK_post_intif_create_pet) (int retVal___, int account_id, int char_id, short pet_type, short pet_lv, int pet_egg_id, int pet_equip, short intimate, short hungry, char rename_flag, char incubate, char *pet_name);
+typedef int (*HPMHOOK_pre_intif_create_pet) (int *account_id, int *char_id, int *pet_type, int *pet_lv, int *pet_egg_id, int *pet_equip, short *intimate, short *hungry, char *rename_flag, char *incubate, char **pet_name);
+typedef int (*HPMHOOK_post_intif_create_pet) (int retVal___, int account_id, int char_id, int pet_type, int pet_lv, int pet_egg_id, int pet_equip, short intimate, short hungry, char rename_flag, char incubate, char *pet_name);
typedef int (*HPMHOOK_pre_intif_broadcast) (const char **mes, int *len, int *type);
typedef int (*HPMHOOK_post_intif_broadcast) (int retVal___, const char *mes, int len, int type);
typedef int (*HPMHOOK_pre_intif_broadcast2) (const char **mes, int *len, unsigned int *fontColor, short *fontType, short *fontSize, short *fontAlign, short *fontY);
@@ -3602,8 +3612,8 @@ typedef int (*HPMHOOK_pre_intif_guild_addmember) (int *guild_id, struct guild_me
typedef int (*HPMHOOK_post_intif_guild_addmember) (int retVal___, int guild_id, struct guild_member *m);
typedef int (*HPMHOOK_pre_intif_guild_leave) (int *guild_id, int *account_id, int *char_id, int *flag, const char **mes);
typedef int (*HPMHOOK_post_intif_guild_leave) (int retVal___, int guild_id, int account_id, int char_id, int flag, const char *mes);
-typedef int (*HPMHOOK_pre_intif_guild_memberinfoshort) (int *guild_id, int *account_id, int *char_id, int *online, int *lv, int16 *class);
-typedef int (*HPMHOOK_post_intif_guild_memberinfoshort) (int retVal___, int guild_id, int account_id, int char_id, int online, int lv, int16 class);
+typedef int (*HPMHOOK_pre_intif_guild_memberinfoshort) (int *guild_id, int *account_id, int *char_id, int *online, int *lv, int *class);
+typedef int (*HPMHOOK_post_intif_guild_memberinfoshort) (int retVal___, int guild_id, int account_id, int char_id, int online, int lv, int class);
typedef int (*HPMHOOK_pre_intif_guild_break) (int *guild_id);
typedef int (*HPMHOOK_post_intif_guild_break) (int retVal___, int guild_id);
typedef int (*HPMHOOK_pre_intif_guild_message) (int *guild_id, int *account_id, const char **mes, int *len);
@@ -4040,6 +4050,8 @@ typedef bool (*HPMHOOK_pre_itemdb_lookup_const) (const struct config_setting_t *
typedef bool (*HPMHOOK_post_itemdb_lookup_const) (bool retVal___, const struct config_setting_t *it, const char *name, int *value);
typedef bool (*HPMHOOK_pre_itemdb_lookup_const_mask) (const struct config_setting_t **it, const char **name, int **value);
typedef bool (*HPMHOOK_post_itemdb_lookup_const_mask) (bool retVal___, const struct config_setting_t *it, const char *name, int *value);
+typedef int (*HPMHOOK_pre_itemdb_addname_sub) (union DBKey *key, struct DBData **data, va_list ap);
+typedef int (*HPMHOOK_post_itemdb_addname_sub) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
#endif // MAP_ITEMDB_H
#ifdef LOGIN_LOGIN_H /* lchrif */
typedef void (*HPMHOOK_pre_lchrif_server_init) (int *id);
@@ -4870,8 +4882,8 @@ typedef int (*HPMHOOK_pre_mapif_parse_GuildAddMember) (int *fd, int *guild_id, c
typedef int (*HPMHOOK_post_mapif_parse_GuildAddMember) (int retVal___, int fd, int guild_id, const struct guild_member *m);
typedef int (*HPMHOOK_pre_mapif_parse_GuildLeave) (int *fd, int *guild_id, int *account_id, int *char_id, int *flag, const char **mes);
typedef int (*HPMHOOK_post_mapif_parse_GuildLeave) (int retVal___, int fd, int guild_id, int account_id, int char_id, int flag, const char *mes);
-typedef int (*HPMHOOK_pre_mapif_parse_GuildChangeMemberInfoShort) (int *fd, int *guild_id, int *account_id, int *char_id, int *online, int *lv, int16 *class);
-typedef int (*HPMHOOK_post_mapif_parse_GuildChangeMemberInfoShort) (int retVal___, int fd, int guild_id, int account_id, int char_id, int online, int lv, int16 class);
+typedef int (*HPMHOOK_pre_mapif_parse_GuildChangeMemberInfoShort) (int *fd, int *guild_id, int *account_id, int *char_id, int *online, int *lv, int *class);
+typedef int (*HPMHOOK_post_mapif_parse_GuildChangeMemberInfoShort) (int retVal___, int fd, int guild_id, int account_id, int char_id, int online, int lv, int class);
typedef int (*HPMHOOK_pre_mapif_parse_BreakGuild) (int *fd, int *guild_id);
typedef int (*HPMHOOK_post_mapif_parse_BreakGuild) (int retVal___, int fd, int guild_id);
typedef int (*HPMHOOK_pre_mapif_parse_GuildMessage) (int *fd, int *guild_id, int *account_id, const char **mes, int *len);
@@ -5036,8 +5048,8 @@ typedef void (*HPMHOOK_pre_mapif_rodex_send) (int *fd, int *sender_id, int *rece
typedef void (*HPMHOOK_post_mapif_rodex_send) (int fd, int sender_id, int receiver_id, int receiver_accountid, bool result);
typedef void (*HPMHOOK_pre_mapif_parse_rodex_checkname) (int *fd);
typedef void (*HPMHOOK_post_mapif_parse_rodex_checkname) (int fd);
-typedef void (*HPMHOOK_pre_mapif_rodex_checkname) (int *fd, int *reqchar_id, int *target_char_id, short *target_class, int *target_level, char **name);
-typedef void (*HPMHOOK_post_mapif_rodex_checkname) (int fd, int reqchar_id, int target_char_id, short target_class, int target_level, char *name);
+typedef void (*HPMHOOK_pre_mapif_rodex_checkname) (int *fd, int *reqchar_id, int *target_char_id, int *target_class, int *target_level, char **name);
+typedef void (*HPMHOOK_post_mapif_rodex_checkname) (int fd, int reqchar_id, int target_char_id, int target_class, int target_level, char *name);
typedef int (*HPMHOOK_pre_mapif_load_guild_storage) (int *fd, int *account_id, int *guild_id, char *flag);
typedef int (*HPMHOOK_post_mapif_load_guild_storage) (int retVal___, int fd, int account_id, int guild_id, char flag);
typedef int (*HPMHOOK_pre_mapif_save_guild_storage_ack) (int *fd, int *account_id, int *guild_id, int *fail);
@@ -5604,8 +5616,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, int16 *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, int16 class_);
+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_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);
@@ -5644,8 +5656,8 @@ typedef void (*HPMHOOK_pre_npc_movenpc) (struct npc_data **nd, int16 *x, int16 *
typedef void (*HPMHOOK_post_npc_movenpc) (struct npc_data *nd, int16 x, int16 y);
typedef void (*HPMHOOK_pre_npc_setdisplayname) (struct npc_data **nd, const char **newname);
typedef void (*HPMHOOK_post_npc_setdisplayname) (struct npc_data *nd, const char *newname);
-typedef void (*HPMHOOK_pre_npc_setclass) (struct npc_data **nd, short *class_);
-typedef void (*HPMHOOK_post_npc_setclass) (struct npc_data *nd, short class_);
+typedef void (*HPMHOOK_pre_npc_setclass) (struct npc_data **nd, int *class_);
+typedef void (*HPMHOOK_post_npc_setclass) (struct npc_data *nd, int class_);
typedef int (*HPMHOOK_pre_npc_do_atcmd_event) (struct map_session_data **sd, const char **command, const char **message, const char **eventname);
typedef int (*HPMHOOK_post_npc_do_atcmd_event) (int retVal___, struct map_session_data *sd, const char *command, const char *message, const char *eventname);
typedef const char* (*HPMHOOK_pre_npc_parse_function) (const char **w1, const char **w2, const char **w3, const char **w4, const char **start, const char **buffer, const char **filepath, int **retval);
@@ -5686,16 +5698,26 @@ typedef void (*HPMHOOK_pre_npc_trader_update) (int *master);
typedef void (*HPMHOOK_post_npc_trader_update) (int master);
typedef int (*HPMHOOK_pre_npc_market_buylist) (struct map_session_data **sd, struct itemlist **item_list);
typedef int (*HPMHOOK_post_npc_market_buylist) (int retVal___, struct map_session_data *sd, struct itemlist *item_list);
+typedef int (*HPMHOOK_pre_npc_barter_buylist) (struct map_session_data **sd, struct barteritemlist **item_list);
+typedef int (*HPMHOOK_post_npc_barter_buylist) (int retVal___, struct map_session_data *sd, struct barteritemlist *item_list);
typedef bool (*HPMHOOK_pre_npc_trader_open) (struct map_session_data **sd, struct npc_data **nd);
typedef bool (*HPMHOOK_post_npc_trader_open) (bool retVal___, struct map_session_data *sd, struct npc_data *nd);
typedef void (*HPMHOOK_pre_npc_market_fromsql) (void);
typedef void (*HPMHOOK_post_npc_market_fromsql) (void);
-typedef void (*HPMHOOK_pre_npc_market_tosql) (struct npc_data **nd, unsigned short *index);
-typedef void (*HPMHOOK_post_npc_market_tosql) (struct npc_data *nd, unsigned short index);
-typedef void (*HPMHOOK_pre_npc_market_delfromsql) (struct npc_data **nd, unsigned short *index);
-typedef void (*HPMHOOK_post_npc_market_delfromsql) (struct npc_data *nd, unsigned short index);
-typedef void (*HPMHOOK_pre_npc_market_delfromsql_sub) (const char **npcname, unsigned short *index);
-typedef void (*HPMHOOK_post_npc_market_delfromsql_sub) (const char *npcname, unsigned short index);
+typedef void (*HPMHOOK_pre_npc_market_tosql) (struct npc_data **nd, int *index);
+typedef void (*HPMHOOK_post_npc_market_tosql) (struct npc_data *nd, int index);
+typedef void (*HPMHOOK_pre_npc_market_delfromsql) (struct npc_data **nd, int *index);
+typedef void (*HPMHOOK_post_npc_market_delfromsql) (struct npc_data *nd, int index);
+typedef void (*HPMHOOK_pre_npc_market_delfromsql_sub) (const char **npcname, int *index);
+typedef void (*HPMHOOK_post_npc_market_delfromsql_sub) (const char *npcname, int index);
+typedef void (*HPMHOOK_pre_npc_barter_fromsql) (void);
+typedef void (*HPMHOOK_post_npc_barter_fromsql) (void);
+typedef void (*HPMHOOK_pre_npc_barter_tosql) (struct npc_data **nd, int *index);
+typedef void (*HPMHOOK_post_npc_barter_tosql) (struct npc_data *nd, int index);
+typedef void (*HPMHOOK_pre_npc_barter_delfromsql) (struct npc_data **nd, int *index);
+typedef void (*HPMHOOK_post_npc_barter_delfromsql) (struct npc_data *nd, int index);
+typedef void (*HPMHOOK_pre_npc_barter_delfromsql_sub) (const char **npcname, int *itemId, int *itemId2, int *amount2);
+typedef void (*HPMHOOK_post_npc_barter_delfromsql_sub) (const char *npcname, int itemId, int itemId2, int amount2);
typedef bool (*HPMHOOK_pre_npc_db_checkid) (const int *id);
typedef bool (*HPMHOOK_post_npc_db_checkid) (bool retVal___, const int id);
typedef void (*HPMHOOK_pre_npc_refresh) (struct npc_data **nd);
@@ -6152,10 +6174,10 @@ typedef void (*HPMHOOK_pre_pc_setstand) (struct map_session_data **sd);
typedef void (*HPMHOOK_post_pc_setstand) (struct map_session_data *sd);
typedef int (*HPMHOOK_pre_pc_candrop) (struct map_session_data **sd, struct item **item);
typedef int (*HPMHOOK_post_pc_candrop) (int retVal___, struct map_session_data *sd, struct item *item);
-typedef int (*HPMHOOK_pre_pc_jobid2mapid) (int16 *class);
-typedef int (*HPMHOOK_post_pc_jobid2mapid) (int retVal___, int16 class);
-typedef int (*HPMHOOK_pre_pc_mapid2jobid) (unsigned short *class_, int *sex);
-typedef int (*HPMHOOK_post_pc_mapid2jobid) (int retVal___, unsigned short class_, int sex);
+typedef int (*HPMHOOK_pre_pc_jobid2mapid) (int *class);
+typedef int (*HPMHOOK_post_pc_jobid2mapid) (int retVal___, int class);
+typedef int (*HPMHOOK_pre_pc_mapid2jobid) (unsigned int *class_, int *sex);
+typedef int (*HPMHOOK_post_pc_mapid2jobid) (int retVal___, unsigned int class_, int sex);
typedef const char* (*HPMHOOK_pre_pc_job_name) (int *class);
typedef const char* (*HPMHOOK_post_pc_job_name) (const char* retVal___, int class);
typedef void (*HPMHOOK_pre_pc_setinvincibletimer) (struct map_session_data **sd, int *val);
@@ -6396,8 +6418,8 @@ typedef int (*HPMHOOK_pre_pet_catch_process1) (struct map_session_data **sd, int
typedef int (*HPMHOOK_post_pet_catch_process1) (int retVal___, struct map_session_data *sd, int target_class);
typedef int (*HPMHOOK_pre_pet_catch_process2) (struct map_session_data **sd, int *target_id);
typedef int (*HPMHOOK_post_pet_catch_process2) (int retVal___, struct map_session_data *sd, int target_id);
-typedef bool (*HPMHOOK_pre_pet_get_egg) (int *account_id, short *pet_class, int *pet_id);
-typedef bool (*HPMHOOK_post_pet_get_egg) (bool retVal___, int account_id, short pet_class, int pet_id);
+typedef bool (*HPMHOOK_pre_pet_get_egg) (int *account_id, int *pet_class, int *pet_id);
+typedef bool (*HPMHOOK_post_pet_get_egg) (bool retVal___, int account_id, int pet_class, int pet_id);
typedef int (*HPMHOOK_pre_pet_unequipitem) (struct map_session_data **sd, struct pet_data **pd);
typedef int (*HPMHOOK_post_pet_unequipitem) (int retVal___, struct map_session_data *sd, struct pet_data *pd);
typedef int (*HPMHOOK_pre_pet_food) (struct map_session_data **sd, struct pet_data **pd);
@@ -6570,8 +6592,8 @@ typedef void (*HPMHOOK_pre_rodex_add_item) (struct map_session_data **sd, int16
typedef void (*HPMHOOK_post_rodex_add_item) (struct map_session_data *sd, int16 idx, int16 amount);
typedef void (*HPMHOOK_pre_rodex_remove_item) (struct map_session_data **sd, int16 *idx, int16 *amount);
typedef void (*HPMHOOK_post_rodex_remove_item) (struct map_session_data *sd, int16 idx, int16 amount);
-typedef void (*HPMHOOK_pre_rodex_check_player) (struct map_session_data **sd, const char **name, int **base_level, int **char_id, short **class);
-typedef void (*HPMHOOK_post_rodex_check_player) (struct map_session_data *sd, const char *name, int *base_level, int *char_id, short *class);
+typedef void (*HPMHOOK_pre_rodex_check_player) (struct map_session_data **sd, const char **name, int **base_level, int **char_id, int **class);
+typedef void (*HPMHOOK_post_rodex_check_player) (struct map_session_data *sd, const char *name, int *base_level, int *char_id, int *class);
typedef int (*HPMHOOK_pre_rodex_send_mail) (struct map_session_data **sd, const char **receiver_name, const char **body, const char **title, int64 *zeny);
typedef int (*HPMHOOK_post_rodex_send_mail) (int retVal___, struct map_session_data *sd, const char *receiver_name, const char *body, const char *title, int64 zeny);
typedef void (*HPMHOOK_pre_rodex_send_mail_result) (struct map_session_data **ssd, struct map_session_data **rsd, bool *result);
diff --git a/src/plugins/HPMHooking/HPMHooking_char.HPMHooksCore.inc b/src/plugins/HPMHooking/HPMHooking_char.HPMHooksCore.inc
index 3bbfc8670..a8b4860f3 100644
--- a/src/plugins/HPMHooking/HPMHooking_char.HPMHooksCore.inc
+++ b/src/plugins/HPMHooking/HPMHooking_char.HPMHooksCore.inc
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2018 Hercules Dev Team
+ * Copyright (C) 2013-2019 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -92,6 +92,8 @@ struct {
struct HPMHookPoint *HP_chr_mmo_char_tobuf_post;
struct HPMHookPoint *HP_chr_send_HC_ACK_CHARINFO_PER_PAGE_pre;
struct HPMHookPoint *HP_chr_send_HC_ACK_CHARINFO_PER_PAGE_post;
+ struct HPMHookPoint *HP_chr_send_HC_ACK_CHARINFO_PER_PAGE_tail_pre;
+ struct HPMHookPoint *HP_chr_send_HC_ACK_CHARINFO_PER_PAGE_tail_post;
struct HPMHookPoint *HP_chr_mmo_char_send_ban_list_pre;
struct HPMHookPoint *HP_chr_mmo_char_send_ban_list_post;
struct HPMHookPoint *HP_chr_mmo_char_send_slots_info_pre;
@@ -1727,6 +1729,8 @@ struct {
int HP_chr_mmo_char_tobuf_post;
int HP_chr_send_HC_ACK_CHARINFO_PER_PAGE_pre;
int HP_chr_send_HC_ACK_CHARINFO_PER_PAGE_post;
+ int HP_chr_send_HC_ACK_CHARINFO_PER_PAGE_tail_pre;
+ int HP_chr_send_HC_ACK_CHARINFO_PER_PAGE_tail_post;
int HP_chr_mmo_char_send_ban_list_pre;
int HP_chr_mmo_char_send_ban_list_post;
int HP_chr_mmo_char_send_slots_info_pre;
diff --git a/src/plugins/HPMHooking/HPMHooking_char.HookingPoints.inc b/src/plugins/HPMHooking/HPMHooking_char.HookingPoints.inc
index 96f210386..56c5bcfb7 100644
--- a/src/plugins/HPMHooking/HPMHooking_char.HookingPoints.inc
+++ b/src/plugins/HPMHooking/HPMHooking_char.HookingPoints.inc
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2018 Hercules Dev Team
+ * Copyright (C) 2013-2019 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -61,6 +61,7 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(chr->count_users, HP_chr_count_users) },
{ HP_POP(chr->mmo_char_tobuf, HP_chr_mmo_char_tobuf) },
{ HP_POP(chr->send_HC_ACK_CHARINFO_PER_PAGE, HP_chr_send_HC_ACK_CHARINFO_PER_PAGE) },
+ { HP_POP(chr->send_HC_ACK_CHARINFO_PER_PAGE_tail, HP_chr_send_HC_ACK_CHARINFO_PER_PAGE_tail) },
{ HP_POP(chr->mmo_char_send_ban_list, HP_chr_mmo_char_send_ban_list) },
{ HP_POP(chr->mmo_char_send_slots_info, HP_chr_mmo_char_send_slots_info) },
{ HP_POP(chr->mmo_char_send_characters, HP_chr_mmo_char_send_characters) },
diff --git a/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc
index dc0256ff3..0bd61ba15 100644
--- a/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc
+++ b/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2018 Hercules Dev Team
+ * Copyright (C) 2013-2019 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -798,11 +798,11 @@ int HP_chr_check_char_name(const char *name, const char *esc_name) {
}
return retVal___;
}
-int HP_chr_make_new_char_sql(struct char_session_data *sd, const char *name_, int str, int agi, int vit, int int_, int dex, int luk, int slot, int hair_color, int hair_style, short starting_job, uint8 sex) {
+int HP_chr_make_new_char_sql(struct char_session_data *sd, const char *name_, int str, int agi, int vit, int int_, int dex, int luk, int slot, int hair_color, int hair_style, int starting_job, uint8 sex) {
int hIndex = 0;
int retVal___ = 0;
if (HPMHooks.count.HP_chr_make_new_char_sql_pre > 0) {
- int (*preHookFunc) (struct char_session_data **sd, const char **name_, int *str, int *agi, int *vit, int *int_, int *dex, int *luk, int *slot, int *hair_color, int *hair_style, short *starting_job, uint8 *sex);
+ int (*preHookFunc) (struct char_session_data **sd, const char **name_, int *str, int *agi, int *vit, int *int_, int *dex, int *luk, int *slot, int *hair_color, int *hair_style, int *starting_job, uint8 *sex);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_make_new_char_sql_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_chr_make_new_char_sql_pre[hIndex].func;
@@ -817,7 +817,7 @@ int HP_chr_make_new_char_sql(struct char_session_data *sd, const char *name_, in
retVal___ = HPMHooks.source.chr.make_new_char_sql(sd, name_, str, agi, vit, int_, dex, luk, slot, hair_color, hair_style, starting_job, sex);
}
if (HPMHooks.count.HP_chr_make_new_char_sql_post > 0) {
- int (*postHookFunc) (int retVal___, struct char_session_data *sd, const char *name_, int str, int agi, int vit, int int_, int dex, int luk, int slot, int hair_color, int hair_style, short starting_job, uint8 sex);
+ int (*postHookFunc) (int retVal___, struct char_session_data *sd, const char *name_, int str, int agi, int vit, int int_, int dex, int luk, int slot, int hair_color, int hair_style, int starting_job, uint8 sex);
for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_make_new_char_sql_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_chr_make_new_char_sql_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, name_, str, agi, vit, int_, dex, luk, slot, hair_color, hair_style, starting_job, sex);
@@ -932,6 +932,32 @@ void HP_chr_send_HC_ACK_CHARINFO_PER_PAGE(int fd, struct char_session_data *sd)
}
return;
}
+void HP_chr_send_HC_ACK_CHARINFO_PER_PAGE_tail(int fd, struct char_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_chr_send_HC_ACK_CHARINFO_PER_PAGE_tail_pre > 0) {
+ void (*preHookFunc) (int *fd, struct char_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_send_HC_ACK_CHARINFO_PER_PAGE_tail_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_chr_send_HC_ACK_CHARINFO_PER_PAGE_tail_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.chr.send_HC_ACK_CHARINFO_PER_PAGE_tail(fd, sd);
+ }
+ if (HPMHooks.count.HP_chr_send_HC_ACK_CHARINFO_PER_PAGE_tail_post > 0) {
+ void (*postHookFunc) (int fd, struct char_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_chr_send_HC_ACK_CHARINFO_PER_PAGE_tail_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_chr_send_HC_ACK_CHARINFO_PER_PAGE_tail_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
void HP_chr_mmo_char_send_ban_list(int fd, struct char_session_data *sd) {
int hIndex = 0;
if (HPMHooks.count.HP_chr_mmo_char_send_ban_list_pre > 0) {
@@ -7005,11 +7031,11 @@ bool HP_inter_guild_leave(int guild_id, int account_id, int char_id, int flag, c
}
return retVal___;
}
-bool HP_inter_guild_update_member_info_short(int guild_id, int account_id, int char_id, int online, int lv, int16 class) {
+bool HP_inter_guild_update_member_info_short(int guild_id, int account_id, int char_id, int online, int lv, int class) {
int hIndex = 0;
bool retVal___ = false;
if (HPMHooks.count.HP_inter_guild_update_member_info_short_pre > 0) {
- bool (*preHookFunc) (int *guild_id, int *account_id, int *char_id, int *online, int *lv, int16 *class);
+ bool (*preHookFunc) (int *guild_id, int *account_id, int *char_id, int *online, int *lv, int *class);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_update_member_info_short_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_guild_update_member_info_short_pre[hIndex].func;
@@ -7024,7 +7050,7 @@ bool HP_inter_guild_update_member_info_short(int guild_id, int account_id, int c
retVal___ = HPMHooks.source.inter_guild.update_member_info_short(guild_id, account_id, char_id, online, lv, class);
}
if (HPMHooks.count.HP_inter_guild_update_member_info_short_post > 0) {
- bool (*postHookFunc) (bool retVal___, int guild_id, int account_id, int char_id, int online, int lv, int16 class);
+ bool (*postHookFunc) (bool retVal___, int guild_id, int account_id, int char_id, int online, int lv, int class);
for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_guild_update_member_info_short_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_guild_update_member_info_short_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id, account_id, char_id, online, lv, class);
@@ -9472,11 +9498,11 @@ int HP_inter_pet_parse_frommap(int fd) {
}
return retVal___;
}
-struct s_pet* HP_inter_pet_create(int account_id, int char_id, short pet_class, short pet_lv, int pet_egg_id, int pet_equip, short intimate, short hungry, char rename_flag, char incubate, const char *pet_name) {
+struct s_pet* HP_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 hIndex = 0;
struct s_pet* retVal___ = NULL;
if (HPMHooks.count.HP_inter_pet_create_pre > 0) {
- struct s_pet* (*preHookFunc) (int *account_id, int *char_id, short *pet_class, short *pet_lv, int *pet_egg_id, int *pet_equip, short *intimate, short *hungry, char *rename_flag, char *incubate, const char **pet_name);
+ struct s_pet* (*preHookFunc) (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);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_pet_create_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_pet_create_pre[hIndex].func;
@@ -9491,7 +9517,7 @@ struct s_pet* HP_inter_pet_create(int account_id, int char_id, short pet_class,
retVal___ = HPMHooks.source.inter_pet.create(account_id, char_id, pet_class, pet_lv, pet_egg_id, pet_equip, intimate, hungry, rename_flag, incubate, pet_name);
}
if (HPMHooks.count.HP_inter_pet_create_post > 0) {
- struct s_pet* (*postHookFunc) (struct s_pet* retVal___, int account_id, int char_id, short pet_class, short pet_lv, int pet_egg_id, int pet_equip, short intimate, short hungry, char rename_flag, char incubate, const char *pet_name);
+ struct s_pet* (*postHookFunc) (struct s_pet* retVal___, 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);
for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_pet_create_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_pet_create_post[hIndex].func;
retVal___ = postHookFunc(retVal___, account_id, char_id, pet_class, pet_lv, pet_egg_id, pet_equip, intimate, hungry, rename_flag, incubate, pet_name);
@@ -9824,11 +9850,11 @@ bool HP_inter_rodex_hasnew(int char_id, int account_id) {
}
return retVal___;
}
-bool HP_inter_rodex_checkname(const char *name, int *target_char_id, short *target_class, int *target_level) {
+bool HP_inter_rodex_checkname(const char *name, int *target_char_id, int *target_class, int *target_level) {
int hIndex = 0;
bool retVal___ = false;
if (HPMHooks.count.HP_inter_rodex_checkname_pre > 0) {
- bool (*preHookFunc) (const char **name, int **target_char_id, short **target_class, int **target_level);
+ bool (*preHookFunc) (const char **name, int **target_char_id, int **target_class, int **target_level);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_rodex_checkname_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_inter_rodex_checkname_pre[hIndex].func;
@@ -9843,7 +9869,7 @@ bool HP_inter_rodex_checkname(const char *name, int *target_char_id, short *targ
retVal___ = HPMHooks.source.inter_rodex.checkname(name, target_char_id, target_class, target_level);
}
if (HPMHooks.count.HP_inter_rodex_checkname_post > 0) {
- bool (*postHookFunc) (bool retVal___, const char *name, int *target_char_id, short *target_class, int *target_level);
+ bool (*postHookFunc) (bool retVal___, const char *name, int *target_char_id, int *target_class, int *target_level);
for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_rodex_checkname_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_inter_rodex_checkname_post[hIndex].func;
retVal___ = postHookFunc(retVal___, name, target_char_id, target_class, target_level);
@@ -13796,11 +13822,11 @@ int HP_mapif_parse_GuildLeave(int fd, int guild_id, int account_id, int char_id,
}
return retVal___;
}
-int HP_mapif_parse_GuildChangeMemberInfoShort(int fd, int guild_id, int account_id, int char_id, int online, int lv, int16 class) {
+int HP_mapif_parse_GuildChangeMemberInfoShort(int fd, int guild_id, int account_id, int char_id, int online, int lv, int class) {
int hIndex = 0;
int retVal___ = 0;
if (HPMHooks.count.HP_mapif_parse_GuildChangeMemberInfoShort_pre > 0) {
- int (*preHookFunc) (int *fd, int *guild_id, int *account_id, int *char_id, int *online, int *lv, int16 *class);
+ int (*preHookFunc) (int *fd, int *guild_id, int *account_id, int *char_id, int *online, int *lv, int *class);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildChangeMemberInfoShort_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_parse_GuildChangeMemberInfoShort_pre[hIndex].func;
@@ -13815,7 +13841,7 @@ int HP_mapif_parse_GuildChangeMemberInfoShort(int fd, int guild_id, int account_
retVal___ = HPMHooks.source.mapif.parse_GuildChangeMemberInfoShort(fd, guild_id, account_id, char_id, online, lv, class);
}
if (HPMHooks.count.HP_mapif_parse_GuildChangeMemberInfoShort_post > 0) {
- int (*postHookFunc) (int retVal___, int fd, int guild_id, int account_id, int char_id, int online, int lv, int16 class);
+ int (*postHookFunc) (int retVal___, int fd, int guild_id, int account_id, int char_id, int online, int lv, int class);
for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildChangeMemberInfoShort_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_parse_GuildChangeMemberInfoShort_post[hIndex].func;
retVal___ = postHookFunc(retVal___, fd, guild_id, account_id, char_id, online, lv, class);
@@ -15995,10 +16021,10 @@ void HP_mapif_parse_rodex_checkname(int fd) {
}
return;
}
-void HP_mapif_rodex_checkname(int fd, int reqchar_id, int target_char_id, short target_class, int target_level, char *name) {
+void HP_mapif_rodex_checkname(int fd, int reqchar_id, int target_char_id, int target_class, int target_level, char *name) {
int hIndex = 0;
if (HPMHooks.count.HP_mapif_rodex_checkname_pre > 0) {
- void (*preHookFunc) (int *fd, int *reqchar_id, int *target_char_id, short *target_class, int *target_level, char **name);
+ void (*preHookFunc) (int *fd, int *reqchar_id, int *target_char_id, int *target_class, int *target_level, char **name);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_rodex_checkname_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_mapif_rodex_checkname_pre[hIndex].func;
@@ -16013,7 +16039,7 @@ void HP_mapif_rodex_checkname(int fd, int reqchar_id, int target_char_id, short
HPMHooks.source.mapif.rodex_checkname(fd, reqchar_id, target_char_id, target_class, target_level, name);
}
if (HPMHooks.count.HP_mapif_rodex_checkname_post > 0) {
- void (*postHookFunc) (int fd, int reqchar_id, int target_char_id, short target_class, int target_level, char *name);
+ void (*postHookFunc) (int fd, int reqchar_id, int target_char_id, int target_class, int target_level, char *name);
for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_rodex_checkname_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_mapif_rodex_checkname_post[hIndex].func;
postHookFunc(fd, reqchar_id, target_char_id, target_class, target_level, name);
diff --git a/src/plugins/HPMHooking/HPMHooking_char.sources.inc b/src/plugins/HPMHooking/HPMHooking_char.sources.inc
index 7fb575afe..973f8aff3 100644
--- a/src/plugins/HPMHooking/HPMHooking_char.sources.inc
+++ b/src/plugins/HPMHooking/HPMHooking_char.sources.inc
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2018 Hercules Dev Team
+ * Copyright (C) 2013-2019 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/plugins/HPMHooking/HPMHooking_login.HPMHooksCore.inc b/src/plugins/HPMHooking/HPMHooking_login.HPMHooksCore.inc
index 20607bdfd..7293e8fc4 100644
--- a/src/plugins/HPMHooking/HPMHooking_login.HPMHooksCore.inc
+++ b/src/plugins/HPMHooking/HPMHooking_login.HPMHooksCore.inc
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2018 Hercules Dev Team
+ * Copyright (C) 2013-2019 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/plugins/HPMHooking/HPMHooking_login.HookingPoints.inc b/src/plugins/HPMHooking/HPMHooking_login.HookingPoints.inc
index 20667f45f..825e049b1 100644
--- a/src/plugins/HPMHooking/HPMHooking_login.HookingPoints.inc
+++ b/src/plugins/HPMHooking/HPMHooking_login.HookingPoints.inc
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2018 Hercules Dev Team
+ * Copyright (C) 2013-2019 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/plugins/HPMHooking/HPMHooking_login.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_login.Hooks.inc
index f556c621d..044ee2df2 100644
--- a/src/plugins/HPMHooking/HPMHooking_login.Hooks.inc
+++ b/src/plugins/HPMHooking/HPMHooking_login.Hooks.inc
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2018 Hercules Dev Team
+ * Copyright (C) 2013-2019 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/plugins/HPMHooking/HPMHooking_login.sources.inc b/src/plugins/HPMHooking/HPMHooking_login.sources.inc
index 552aad578..510cb8bc4 100644
--- a/src/plugins/HPMHooking/HPMHooking_login.sources.inc
+++ b/src/plugins/HPMHooking/HPMHooking_login.sources.inc
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2018 Hercules Dev Team
+ * Copyright (C) 2013-2019 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc
index d2c269bdd..b323d77e6 100644
--- a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc
+++ b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2018 Hercules Dev Team
+ * Copyright (C) 2013-2019 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -2250,6 +2250,14 @@ struct {
struct HPMHookPoint *HP_clif_enchant_equipment_post;
struct HPMHookPoint *HP_clif_pReqRemainTime_pre;
struct HPMHookPoint *HP_clif_pReqRemainTime_post;
+ struct HPMHookPoint *HP_clif_npc_barter_open_pre;
+ struct HPMHookPoint *HP_clif_npc_barter_open_post;
+ struct HPMHookPoint *HP_clif_pNPCBarterClosed_pre;
+ struct HPMHookPoint *HP_clif_pNPCBarterClosed_post;
+ struct HPMHookPoint *HP_clif_pNPCBarterPurchase_pre;
+ struct HPMHookPoint *HP_clif_pNPCBarterPurchase_post;
+ struct HPMHookPoint *HP_clif_pClientVersion_pre;
+ struct HPMHookPoint *HP_clif_pClientVersion_post;
struct HPMHookPoint *HP_cmdline_init_pre;
struct HPMHookPoint *HP_cmdline_init_post;
struct HPMHookPoint *HP_cmdline_final_pre;
@@ -3212,6 +3220,8 @@ struct {
struct HPMHookPoint *HP_itemdb_lookup_const_post;
struct HPMHookPoint *HP_itemdb_lookup_const_mask_pre;
struct HPMHookPoint *HP_itemdb_lookup_const_mask_post;
+ struct HPMHookPoint *HP_itemdb_addname_sub_pre;
+ struct HPMHookPoint *HP_itemdb_addname_sub_post;
struct HPMHookPoint *HP_libconfig_read_pre;
struct HPMHookPoint *HP_libconfig_read_post;
struct HPMHookPoint *HP_libconfig_write_pre;
@@ -4258,6 +4268,8 @@ struct {
struct HPMHookPoint *HP_npc_trader_update_post;
struct HPMHookPoint *HP_npc_market_buylist_pre;
struct HPMHookPoint *HP_npc_market_buylist_post;
+ struct HPMHookPoint *HP_npc_barter_buylist_pre;
+ struct HPMHookPoint *HP_npc_barter_buylist_post;
struct HPMHookPoint *HP_npc_trader_open_pre;
struct HPMHookPoint *HP_npc_trader_open_post;
struct HPMHookPoint *HP_npc_market_fromsql_pre;
@@ -4268,6 +4280,14 @@ struct {
struct HPMHookPoint *HP_npc_market_delfromsql_post;
struct HPMHookPoint *HP_npc_market_delfromsql_sub_pre;
struct HPMHookPoint *HP_npc_market_delfromsql_sub_post;
+ struct HPMHookPoint *HP_npc_barter_fromsql_pre;
+ struct HPMHookPoint *HP_npc_barter_fromsql_post;
+ struct HPMHookPoint *HP_npc_barter_tosql_pre;
+ struct HPMHookPoint *HP_npc_barter_tosql_post;
+ struct HPMHookPoint *HP_npc_barter_delfromsql_pre;
+ struct HPMHookPoint *HP_npc_barter_delfromsql_post;
+ struct HPMHookPoint *HP_npc_barter_delfromsql_sub_pre;
+ struct HPMHookPoint *HP_npc_barter_delfromsql_sub_post;
struct HPMHookPoint *HP_npc_db_checkid_pre;
struct HPMHookPoint *HP_npc_db_checkid_post;
struct HPMHookPoint *HP_npc_refresh_pre;
@@ -8899,6 +8919,14 @@ struct {
int HP_clif_enchant_equipment_post;
int HP_clif_pReqRemainTime_pre;
int HP_clif_pReqRemainTime_post;
+ int HP_clif_npc_barter_open_pre;
+ int HP_clif_npc_barter_open_post;
+ int HP_clif_pNPCBarterClosed_pre;
+ int HP_clif_pNPCBarterClosed_post;
+ int HP_clif_pNPCBarterPurchase_pre;
+ int HP_clif_pNPCBarterPurchase_post;
+ int HP_clif_pClientVersion_pre;
+ int HP_clif_pClientVersion_post;
int HP_cmdline_init_pre;
int HP_cmdline_init_post;
int HP_cmdline_final_pre;
@@ -9861,6 +9889,8 @@ struct {
int HP_itemdb_lookup_const_post;
int HP_itemdb_lookup_const_mask_pre;
int HP_itemdb_lookup_const_mask_post;
+ int HP_itemdb_addname_sub_pre;
+ int HP_itemdb_addname_sub_post;
int HP_libconfig_read_pre;
int HP_libconfig_read_post;
int HP_libconfig_write_pre;
@@ -10907,6 +10937,8 @@ struct {
int HP_npc_trader_update_post;
int HP_npc_market_buylist_pre;
int HP_npc_market_buylist_post;
+ int HP_npc_barter_buylist_pre;
+ int HP_npc_barter_buylist_post;
int HP_npc_trader_open_pre;
int HP_npc_trader_open_post;
int HP_npc_market_fromsql_pre;
@@ -10917,6 +10949,14 @@ struct {
int HP_npc_market_delfromsql_post;
int HP_npc_market_delfromsql_sub_pre;
int HP_npc_market_delfromsql_sub_post;
+ int HP_npc_barter_fromsql_pre;
+ int HP_npc_barter_fromsql_post;
+ int HP_npc_barter_tosql_pre;
+ int HP_npc_barter_tosql_post;
+ int HP_npc_barter_delfromsql_pre;
+ int HP_npc_barter_delfromsql_post;
+ int HP_npc_barter_delfromsql_sub_pre;
+ int HP_npc_barter_delfromsql_sub_post;
int HP_npc_db_checkid_pre;
int HP_npc_db_checkid_post;
int HP_npc_refresh_pre;
diff --git a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc
index 050050ee1..3c09aba59 100644
--- a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc
+++ b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2018 Hercules Dev Team
+ * Copyright (C) 2013-2019 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -1149,6 +1149,10 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(clif->item_preview, HP_clif_item_preview) },
{ HP_POP(clif->enchant_equipment, HP_clif_enchant_equipment) },
{ HP_POP(clif->pReqRemainTime, HP_clif_pReqRemainTime) },
+ { HP_POP(clif->npc_barter_open, HP_clif_npc_barter_open) },
+ { HP_POP(clif->pNPCBarterClosed, HP_clif_pNPCBarterClosed) },
+ { HP_POP(clif->pNPCBarterPurchase, HP_clif_pNPCBarterPurchase) },
+ { HP_POP(clif->pClientVersion, HP_clif_pClientVersion) },
/* cmdline_interface */
{ HP_POP(cmdline->init, HP_cmdline_init) },
{ HP_POP(cmdline->final, HP_cmdline_final) },
@@ -1645,6 +1649,7 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(itemdb->is_item_usable, HP_itemdb_is_item_usable) },
{ HP_POP(itemdb->lookup_const, HP_itemdb_lookup_const) },
{ HP_POP(itemdb->lookup_const_mask, HP_itemdb_lookup_const_mask) },
+ { HP_POP(itemdb->addname_sub, HP_itemdb_addname_sub) },
/* libconfig_interface */
{ HP_POP(libconfig->read, HP_libconfig_read) },
{ HP_POP(libconfig->write, HP_libconfig_write) },
@@ -2181,11 +2186,16 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(npc->trader_pay, HP_npc_trader_pay) },
{ HP_POP(npc->trader_update, HP_npc_trader_update) },
{ HP_POP(npc->market_buylist, HP_npc_market_buylist) },
+ { HP_POP(npc->barter_buylist, HP_npc_barter_buylist) },
{ HP_POP(npc->trader_open, HP_npc_trader_open) },
{ HP_POP(npc->market_fromsql, HP_npc_market_fromsql) },
{ HP_POP(npc->market_tosql, HP_npc_market_tosql) },
{ HP_POP(npc->market_delfromsql, HP_npc_market_delfromsql) },
{ HP_POP(npc->market_delfromsql_sub, HP_npc_market_delfromsql_sub) },
+ { HP_POP(npc->barter_fromsql, HP_npc_barter_fromsql) },
+ { HP_POP(npc->barter_tosql, HP_npc_barter_tosql) },
+ { HP_POP(npc->barter_delfromsql, HP_npc_barter_delfromsql) },
+ { HP_POP(npc->barter_delfromsql_sub, HP_npc_barter_delfromsql_sub) },
{ HP_POP(npc->db_checkid, HP_npc_db_checkid) },
{ HP_POP(npc->refresh, HP_npc_refresh) },
{ HP_POP(npc->secure_timeout_timer, HP_npc_secure_timeout_timer) },
diff --git a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc
index 05f182f9e..8242b9797 100644
--- a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc
+++ b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2018 Hercules Dev Team
+ * Copyright (C) 2013-2019 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -28048,10 +28048,10 @@ void HP_clif_pRodexCheckName(int fd, struct map_session_data *sd) {
}
return;
}
-void HP_clif_rodex_checkname_result(struct map_session_data *sd, int char_id, short class_, int base_level, const char *name) {
+void HP_clif_rodex_checkname_result(struct map_session_data *sd, int char_id, int class_, int base_level, const char *name) {
int hIndex = 0;
if (HPMHooks.count.HP_clif_rodex_checkname_result_pre > 0) {
- void (*preHookFunc) (struct map_session_data **sd, int *char_id, short *class_, int *base_level, const char **name);
+ void (*preHookFunc) (struct map_session_data **sd, int *char_id, int *class_, int *base_level, const char **name);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_checkname_result_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_rodex_checkname_result_pre[hIndex].func;
@@ -28066,7 +28066,7 @@ void HP_clif_rodex_checkname_result(struct map_session_data *sd, int char_id, sh
HPMHooks.source.clif.rodex_checkname_result(sd, char_id, class_, base_level, name);
}
if (HPMHooks.count.HP_clif_rodex_checkname_result_post > 0) {
- void (*postHookFunc) (struct map_session_data *sd, int char_id, short class_, int base_level, const char *name);
+ void (*postHookFunc) (struct map_session_data *sd, int char_id, int class_, int base_level, const char *name);
for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_rodex_checkname_result_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_rodex_checkname_result_post[hIndex].func;
postHookFunc(sd, char_id, class_, base_level, name);
@@ -29330,6 +29330,110 @@ void HP_clif_pReqRemainTime(int fd, struct map_session_data *sd) {
}
return;
}
+void HP_clif_npc_barter_open(struct map_session_data *sd, struct npc_data *nd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_npc_barter_open_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, struct npc_data **nd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_npc_barter_open_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_npc_barter_open_pre[hIndex].func;
+ preHookFunc(&sd, &nd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.npc_barter_open(sd, nd);
+ }
+ if (HPMHooks.count.HP_clif_npc_barter_open_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, struct npc_data *nd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_npc_barter_open_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_npc_barter_open_post[hIndex].func;
+ postHookFunc(sd, nd);
+ }
+ }
+ return;
+}
+void HP_clif_pNPCBarterClosed(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_pNPCBarterClosed_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNPCBarterClosed_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_pNPCBarterClosed_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.pNPCBarterClosed(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_pNPCBarterClosed_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNPCBarterClosed_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_pNPCBarterClosed_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
+void HP_clif_pNPCBarterPurchase(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_pNPCBarterPurchase_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNPCBarterPurchase_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_pNPCBarterPurchase_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.pNPCBarterPurchase(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_pNPCBarterPurchase_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pNPCBarterPurchase_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_pNPCBarterPurchase_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
+void HP_clif_pClientVersion(int fd, struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_pClientVersion_pre > 0) {
+ void (*preHookFunc) (int *fd, struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pClientVersion_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_pClientVersion_pre[hIndex].func;
+ preHookFunc(&fd, &sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.pClientVersion(fd, sd);
+ }
+ if (HPMHooks.count.HP_clif_pClientVersion_post > 0) {
+ void (*postHookFunc) (int fd, struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pClientVersion_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_pClientVersion_post[hIndex].func;
+ postHookFunc(fd, sd);
+ }
+ }
+ return;
+}
/* cmdline_interface */
void HP_cmdline_init(void) {
int hIndex = 0;
@@ -32534,11 +32638,11 @@ int HP_guild_send_memberinfoshort(struct map_session_data *sd, int online) {
}
return retVal___;
}
-int HP_guild_recv_memberinfoshort(int guild_id, int account_id, int char_id, int online, int lv, int16 class, uint32 last_login) {
+int HP_guild_recv_memberinfoshort(int guild_id, int account_id, int char_id, int online, int lv, int class, uint32 last_login) {
int hIndex = 0;
int retVal___ = 0;
if (HPMHooks.count.HP_guild_recv_memberinfoshort_pre > 0) {
- int (*preHookFunc) (int *guild_id, int *account_id, int *char_id, int *online, int *lv, int16 *class, uint32 *last_login);
+ int (*preHookFunc) (int *guild_id, int *account_id, int *char_id, int *online, int *lv, int *class, uint32 *last_login);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_recv_memberinfoshort_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_guild_recv_memberinfoshort_pre[hIndex].func;
@@ -32553,7 +32657,7 @@ int HP_guild_recv_memberinfoshort(int guild_id, int account_id, int char_id, int
retVal___ = HPMHooks.source.guild.recv_memberinfoshort(guild_id, account_id, char_id, online, lv, class, last_login);
}
if (HPMHooks.count.HP_guild_recv_memberinfoshort_post > 0) {
- int (*postHookFunc) (int retVal___, int guild_id, int account_id, int char_id, int online, int lv, int16 class, uint32 last_login);
+ int (*postHookFunc) (int retVal___, int guild_id, int account_id, int char_id, int online, int lv, int class, uint32 last_login);
for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_recv_memberinfoshort_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_guild_recv_memberinfoshort_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id, account_id, char_id, online, lv, class, last_login);
@@ -34681,11 +34785,11 @@ bool HP_homun_levelup(struct homun_data *hd) {
}
return retVal___;
}
-int HP_homun_change_class(struct homun_data *hd, short class_) {
+int HP_homun_change_class(struct homun_data *hd, int class_) {
int hIndex = 0;
int retVal___ = 0;
if (HPMHooks.count.HP_homun_change_class_pre > 0) {
- int (*preHookFunc) (struct homun_data **hd, short *class_);
+ int (*preHookFunc) (struct homun_data **hd, int *class_);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_change_class_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_homun_change_class_pre[hIndex].func;
@@ -34700,7 +34804,7 @@ int HP_homun_change_class(struct homun_data *hd, short class_) {
retVal___ = HPMHooks.source.homun.change_class(hd, class_);
}
if (HPMHooks.count.HP_homun_change_class_post > 0) {
- int (*postHookFunc) (int retVal___, struct homun_data *hd, short class_);
+ int (*postHookFunc) (int retVal___, struct homun_data *hd, int class_);
for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_change_class_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_homun_change_class_post[hIndex].func;
retVal___ = postHookFunc(retVal___, hd, class_);
@@ -36078,11 +36182,11 @@ int HP_intif_parse(int fd) {
}
return retVal___;
}
-int HP_intif_create_pet(int account_id, int char_id, short pet_type, short pet_lv, int pet_egg_id, int pet_equip, short intimate, short hungry, char rename_flag, char incubate, char *pet_name) {
+int HP_intif_create_pet(int account_id, int char_id, int pet_type, int pet_lv, int pet_egg_id, int pet_equip, short intimate, short hungry, char rename_flag, char incubate, char *pet_name) {
int hIndex = 0;
int retVal___ = 0;
if (HPMHooks.count.HP_intif_create_pet_pre > 0) {
- int (*preHookFunc) (int *account_id, int *char_id, short *pet_type, short *pet_lv, int *pet_egg_id, int *pet_equip, short *intimate, short *hungry, char *rename_flag, char *incubate, char **pet_name);
+ int (*preHookFunc) (int *account_id, int *char_id, int *pet_type, int *pet_lv, int *pet_egg_id, int *pet_equip, short *intimate, short *hungry, char *rename_flag, char *incubate, char **pet_name);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_create_pet_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_create_pet_pre[hIndex].func;
@@ -36097,7 +36201,7 @@ int HP_intif_create_pet(int account_id, int char_id, short pet_type, short pet_l
retVal___ = HPMHooks.source.intif.create_pet(account_id, char_id, pet_type, pet_lv, pet_egg_id, pet_equip, intimate, hungry, rename_flag, incubate, pet_name);
}
if (HPMHooks.count.HP_intif_create_pet_post > 0) {
- int (*postHookFunc) (int retVal___, int account_id, int char_id, short pet_type, short pet_lv, int pet_egg_id, int pet_equip, short intimate, short hungry, char rename_flag, char incubate, char *pet_name);
+ int (*postHookFunc) (int retVal___, int account_id, int char_id, int pet_type, int pet_lv, int pet_egg_id, int pet_equip, short intimate, short hungry, char rename_flag, char incubate, char *pet_name);
for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_create_pet_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_create_pet_post[hIndex].func;
retVal___ = postHookFunc(retVal___, account_id, char_id, pet_type, pet_lv, pet_egg_id, pet_equip, intimate, hungry, rename_flag, incubate, pet_name);
@@ -36751,11 +36855,11 @@ int HP_intif_guild_leave(int guild_id, int account_id, int char_id, int flag, co
}
return retVal___;
}
-int HP_intif_guild_memberinfoshort(int guild_id, int account_id, int char_id, int online, int lv, int16 class) {
+int HP_intif_guild_memberinfoshort(int guild_id, int account_id, int char_id, int online, int lv, int class) {
int hIndex = 0;
int retVal___ = 0;
if (HPMHooks.count.HP_intif_guild_memberinfoshort_pre > 0) {
- int (*preHookFunc) (int *guild_id, int *account_id, int *char_id, int *online, int *lv, int16 *class);
+ int (*preHookFunc) (int *guild_id, int *account_id, int *char_id, int *online, int *lv, int *class);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_memberinfoshort_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_intif_guild_memberinfoshort_pre[hIndex].func;
@@ -36770,7 +36874,7 @@ int HP_intif_guild_memberinfoshort(int guild_id, int account_id, int char_id, in
retVal___ = HPMHooks.source.intif.guild_memberinfoshort(guild_id, account_id, char_id, online, lv, class);
}
if (HPMHooks.count.HP_intif_guild_memberinfoshort_post > 0) {
- int (*postHookFunc) (int retVal___, int guild_id, int account_id, int char_id, int online, int lv, int16 class);
+ int (*postHookFunc) (int retVal___, int guild_id, int account_id, int char_id, int online, int lv, int class);
for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_memberinfoshort_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_intif_guild_memberinfoshort_post[hIndex].func;
retVal___ = postHookFunc(retVal___, guild_id, account_id, char_id, online, lv, class);
@@ -42265,6 +42369,39 @@ bool HP_itemdb_lookup_const_mask(const struct config_setting_t *it, const char *
}
return retVal___;
}
+int HP_itemdb_addname_sub(union DBKey key, struct DBData *data, va_list ap) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_itemdb_addname_sub_pre > 0) {
+ int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list ap);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_addname_sub_pre; hIndex++) {
+ va_list ap___copy; va_copy(ap___copy, ap);
+ preHookFunc = HPMHooks.list.HP_itemdb_addname_sub_pre[hIndex].func;
+ retVal___ = preHookFunc(&key, &data, ap___copy);
+ va_end(ap___copy);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ va_list ap___copy; va_copy(ap___copy, ap);
+ retVal___ = HPMHooks.source.itemdb.addname_sub(key, data, ap___copy);
+ va_end(ap___copy);
+ }
+ if (HPMHooks.count.HP_itemdb_addname_sub_post > 0) {
+ int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_itemdb_addname_sub_post; hIndex++) {
+ va_list ap___copy; va_copy(ap___copy, ap);
+ postHookFunc = HPMHooks.list.HP_itemdb_addname_sub_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, key, data, ap___copy);
+ va_end(ap___copy);
+ }
+ }
+ return retVal___;
+}
/* libconfig_interface */
int HP_libconfig_read(struct config_t *config, FILE *stream) {
int hIndex = 0;
@@ -55468,11 +55605,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, int16 class_) {
+struct npc_data* HP_npc_create_npc(enum npc_subtype subtype, int m, int x, int y, uint8 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, int16 *class_);
+ struct npc_data* (*preHookFunc) (enum npc_subtype *subtype, int *m, int *x, int *y, uint8 *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;
@@ -55487,7 +55624,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, int16 class_);
+ struct npc_data* (*postHookFunc) (struct npc_data* retVal___, enum npc_subtype subtype, int m, int x, int y, uint8 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_);
@@ -56008,10 +56145,10 @@ void HP_npc_setdisplayname(struct npc_data *nd, const char *newname) {
}
return;
}
-void HP_npc_setclass(struct npc_data *nd, short class_) {
+void HP_npc_setclass(struct npc_data *nd, int class_) {
int hIndex = 0;
if (HPMHooks.count.HP_npc_setclass_pre > 0) {
- void (*preHookFunc) (struct npc_data **nd, short *class_);
+ void (*preHookFunc) (struct npc_data **nd, int *class_);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_setclass_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_setclass_pre[hIndex].func;
@@ -56026,7 +56163,7 @@ void HP_npc_setclass(struct npc_data *nd, short class_) {
HPMHooks.source.npc.setclass(nd, class_);
}
if (HPMHooks.count.HP_npc_setclass_post > 0) {
- void (*postHookFunc) (struct npc_data *nd, short class_);
+ void (*postHookFunc) (struct npc_data *nd, int class_);
for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_setclass_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_setclass_post[hIndex].func;
postHookFunc(nd, class_);
@@ -56578,6 +56715,33 @@ int HP_npc_market_buylist(struct map_session_data *sd, struct itemlist *item_lis
}
return retVal___;
}
+int HP_npc_barter_buylist(struct map_session_data *sd, struct barteritemlist *item_list) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_npc_barter_buylist_pre > 0) {
+ int (*preHookFunc) (struct map_session_data **sd, struct barteritemlist **item_list);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_barter_buylist_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_npc_barter_buylist_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd, &item_list);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.npc.barter_buylist(sd, item_list);
+ }
+ if (HPMHooks.count.HP_npc_barter_buylist_post > 0) {
+ int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct barteritemlist *item_list);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_barter_buylist_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_npc_barter_buylist_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd, item_list);
+ }
+ }
+ return retVal___;
+}
bool HP_npc_trader_open(struct map_session_data *sd, struct npc_data *nd) {
int hIndex = 0;
bool retVal___ = false;
@@ -56631,10 +56795,10 @@ void HP_npc_market_fromsql(void) {
}
return;
}
-void HP_npc_market_tosql(struct npc_data *nd, unsigned short index) {
+void HP_npc_market_tosql(struct npc_data *nd, int index) {
int hIndex = 0;
if (HPMHooks.count.HP_npc_market_tosql_pre > 0) {
- void (*preHookFunc) (struct npc_data **nd, unsigned short *index);
+ void (*preHookFunc) (struct npc_data **nd, int *index);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_market_tosql_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_market_tosql_pre[hIndex].func;
@@ -56649,7 +56813,7 @@ void HP_npc_market_tosql(struct npc_data *nd, unsigned short index) {
HPMHooks.source.npc.market_tosql(nd, index);
}
if (HPMHooks.count.HP_npc_market_tosql_post > 0) {
- void (*postHookFunc) (struct npc_data *nd, unsigned short index);
+ void (*postHookFunc) (struct npc_data *nd, int index);
for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_market_tosql_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_market_tosql_post[hIndex].func;
postHookFunc(nd, index);
@@ -56657,10 +56821,10 @@ void HP_npc_market_tosql(struct npc_data *nd, unsigned short index) {
}
return;
}
-void HP_npc_market_delfromsql(struct npc_data *nd, unsigned short index) {
+void HP_npc_market_delfromsql(struct npc_data *nd, int index) {
int hIndex = 0;
if (HPMHooks.count.HP_npc_market_delfromsql_pre > 0) {
- void (*preHookFunc) (struct npc_data **nd, unsigned short *index);
+ void (*preHookFunc) (struct npc_data **nd, int *index);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_market_delfromsql_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_market_delfromsql_pre[hIndex].func;
@@ -56675,7 +56839,7 @@ void HP_npc_market_delfromsql(struct npc_data *nd, unsigned short index) {
HPMHooks.source.npc.market_delfromsql(nd, index);
}
if (HPMHooks.count.HP_npc_market_delfromsql_post > 0) {
- void (*postHookFunc) (struct npc_data *nd, unsigned short index);
+ void (*postHookFunc) (struct npc_data *nd, int index);
for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_market_delfromsql_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_market_delfromsql_post[hIndex].func;
postHookFunc(nd, index);
@@ -56683,10 +56847,10 @@ void HP_npc_market_delfromsql(struct npc_data *nd, unsigned short index) {
}
return;
}
-void HP_npc_market_delfromsql_sub(const char *npcname, unsigned short index) {
+void HP_npc_market_delfromsql_sub(const char *npcname, int index) {
int hIndex = 0;
if (HPMHooks.count.HP_npc_market_delfromsql_sub_pre > 0) {
- void (*preHookFunc) (const char **npcname, unsigned short *index);
+ void (*preHookFunc) (const char **npcname, int *index);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_market_delfromsql_sub_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_npc_market_delfromsql_sub_pre[hIndex].func;
@@ -56701,7 +56865,7 @@ void HP_npc_market_delfromsql_sub(const char *npcname, unsigned short index) {
HPMHooks.source.npc.market_delfromsql_sub(npcname, index);
}
if (HPMHooks.count.HP_npc_market_delfromsql_sub_post > 0) {
- void (*postHookFunc) (const char *npcname, unsigned short index);
+ void (*postHookFunc) (const char *npcname, int index);
for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_market_delfromsql_sub_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_npc_market_delfromsql_sub_post[hIndex].func;
postHookFunc(npcname, index);
@@ -56709,6 +56873,110 @@ void HP_npc_market_delfromsql_sub(const char *npcname, unsigned short index) {
}
return;
}
+void HP_npc_barter_fromsql(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_npc_barter_fromsql_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_barter_fromsql_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_npc_barter_fromsql_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.npc.barter_fromsql();
+ }
+ if (HPMHooks.count.HP_npc_barter_fromsql_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_barter_fromsql_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_npc_barter_fromsql_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
+void HP_npc_barter_tosql(struct npc_data *nd, int index) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_npc_barter_tosql_pre > 0) {
+ void (*preHookFunc) (struct npc_data **nd, int *index);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_barter_tosql_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_npc_barter_tosql_pre[hIndex].func;
+ preHookFunc(&nd, &index);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.npc.barter_tosql(nd, index);
+ }
+ if (HPMHooks.count.HP_npc_barter_tosql_post > 0) {
+ void (*postHookFunc) (struct npc_data *nd, int index);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_barter_tosql_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_npc_barter_tosql_post[hIndex].func;
+ postHookFunc(nd, index);
+ }
+ }
+ return;
+}
+void HP_npc_barter_delfromsql(struct npc_data *nd, int index) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_npc_barter_delfromsql_pre > 0) {
+ void (*preHookFunc) (struct npc_data **nd, int *index);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_barter_delfromsql_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_npc_barter_delfromsql_pre[hIndex].func;
+ preHookFunc(&nd, &index);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.npc.barter_delfromsql(nd, index);
+ }
+ if (HPMHooks.count.HP_npc_barter_delfromsql_post > 0) {
+ void (*postHookFunc) (struct npc_data *nd, int index);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_barter_delfromsql_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_npc_barter_delfromsql_post[hIndex].func;
+ postHookFunc(nd, index);
+ }
+ }
+ return;
+}
+void HP_npc_barter_delfromsql_sub(const char *npcname, int itemId, int itemId2, int amount2) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_npc_barter_delfromsql_sub_pre > 0) {
+ void (*preHookFunc) (const char **npcname, int *itemId, int *itemId2, int *amount2);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_barter_delfromsql_sub_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_npc_barter_delfromsql_sub_pre[hIndex].func;
+ preHookFunc(&npcname, &itemId, &itemId2, &amount2);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.npc.barter_delfromsql_sub(npcname, itemId, itemId2, amount2);
+ }
+ if (HPMHooks.count.HP_npc_barter_delfromsql_sub_post > 0) {
+ void (*postHookFunc) (const char *npcname, int itemId, int itemId2, int amount2);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_barter_delfromsql_sub_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_npc_barter_delfromsql_sub_post[hIndex].func;
+ postHookFunc(npcname, itemId, itemId2, amount2);
+ }
+ }
+ return;
+}
bool HP_npc_db_checkid(const int id) {
int hIndex = 0;
bool retVal___ = false;
@@ -62687,11 +62955,11 @@ int HP_pc_candrop(struct map_session_data *sd, struct item *item) {
}
return retVal___;
}
-int HP_pc_jobid2mapid(int16 class) {
+int HP_pc_jobid2mapid(int class) {
int hIndex = 0;
int retVal___ = 0;
if (HPMHooks.count.HP_pc_jobid2mapid_pre > 0) {
- int (*preHookFunc) (int16 *class);
+ int (*preHookFunc) (int *class);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_jobid2mapid_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_jobid2mapid_pre[hIndex].func;
@@ -62706,7 +62974,7 @@ int HP_pc_jobid2mapid(int16 class) {
retVal___ = HPMHooks.source.pc.jobid2mapid(class);
}
if (HPMHooks.count.HP_pc_jobid2mapid_post > 0) {
- int (*postHookFunc) (int retVal___, int16 class);
+ int (*postHookFunc) (int retVal___, int class);
for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_jobid2mapid_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_jobid2mapid_post[hIndex].func;
retVal___ = postHookFunc(retVal___, class);
@@ -62714,11 +62982,11 @@ int HP_pc_jobid2mapid(int16 class) {
}
return retVal___;
}
-int HP_pc_mapid2jobid(unsigned short class_, int sex) {
+int HP_pc_mapid2jobid(unsigned int class_, int sex) {
int hIndex = 0;
int retVal___ = 0;
if (HPMHooks.count.HP_pc_mapid2jobid_pre > 0) {
- int (*preHookFunc) (unsigned short *class_, int *sex);
+ int (*preHookFunc) (unsigned int *class_, int *sex);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_mapid2jobid_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_mapid2jobid_pre[hIndex].func;
@@ -62733,7 +63001,7 @@ int HP_pc_mapid2jobid(unsigned short class_, int sex) {
retVal___ = HPMHooks.source.pc.mapid2jobid(class_, sex);
}
if (HPMHooks.count.HP_pc_mapid2jobid_post > 0) {
- int (*postHookFunc) (int retVal___, unsigned short class_, int sex);
+ int (*postHookFunc) (int retVal___, unsigned int class_, int sex);
for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_mapid2jobid_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_mapid2jobid_post[hIndex].func;
retVal___ = postHookFunc(retVal___, class_, sex);
@@ -65925,11 +66193,11 @@ int HP_pet_catch_process2(struct map_session_data *sd, int target_id) {
}
return retVal___;
}
-bool HP_pet_get_egg(int account_id, short pet_class, int pet_id) {
+bool HP_pet_get_egg(int account_id, int pet_class, int pet_id) {
int hIndex = 0;
bool retVal___ = false;
if (HPMHooks.count.HP_pet_get_egg_pre > 0) {
- bool (*preHookFunc) (int *account_id, short *pet_class, int *pet_id);
+ bool (*preHookFunc) (int *account_id, int *pet_class, int *pet_id);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_get_egg_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pet_get_egg_pre[hIndex].func;
@@ -65944,7 +66212,7 @@ bool HP_pet_get_egg(int account_id, short pet_class, int pet_id) {
retVal___ = HPMHooks.source.pet.get_egg(account_id, pet_class, pet_id);
}
if (HPMHooks.count.HP_pet_get_egg_post > 0) {
- bool (*postHookFunc) (bool retVal___, int account_id, short pet_class, int pet_id);
+ bool (*postHookFunc) (bool retVal___, int account_id, int pet_class, int pet_id);
for (hIndex = 0; hIndex < HPMHooks.count.HP_pet_get_egg_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pet_get_egg_post[hIndex].func;
retVal___ = postHookFunc(retVal___, account_id, pet_class, pet_id);
@@ -67735,10 +68003,10 @@ void HP_rodex_remove_item(struct map_session_data *sd, int16 idx, int16 amount)
}
return;
}
-void HP_rodex_check_player(struct map_session_data *sd, const char *name, int *base_level, int *char_id, short *class) {
+void HP_rodex_check_player(struct map_session_data *sd, const char *name, int *base_level, int *char_id, int *class) {
int hIndex = 0;
if (HPMHooks.count.HP_rodex_check_player_pre > 0) {
- void (*preHookFunc) (struct map_session_data **sd, const char **name, int **base_level, int **char_id, short **class);
+ void (*preHookFunc) (struct map_session_data **sd, const char **name, int **base_level, int **char_id, int **class);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_check_player_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_rodex_check_player_pre[hIndex].func;
@@ -67753,7 +68021,7 @@ void HP_rodex_check_player(struct map_session_data *sd, const char *name, int *b
HPMHooks.source.rodex.check_player(sd, name, base_level, char_id, class);
}
if (HPMHooks.count.HP_rodex_check_player_post > 0) {
- void (*postHookFunc) (struct map_session_data *sd, const char *name, int *base_level, int *char_id, short *class);
+ void (*postHookFunc) (struct map_session_data *sd, const char *name, int *base_level, int *char_id, int *class);
for (hIndex = 0; hIndex < HPMHooks.count.HP_rodex_check_player_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_rodex_check_player_post[hIndex].func;
postHookFunc(sd, name, base_level, char_id, class);
diff --git a/src/plugins/HPMHooking/HPMHooking_map.sources.inc b/src/plugins/HPMHooking/HPMHooking_map.sources.inc
index 9d5390bb4..7a3c5b9a7 100644
--- a/src/plugins/HPMHooking/HPMHooking_map.sources.inc
+++ b/src/plugins/HPMHooking/HPMHooking_map.sources.inc
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2018 Hercules Dev Team
+ * Copyright (C) 2013-2019 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/tools/ci/travis.sh b/tools/ci/travis.sh
index fa7d5be93..22f523bdf 100755
--- a/tools/ci/travis.sh
+++ b/tools/ci/travis.sh
@@ -47,7 +47,8 @@ function aborterror {
function run_server {
echo "Running: $1 --run-once $2"
- $1 --run-once $2 2>runlog.txt
+ rm -rf core* || true
+ CRASH_PLEASE=1 $1 --run-once $2 2>runlog.txt
export errcode=$?
export teststr=$(head -c 10000 runlog.txt)
if [[ -n "${teststr}" ]]; then
@@ -59,12 +60,17 @@ function run_server {
fi
if [ ${errcode} -ne 0 ]; then
echo "server $1 terminated with exit code ${errcode}"
+ COREFILE=$(find . -maxdepth 1 -name "core*" | head -n 1)
+ if [[ -f "$COREFILE" ]]; then
+ gdb -c "$COREFILE" $1 -ex "thread apply all bt" -ex "set pagination 0" -batch
+ fi
aborterror "Test failed"
fi
}
function run_test {
echo "Running: test_$1"
+ sysctl -w kernel.core_pattern=core || true
./test_$1 2>runlog.txt
export errcode=$?
export teststr=$(head -c 10000 runlog.txt)
diff --git a/vcproj-15/char-server.vcxproj b/vcproj-15/char-server.vcxproj
index 253437275..6756fc25e 100644
--- a/vcproj-15/char-server.vcxproj
+++ b/vcproj-15/char-server.vcxproj
@@ -14,7 +14,7 @@
<ProjectGuid>{D356871D-58E1-450B-967A-E4E9646175AF}</ProjectGuid>
<RootNamespace>char-server</RootNamespace>
<Keyword>Win32Proj</Keyword>
- <WindowsTargetPlatformVersion>10.0.15063.0</WindowsTargetPlatformVersion>
+ <WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
diff --git a/vcproj-15/login-server.vcxproj b/vcproj-15/login-server.vcxproj
index 9f372373b..f045fa290 100644
--- a/vcproj-15/login-server.vcxproj
+++ b/vcproj-15/login-server.vcxproj
@@ -14,7 +14,7 @@
<ProjectGuid>{D356871D-58E1-450B-967A-E5E9646175AF}</ProjectGuid>
<RootNamespace>login-server</RootNamespace>
<Keyword>Win32Proj</Keyword>
- <WindowsTargetPlatformVersion>10.0.15063.0</WindowsTargetPlatformVersion>
+ <WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
diff --git a/vcproj-15/map-server.vcxproj b/vcproj-15/map-server.vcxproj
index ac24ce2a2..7009557f5 100644
--- a/vcproj-15/map-server.vcxproj
+++ b/vcproj-15/map-server.vcxproj
@@ -14,7 +14,7 @@
<ProjectGuid>{D356871D-58E1-450B-967A-E6E9646175AF}</ProjectGuid>
<RootNamespace>map-server</RootNamespace>
<Keyword>Win32Proj</Keyword>
- <WindowsTargetPlatformVersion>10.0.15063.0</WindowsTargetPlatformVersion>
+ <WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
diff --git a/vcproj-15/plugin-HPMHooking_char.vcxproj b/vcproj-15/plugin-HPMHooking_char.vcxproj
index 9632998d4..454276905 100644
--- a/vcproj-15/plugin-HPMHooking_char.vcxproj
+++ b/vcproj-15/plugin-HPMHooking_char.vcxproj
@@ -15,7 +15,7 @@
<RootNamespace>plugin-HPMHooking_char</RootNamespace>
<Keyword>Win32Proj</Keyword>
<ProjectName>plugin-HPMHooking_char</ProjectName>
- <WindowsTargetPlatformVersion>10.0.15063.0</WindowsTargetPlatformVersion>
+ <WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
diff --git a/vcproj-15/plugin-HPMHooking_login.vcxproj b/vcproj-15/plugin-HPMHooking_login.vcxproj
index e496847c1..98079d2be 100644
--- a/vcproj-15/plugin-HPMHooking_login.vcxproj
+++ b/vcproj-15/plugin-HPMHooking_login.vcxproj
@@ -15,7 +15,7 @@
<RootNamespace>plugin-HPMHooking_login</RootNamespace>
<Keyword>Win32Proj</Keyword>
<ProjectName>plugin-HPMHooking_login</ProjectName>
- <WindowsTargetPlatformVersion>10.0.15063.0</WindowsTargetPlatformVersion>
+ <WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
diff --git a/vcproj-15/plugin-HPMHooking_map.vcxproj b/vcproj-15/plugin-HPMHooking_map.vcxproj
index 753f1cdbc..c63dcffa4 100644
--- a/vcproj-15/plugin-HPMHooking_map.vcxproj
+++ b/vcproj-15/plugin-HPMHooking_map.vcxproj
@@ -15,7 +15,7 @@
<RootNamespace>plugin-HPMHooking_map</RootNamespace>
<Keyword>Win32Proj</Keyword>
<ProjectName>plugin-HPMHooking_map</ProjectName>
- <WindowsTargetPlatformVersion>10.0.15063.0</WindowsTargetPlatformVersion>
+ <WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
diff --git a/vcproj-15/plugin-sample.vcxproj b/vcproj-15/plugin-sample.vcxproj
index 85ceb0e43..3a77c655a 100644
--- a/vcproj-15/plugin-sample.vcxproj
+++ b/vcproj-15/plugin-sample.vcxproj
@@ -15,7 +15,7 @@
<RootNamespace>plugin-sample</RootNamespace>
<Keyword>Win32Proj</Keyword>
<ProjectName>plugin-sample</ProjectName>
- <WindowsTargetPlatformVersion>10.0.15063.0</WindowsTargetPlatformVersion>
+ <WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">