diff options
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 @@ -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"> |